Este tutorial le mostrará la instalación del servidor web Nginx en Debian 8. 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 con compatibilidad con PHP (a través de PHP-FPM) y MariaDB como reemplazo directo de MySQL. Esta configuración a menudo se denomina LEMP =L inux + nginx (pronunciado "e motor x") + M ySQL + P HP) .
Nota Preliminar
En este tutorial, utilizo el nombre de host server1.example.com con la dirección IP 192.168.1.100. Estas configuraciones pueden diferir para usted, por lo que debe reemplazarlas cuando corresponda. Debe tener un servidor Debian 8, usaré el servidor mínimo de Debian como sistema base para este tutorial.
Actualizando el Sistema
Se recomienda actualizar las listas de paquetes e instalar las actualizaciones pendientes antes de comenzar con la configuración de Nginx. Ejecute los siguientes comandos para instalar cualquier actualización pendiente.
apt-get update
apt-get upgrade -y
Usaré el editor nano más adelante para editar los archivos de configuración. Nano se puede instalar con este comando:
apt-get -y install nano
Instalación de MariaDB (como reemplazo directo de MySQL)
Para instalar MariaDB, ejecutamos:
apt-get -y install mariadb-server mariadb-client
Se le pedirá que proporcione una contraseña para el usuario root de MariaDB; 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 root de MariaDB manualmente más adelante:
Nueva contraseña para el usuario "root" de MariaDB:<-- yourrootsqlpassword
Repita la contraseña para el usuario "root" de MariaDB:<-- yourrootsqlpassword
Instalando Nginx
Nginx está disponible como paquete para Debian Jessie que podemos instalar de la siguiente manera:
apt-get -y install nginx
Inicie Nginx después:
systemctl start nginx.service
Escriba la dirección IP o el nombre de host de su servidor web en un navegador (por ejemplo, http://192.168.1.100), y debería ver la siguiente página:
La raíz del documento nginx predeterminada en Debian 8 es /var/www/html.
Instalando PHP
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 características adicionales útiles para sitios de cualquier tamaño, especialmente los sitios más concurridos) que instalamos de la siguiente manera:
apt-get -y install php5-fpm
PHP-FPM es un proceso daemon (con el archivo de unidad systemd php5-fpm.service) que ejecuta un servidor FastCGI en el socket /var/run/php5-fpm.sock.
Configurar nginx
La configuración de nginx está en /etc/nginx/nginx.conf que abrimos ahora:
nano /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 establezca el keepalive_timeout en un valor razonable como 2 segundos:
[...] keepalive_timeout 2; [...]
Los hosts virtuales se definen en los contenedores del servidor {}. El host virtual predeterminado se define en el archivo /etc/nginx/sites-disponible/default. Modifiquémoslo de la siguiente manera:
nano /etc/nginx/sites-available/default
[...] server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]
nombre del servidor _; lo convierte en un vhost catchall predeterminado (por supuesto, también puede especificar un nombre de host aquí como www.example.com).
He agregado index.php a la línea de índice. raíz /var/www/html; significa que la raíz del documento es el directorio /var/www/html.
La parte importante para PHP es la ubicación ~ \.php$ {} estrofa. Descoméntelo como se muestra arriba para habilitarlo.
Ahora guarde el archivo y vuelva a cargar Nginx:
systemctl reload nginx.service
A continuación, abra /etc/php5/fpm/php.ini...
nano /etc/php5/fpm/php.ini
... y establezca cgi.fix_pathinfo=0:
[...] ; 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 [...]
Recargar PHP-FPM:
systemctl reload php5-fpm.service
Ahora cree el siguiente archivo PHP en la raíz del documento /var/www/html/:
nano /var/www/html/info.php
<?php phpinfo(); ?>
Ahora llamamos a ese archivo en un navegador (por ejemplo, http://192.168.1.100/info.php):
Como puede ver, PHP5 funciona y funciona a través de FPM/FastCGI, como se muestra en la línea API del servidor. Si se desplaza hacia abajo, verá todos los módulos que ya están habilitados en PHP5. MySQL no aparece en la lista, lo que significa que todavía no tenemos compatibilidad con MariaDB/MySQL en PHP.
Obtención de compatibilidad con MySQL/MariaDB en PHP
Para obtener soporte de MySQL en PHP, podemos instalar el paquete php5-mysqlnd. Es una buena idea instalar algunos otros módulos de PHP, ya que podría necesitarlos para sus aplicaciones. Puede buscar módulos PHP disponibles como este:
apt-cache search php5
Elige los que necesites e instálalos así:
apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
APCu es un caché de código de operación de PHP gratuito y abierto para almacenar en caché y optimizar el código intermedio de PHP que amplía el código de opción de PHP. Reemplaza el caché de APC. y es similar a otros cachés de código de operación de PHP, como eAccelerator y Xcache. Se recomienda encarecidamente tener uno de estos instalados para acelerar su página PHP.
APCu se puede instalar de la siguiente manera:
apt-get install php5-apcu
Ahora recarga PHP-FPM:
systemctl reload php5-fpm.service
Ahora vuelva a cargar http://192.168.1.100/info.php en su navegador y desplácese hacia abajo hasta la sección de módulos nuevamente. Ahora debería encontrar muchos módulos nuevos allí, incluido el módulo MySQL:
Hacer que PHP-FPM use una conexión TCP (opcional)
De forma predeterminada, PHP-FPM escucha en el socket /var/run/php5-fpm.sock. También es posible hacer que PHP-FPM utilice una conexión TCP. Para ello, abra /etc/php5/fpm/pool.d/www.conf...
nano /etc/php5/fpm/pool.d/www.conf
... y haz que la línea de escucha tenga el siguiente aspecto:
[...] ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 [...]
Esto hará que PHP-FPM escuche en el puerto 9000 en la IP 127.0.0.1 (localhost). Asegúrese de utilizar un puerto que no esté en uso en su sistema.
Luego recarga PHP-FPM:
systemctl reload php5-fpm.service
A continuación, revise su configuración de Nginx y todos sus servidores virtuales y cambie la línea fastcgi_pass unix:/var/run/php5-fpm.sock; a fastcgi_pass 127.0.0.1:9000;, p. así:
nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
} [...]
Finalmente, recarga Nginx:
systemctl reload nginx.service
Imagen de máquina virtual
Este tutorial está disponible como máquina virtual lista para usar en formato OVA / OVF para suscriptores de Howtoforge. El formato VM es compatible con VMWare y Virtualbox y probablemente con otras herramientas que pueden importar este formato. Puede encontrar el enlace de descarga en el menú derecho en la parte superior. Haga clic en el nombre del archivo para iniciar la descarga.
Los detalles de inicio de sesión de la máquina virtual son:
Inicio de sesión SSH
Nombre de usuario:root
Contraseña:howtoforge
Inicio de sesión en MariaDB
Nombre de usuario:root
Contraseña:howtoforge
Cambie las contraseñas después del primer arranque.
La VM está configurada para la IP estática 192.168.1.100, la IP se puede cambiar en el archivo /etc/network/interfaces.
Enlaces
- nginx:http://nginx.net/
- Wiki de nginx:http://wiki.codemongers.com/Main
- PHP:http://www.php.net/
- PHP-FPM:http://php-fpm.org/
- MariaDB: https://mariadb.org/
- Debian:http://www.debian.org/