GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Instalación y configuración de Php y Nginx en Ubuntu 20.04

PHP es un lenguaje de secuencias de comandos de propósito general. Es sobre todo popular para el desarrollo web. Se puede utilizar para desarrollar sitios web dinámicos e interactivos. Fue uno de los primeros lenguajes del lado del servidor que se pudo incrustar en HTML, lo que facilitó agregar funcionalidad a las páginas web sin necesidad de llamar a archivos externos para obtener datos. PHP es uno de los lenguajes de programación más fáciles de aprender.

Está integrado con varias bases de datos populares, incluidas MySQL, PostgreSQL, Oracle, Sybase, Informix y Microsoft SQL Server. Muchos CMS y frameworks populares como WordPress, Magento y Laravel están escritos en PHP.

Al momento de escribir este artículo, los repositorios predeterminados de Ubuntu 20.04 incluyen la versión PHP 7.4.

Requisitos

Para seguir esta guía, asegúrese de tener lo siguiente:

  1. Servidor Ubuntu 20.04 actualizado que está conectado a Internet
  2. Acceso raíz al servidor o usuario con acceso sudo
  3. Debe sentirse cómodo con el uso de la terminal de Linux para ejecutar comandos.

Pasos para instalar y configurar PHP en Ubuntu 20.04

  1. Asegúrese de que el servidor esté actualizado
  2. Instalar php 7.4 en el servidor
  3. Instalación de Nginx
  4. Configurar Nginx para servir archivo php

1. Asegúrese de que el servidor esté actualizado

Antes de continuar, asegurémonos de que nuestro servidor esté actualizado. Use estos comandos para 1. Actualizar los repositorios del servidor, 2. Actualizar los paquetes del servidor a las últimas versiones:

# Update repos
sudo apt update

# Upgrade packages
sudo apt -y upgrade

2. Instale php 7.4 en el servidor

Dado que los repositorios predeterminados contienen la versión 7.4 de php, vamos a instalarlo con este comando:

sudo apt install php -y

Confirme la versión instalada con el comando php -v :

~$ php -v
PHP 7.4.3 (cli) (built: Aug 13 2021 05:39:12) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

En esta configuración, tenemos la intención de servir archivos php con Nginx. Nginx no tiene soporte integrado para procesar archivos PHP. Usaremos PHP-FPM ("administrador de procesos fastCGI") para manejar los archivos PHP.

Nginx no funcionará si Apache está instalado y en ejecución. Como usaremos Nginx, usemos este comando para eliminar apache si está instalado en nuestro sistema:

$ sudo apt remove apache2 -y

Ahora instalemos php-fpm con este comando:

sudo apt install php-fpm -y

Una vez completada la instalación, el servicio FPM se iniciará automáticamente. El servicio se agrega a systemd como php7.4-fpm . Para comprobar el estado del servicio, ejecute:

$ sudo systemctl status php7.4-fpm
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-09-28 16:18:41 UTC; 3min 18s ago
       Docs: man:php-fpm7.4(8)
   Main PID: 56092 (php-fpm7.4)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 4710)
     Memory: 7.1M
     CGroup: /system.slice/php7.4-fpm.service
             ├─56092 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
             ├─56113 php-fpm: pool www
             └─56114 php-fpm: pool www

Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Sep 28 16:18:41 ip-172-26-11-229 systemd[1]: Started The PHP 7.4 FastCGI Process Manager.

Debería ver una salida como la de arriba.

3. Instalando Nginx

Ahora que PHP y php-fpm están instalados en el sistema, necesitamos instalar nginx. Nginx nos permitirá configurar un host virtual que podemos usar para atender el tráfico de un dominio.

Instale nginx usando este comando:

sudo apt install nginx -y

Una vez finalizada la instalación, Nginx se iniciará de forma predeterminada. Confirme que funciona como se esperaba comprobando su estado. Debería ver un resultado como este:

$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-09-28 16:28:30 UTC; 1min 2s ago
       Docs: man:nginx(8)
   Main PID: 56990 (nginx)
      Tasks: 3 (limit: 4710)
     Memory: 3.7M
     CGroup: /system.slice/nginx.service
             ├─56990 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─56991 nginx: worker process
             └─56992 nginx: worker process

Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Starting A high performance web server and a reverse pr>
Sep 28 16:28:30 ip-172-26-11-229 systemd[1]: Started A high performance web server and a reverse pro>

Para confirmar que Nginx realmente se está ejecutando y es accesible, use este comando:

curl http://server_ip/

Donde server_ip es la ip de tu servidor. Si por alguna razón no conoce la ip pública de su servidor, use esto para verificar:

curl -4 icanhazip.com

Debería ver la página predeterminada de Nginx.

4. Configurar Nginx para servir archivo php

Ahora que tenemos Nginx configurado y ejecutándose en nuestro servidor, hagamos que sirva archivos php. En este ejemplo, configuraremos Nginx para servir la página de información de php.

Para lograr esto, debemos configurar un host virtual en Nginx que atienda el tráfico para un dominio específico (usaremos example.citizix.com ). Para que esto funcione, debe actualizar los registros DNS para ese dominio en su host dns para tener A los registros apuntan a ese dominio o subdominio. Consulte la documentación de su proveedor de DNS para conocer los detalles de cómo hacerlo.

Confirme que el dominio puede resolverse correctamente en el servidor usando el comando dig:

❯ dig -t A example.citizix.com

; <<>> DiG 9.10.6 <<>> -t A example.citizix.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10212
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.citizix.com.       IN  A

;; ANSWER SECTION:
example.citizix.com.    300 IN  A   172.67.197.11

;; Query time: 828 msec
;; SERVER: 192.168.157.227#53(192.168.157.227)
;; WHEN: Tue Sep 28 20:42:05 EAT 2021
;; MSG SIZE  rcvd: 80

Ahora debemos seguir estos pasos para que nuestro sencillo script funcione:

  1. Cree el directorio para almacenar nuestro contenido estático (usaremos /var/www/example.citizix.com )
    sudo mkdir -p /var/www/example.citizix.com
  2. Asegúrese de que el usuario de Nginx pueda acceder al directorio creado
    sudo chown -R www-data:www-data /var/www/example.citizix.com
    sudo chmod -R 755 /var/www/example.citizix.com
  3. Agregue un archivo de índice /var/www/example.citizix.com/index.php con contenido para mostrar información de php en el directorio (/var/www/example.citizix.com )
    Editar el archivo:

    sudo vim /var/www/example.citizix.com/index.php

    Añade este contenido:

    <?php
    phpinfo()
    ?>

    Guarde y cierre el archivo.

  4. Cree la configuración de nginx en el directorio predeterminado de nginx /etc/nginx/conf.d . 1. Crearemos el archivo /etc/nginx/conf.d/example.citizix.com.conf con el contenido requerido.
    sudo vim /etc/nginx/conf.d/example.citizix.com.conf

Añade este contenido:

server {
    listen 80;
    server_name example.citizix.com;

    root /var/www/example.citizix.com;
    index index.php;

    location ~ \.php$ {
        fastcgi_intercept_errors on;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    }
}

Confirme que la configuración de nginx es correcta con este comando:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ahora necesita reiniciar nginx y php-fpm usando estos comandos:

sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm

Confirme que aparecieron los servicios:

sudo systemctl status nginx
sudo systemctl status php7.4-fpm

¡Debería ver que los servicios se reiniciaron correctamente!

Si todo va bien, debería ver la página de información de php como se muestra en la siguiente captura de pantalla:

¡Eso es todo! Hasta este punto hemos podido instalar php 7.4 en Ubuntu 20.04 y servir un archivo simple con Nginx.


Ubuntu
  1. Configuración básica de PHP 7 y Nginx en Ubuntu 16.04 Linux

  2. Configuración de NTP en Centos y Ubuntu

  3. Instalar y configurar PHP OPcache en Ubuntu 20.04

  4. Instalación de LLMP (Lighttpd, PHP y MySQL) en Ubuntu 14.10

  5. Cómo instalar y configurar PHP y Nginx (LEMP) en Ubuntu 20.04

Instalación de Nginx con PHP5 (y PHP-FPM) y compatibilidad con MySQL (LEMP) en Ubuntu 13.04

Instalación de Apache2 con compatibilidad con PHP5 y MySQL en Ubuntu 13.04 (LAMP)

Instalación de Nginx con compatibilidad con PHP5 y MySQL en Ubuntu 8.10

Instalación de Lighttpd con PHP (modo PHP-FPM) y MySQL o MariaDB en Ubuntu 15.04

Instalación de Lighttpd con PHP (modo PHP-FPM) y MySQL o MariaDB en Ubuntu 15.10

Instalación y configuración de Plex Media Server en Ubuntu