Article

  • 2 years

    1 year

    YetiShare / Core

    8037

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

On Debian and Ubuntu systems use:

apt-get install libapache2-mod-xsendfile 

 

 

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>