Difference between revisions of "MythWeb on Nginx"
Line 23: | Line 23: | ||
server. | server. | ||
− | + | == PHP Backend == | |
− | + | === Fast-CGI for PHP === | |
Unlike Apache, Nginx doesn't have PHP support built in, and it must be configured for it. | Unlike Apache, Nginx doesn't have PHP support built in, and it must be configured for it. | ||
Line 31: | Line 31: | ||
fpm then these instructions should also work for fastcgi. | fpm then these instructions should also work for fastcgi. | ||
− | + | === PHP FPM === | |
Ubuntu/Debian have php fpm packages available by default. | Ubuntu/Debian have php fpm packages available by default. | ||
Line 40: | Line 40: | ||
has it listening on 127.0.0.1:9000 | has it listening on 127.0.0.1:9000 | ||
− | + | == Perl Backend == | |
{{incomplete}} | {{incomplete}} | ||
− | + | = Configuration = | |
Unlike Apache, Nginx does not support .htaccess files, so all configuration must go in the nginx configuration. Of course, for convenience, nginx is defaultly set up to include all files on a conf.d directory, so you can separate out pieces for portability. | Unlike Apache, Nginx does not support .htaccess files, so all configuration must go in the nginx configuration. Of course, for convenience, nginx is defaultly set up to include all files on a conf.d directory, so you can separate out pieces for portability. | ||
− | + | == /etc/nginx/conf.d/mythweb.include == | |
I'd recommend creating a file /etc/nginx/conf.d/mythweb.include with the following contents | I'd recommend creating a file /etc/nginx/conf.d/mythweb.include with the following contents | ||
Line 85: | Line 85: | ||
Entirely up to you. | Entirely up to you. | ||
− | + | == /etc/nginx/mythweb.passwd == | |
You will also need to create /etc/nginx/mythweb.passwd. This is a standard apache style htpasswd | You will also need to create /etc/nginx/mythweb.passwd. This is a standard apache style htpasswd | ||
file and should contain the username/passwords for authenticating logons to your mythweb install. | file and should contain the username/passwords for authenticating logons to your mythweb install. | ||
Line 111: | Line 111: | ||
</code> | </code> | ||
− | + | = See Also = | |
* [[MythWeb on Lighttpd]] | * [[MythWeb on Lighttpd]] | ||
* [[MythWeb]] | * [[MythWeb]] | ||
[[Category:HOWTO]] [[Category:MythWeb]] | [[Category:HOWTO]] [[Category:MythWeb]] |
Revision as of 00:36, 8 November 2011
Incomplete, needs to be expanded. Please help to fill the gaps or discuss the issue on the talk page
- work in progress - stuarta
MythWeb provides a web interface for scheduling and managing recordings from a web browser located on any machine, with new features being added such as remote control.
An Apache server can use a lot of memory, especially for a system where the number of users of the server can be measured on one hand...essentially private. Nginx(pronounced N-Gen-X), is a lightweight, high-performance Web server/reverse proxy.
Contents
Installation
Your distribution should have a package for nginx. It is probably woefully out of date. Do yourself a favour and go and get the packages provided at nginx.org [[1]]
The default HTML directory for the nginx packages is /usr/share/nginx/html, whereas a package of MythWeb goes to the Apache directory.../var/www/html/. You can create a symbolic link, or just have nginx root to the same directory as Apache...a good move if you aren't sure you are going to commit to an alternate web server.
So, we'll assume the root is /var/www/html and that the mythweb directory is right off the root.
When trying to understand how nginx does things, it's important to remember that it is
a proxy first and a web server second. It just happens to be a blindingly fast web server :)
It is for this reason that you have to install a php backend server as well as a perl backend server.
PHP Backend
Fast-CGI for PHP
Unlike Apache, Nginx doesn't have PHP support built in, and it must be configured for it. The old way was to use fast-cgi. If you are using nginx, you are trying to get performance and scalability. Forget FastCGI and install php-fpm. If you really have trouble finding php fpm then these instructions should also work for fastcgi.
PHP FPM
Ubuntu/Debian have php fpm packages available by default.
apt-get install php5-fpm
This installs a php fpm instance and the default configuration out of the box has it listening on 127.0.0.1:9000
Perl Backend
Incomplete, needs to be expanded. Please help to fill the gaps or discuss the issue on the talk page
Configuration
Unlike Apache, Nginx does not support .htaccess files, so all configuration must go in the nginx configuration. Of course, for convenience, nginx is defaultly set up to include all files on a conf.d directory, so you can separate out pieces for portability.
/etc/nginx/conf.d/mythweb.include
I'd recommend creating a file /etc/nginx/conf.d/mythweb.include with the following contents
location @handler { rewrite /mythweb/(.+\.(php|pl))/.* /mythweb/$1 last; rewrite /mythweb/(pl(/.*)?)$ /mythweb/mythweb.pl/$1 last; rewrite /mythweb/(.+)$ /mythweb/mythweb.php/$1 last; rewrite /mythweb/(.*)$ /mythweb/mythweb.php last; } location /mythweb/ { auth_basic "MythWeb"; auth_basic_user_file mythweb.passwd; index /mythweb/mythweb.php; try_files $uri @handler; } location ~ /mythweb/.+\.php { include fastcgi_params; fastcgi_index mythweb.php; fastcgi_split_path_info ^(.+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param db_server localhost; fastcgi_param db_name mythconverg; fastcgi_param db_login mythtv; fastcgi_param db_password mythtv; fastcgi_param hostname mymythbox; fastcgi_pass 127.0.0.1:9000; }
When using php-fpm you can also the php fpm instance to hold the configuration for the database and backend (the fastcgi_param's db_server, db_name, db_login, db_password). Entirely up to you.
/etc/nginx/mythweb.passwd
You will also need to create /etc/nginx/mythweb.passwd. This is a standard apache style htpasswd file and should contain the username/passwords for authenticating logons to your mythweb install.
Rewrite Rules
location /mythweb/ { root /var/www/html; # The two Auth Lines assume that you want to password protect - which is recommended auth_basic "Restricted"; # Supports a standard htpasswd file, which defaults to the same directory as nginx.conf auth_basic_user_file htpasswd; if (!-e $request_filename) { rewrite ^/mythweb/(pl(/.*)?)$ /mythweb/mythweb.pl?PATH_INFO=/$1 last; rewrite ^/mythweb/(.+)$ /mythweb/mythweb.php?PATH_INFO=/$1 last; } if (!-f $request_filename) { rewrite ^/mythweb/(.*)$ /mythweb/mythweb.php last; } }