GNU/Linux >> Tutoriales Linux >  >> Debian

Instalación de Nginx con PHP (como PHP-FPM) y MariaDB (LEMP) en Debian 8

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/

Debian
  1. Instalación de Nginx con PHP y MariaDB (como reemplazo de MySQL) - LEMP - en Ubuntu 15.10 (Wiley Werewolf)

  2. Cómo instalar Phorum con Nginx en Debian 9

  3. Cómo instalar Etherpad con Nginx y SSL en Debian 11

  4. Cómo instalar y configurar PHP y Nginx (LEMP) en Debian 11

  5. Instale Pagekit en un VPS Debian 7 con Nginx, PHP-FPM y MariaDB

Cómo instalar Nginx, MariaDB, PHP (pila LEMP) en Debian 9

Instale Lighttpd con PHP FPM y MariaDB (LLMP) en Debian 9

Cómo instalar Nginx, MariaDB, PHP (LEMP Stack) en Debian 11

Instale Nginx con PHP y MySQL (LEMP) más SSL en Debian 10

Cómo instalar Nginx con PHP-FPM en Debian 10

Cómo instalar phpBB con LEMP (Nginx, MariaDB y PHP) en Debian 11 Bullseye