Article

  • 3 years

    1 month

    YetiShare / Core

    10687

How to enable XSendFile for Apache

It is possible to let Apache handle static file serving via mod_xsendfile. This dramatically increases performance for 'local' and 'direct' file storage, shifting the download process away from PHP and onto Apache.

Installation (non-cPanel)

On Debian and Ubuntu systems use:

apt-get install libapache2-mod-xsendfile 

Installation in cPanel:

Via SSH:

yum install ea4-experimental
In WHM, using EasyApache 4 choose the following modules:

- XSendFile
- Env

Provision via WHM to enable XSendFile.

- Appended /etc/apache2/conf.d/includes/post_virtualhost_global.conf with
XSendFilePath /home/[path]/public_html/
- Restart Apache



Apache Configuration

Configuration of mod_xsendfile for Apache below. As of YetiShare v4.0 this is included in the .htaccess file. If it's not there add it at the top.

<IfModule mod_xsendfile.c>
  <Files *.php>
    XSendFile On
    SetEnv MOD_X_SENDFILE_ENABLED 1
  </Files>
</IfModule>
  • XSendFile: enables web server handling of X-Sendfile headers (and therefore file serving) for the specified Directory

 

In your global Apache config (apache2.conf) for the site add this: (replace with your path to YetiShare, restart Apache after)

XSendFilePath /home/path/to/yetishare/install/public_html/

You can find the path to your Apache config file by calling this via SSH:

/usr/sbin/apache2 -V

Note this line in the output:

Server compiled with....<br>-D SERVER_CONFIG_FILE="/etc/apache2/apache2.conf"

Enable on YetiShare

Login to your admin area, go to 'file servers' navigation, click 'edit' on the relevant file server. Scroll to the 'Improved Downloads' option and select 'XSendFile'.


Possible Issues

When adding the XSendFilePath to apache2.conf you may get a failure on Apache restart like:

Invalid command 'XSendFilePath', perhaps misspelled or defined by a module not included in the server configuration

It is likely that you are using an earlier version of mod_xsendfile which doesn't yet support XSendFilePath. Instead, remove that line from apache2.conf. Add the following to your root .htaccess file:

<IfModule mod_xsendfile.c>
<Files *.php>
XSendFile On
XSendFileAllowAbove On
SetEnv MOD_X_SENDFILE_ENABLED 1
</Files>
</IfModule>