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>