Nginx (pronunciado "motor x") es un servidor HTTP gratuito, de código abierto y de alto rendimiento. Nginx es conocido por su estabilidad, rico conjunto de funciones, configuración simple y bajo consumo de recursos. Este tutorial muestra cómo puede instalar Nginx en un servidor Ubuntu 14.04 con soporte para PHP5 (a través de PHP-FPM) y soporte para MySQL (LEMP =L inux + nginx (pronunciado "e motor x") + M ySQL + P HP) .
¡No emito ninguna garantía de que esto funcione para usted!
1 nota preliminar
En este tutorial utilizo el nombre de host server1.example.com con la dirección IP 192.168.0.100. Estas configuraciones pueden diferir para usted, por lo que debe reemplazarlas cuando corresponda.
Estoy ejecutando todos los pasos de este tutorial con privilegios de root, así que asegúrese de haber iniciado sesión como root:
sudo su
2 Instalación de MySQL 5
Para instalar MySQL, ejecutamos
apt-get install mysql-server mysql-client
Se le pedirá que proporcione una contraseña para el usuario root de MySQL; esta contraseña es válida para el usuario [email protected] así como para [email protected], por lo que no tenemos que especificar una contraseña de root de MySQL manualmente más adelante:
Nueva contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
Repetir la contraseña para el usuario "root" de MySQL:<-- yourrootsqlpassword
3 Instalación de Nginx
Nginx está disponible como un paquete para Ubuntu 14.04 que podemos instalar. Como Apache2 está instalado de forma predeterminada, primero lo eliminaremos y luego instalaremos nginx:
servicio apache2 stop
update-rc.d -f apache2 remove
apt-get remove apache2
apt-get install nginx
Inicie nginx después:
inicio del servicio nginx
Escriba la dirección IP o el nombre de host de su servidor web en un navegador (por ejemplo, http://192.168.0.100), y debería ver la siguiente página:
La raíz del documento nginx predeterminada en Ubuntu 14.04 es /usr/share/nginx/html.
4 Instalación de PHP5
Podemos hacer que PHP5 funcione en nginx a través de PHP-FPM (PHP-FPM (FastCGI Process Manager) es una implementación alternativa de PHP FastCGI con algunas funciones adicionales útiles para sitios de cualquier tamaño, especialmente los sitios más concurridos) que instalamos de la siguiente manera:
apt-get install php5-fpm
PHP-FPM es un proceso daemon (con el script de inicio php5-fpm) que ejecuta un servidor FastCGI en el socket /var/run/php5-fpm.sock.
5 Configuración de nginx
La configuración de nginx está en /etc/nginx/nginx.conf que abrimos ahora:
vi /etc/nginx/nginx.conf
La configuración es fácil de entender (puede obtener más información aquí:http://wiki.nginx.org/NginxFullExample y aquí:http://wiki.nginx.org/NginxFullExample2)
Primero (esto es opcional) ajuste la cantidad de procesos de trabajo y establezca el tiempo de espera de keepalive_time en un valor razonable:
[...] worker_processes 4; [...] keepalive_timeout 2; [...] |
[...] server { listen 80; listen [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name _; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ /index.html; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; autoindex on; allow 127.0.0.1; allow ::1; deny all; } # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } } [...] |
[...] ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |
<?php phpinfo(); ?> |
[...] ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 [...] |