PHP es un lenguaje de secuencias de comandos de propósito general orientado al desarrollo web. Es uno de los lenguajes de programación populares para la web. Las herramientas populares como WordPress están codificadas usando php. Las grandes empresas como Facebook también usan mucho php.
Nginx es un servidor web que también se puede utilizar como proxy inverso, equilibrador de carga, proxy de correo y caché HTTP. Comenzó como un servidor web diseñado para el máximo rendimiento y estabilidad. Nginx ha crecido en popularidad desde su lanzamiento debido a su uso ligero de recursos y su capacidad de escalar fácilmente en un hardware mínimo. Nginx se destaca en la entrega rápida de contenido estático y está diseñado para pasar solicitudes dinámicas a otro software que se adapta mejor a esos fines.
Contenido relacionado
- Cómo instalar y configurar PHP y Apache (pila LAMP) en OpenSUSE Leap 15.3
- Cómo instalar la pila Apache PHP 7.4 (LAMP) en Rocky Linux/Centos 8
- Cómo instalar y configurar PHP y Apache (pila LAMP) en Ubuntu 20.04
- Cómo instalar y configurar PHP y Nginx (LEMP) en Ubuntu 20.04
- Cómo instalar y configurar PHP y Apache (pila LAMP) en Debian 11
- Cómo instalar y configurar PHP y Nginx (LEMP) en Debian 11
- Cómo instalar y configurar PHP y Nginx (LEMP) en Rocky Linux/Alma Linux 8
Tabla de contenido
- Asegurarse de que el servidor esté actualizado
- Instalación de PHP en OpenSUSE Leap 15.3
- Instalación de Nginx en OpenSUSE Leap 15.3
- Instalación de php-fpm en OpenSUSE Leap 15.3
- Creación de un sitio simple y configuración de host virtual
- Probar la configuración
1. Asegurarse de que el servidor esté actualizado
Antes de continuar, siempre es una buena práctica asegurarse de que el servidor esté actualizado. Usa estos comandos para lograr esto
sudo zypper refresh
sudo zypper update -y
2. Instalación de PHP en OpenSUSE Leap 15.3
PHP está disponible en los repositorios predeterminados de OpenSUSE. La última versión de PHP al escribir este blog es PHP 7.4.
Instale PHP y algunos paquetes comunes usando este comando:
sudo zypper install -y \
php \
php-cli
Compruebe la versión instalada de PHP
~> zypper info php7
Repository 'Update repository with updates from SUSE Linux Enterprise 15' is out-of-date. You can run 'zypper refresh' as root to update it.
Loading repository data...
Reading installed packages...
Information for package php7:
-----------------------------
Repository : Update repository with updates from SUSE Linux Enterprise 15
Name : php7
Version : 7.4.6-3.29.1
Arch : x86_64
Vendor : SUSE LLC <https://www.suse.com/>
Installed Size : 10.3 MiB
Installed : Yes
Status : up-to-date
Source package : php7-7.4.6-3.29.1.src
Summary : Interpreter for the PHP scripting language version 7
Description :
PHP is a server-side HTML embedded scripting language designed
primarily for web development but also used as a general-purpose
programming language.
This package contains the standard implementation of PHP, namely Zend
PHP. Included are the PHP command-line binary and the configuration
file (php.ini). This package must be installed in order to use PHP.
Additionally, extension modules and server modules (e.g. for Apache)
may be installed.
Additional documentation is available in package php-doc.
Verifique la versión de php instalada usando este comando:
~> php -v
PHP 7.4.6 (cli) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
3. Instalación de Nginx en OpenSUSE Leap 15.3
Usaremos Nginx para servir el contenido de PHP. Nginx, como servidor web estable de alto rendimiento y con un consumo de recursos muy bajo, es la pareja perfecta para PHP-FPM. Nginx tiene una arquitectura asíncrona que es mucho más escalable, basada en eventos.
Nginx está disponible en los repositorios predeterminados de UpenSUSE. Instálalo usando este comando:
sudo zypper install -y nginx
Confirme el nginx instalado
~> zypper info nginx
Loading repository data...
Reading installed packages...
Information for package nginx:
------------------------------
Repository : Main Repository
Name : nginx
Version : 1.19.8-3.6.1
Arch : x86_64
Vendor : SUSE LLC <https://www.suse.com/>
Installed Size : 2.2 MiB
Installed : Yes
Status : up-to-date
Source package : nginx-1.19.8-3.6.1.src
Summary : A HTTP server and IMAP/POP3 proxy server
Description :
nginx [engine x] is a HTTP server and IMAP/POP3 proxy server written by Igor Sysoev.
It has been running on many heavily loaded Russian sites for more than two years.
El servicio Nginx instalado no se inicia de forma predeterminada. Para iniciar el servicio, use este comando:
sudo systemctl start nginx
Confirme que el servicio está activo y funcionando con este comando:
~> sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2021-12-20 18:56:15 UTC; 36s ago
Process: 31740 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Main PID: 31741 (nginx)
Tasks: 2 (limit: 4587)
CGroup: /system.slice/nginx.service
├─31741 nginx: master process /usr/sbin/nginx -g daemon off;
└─31742 nginx: worker process
Dec 20 18:56:15 ip-10-2-40-44 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Dec 20 18:56:15 ip-10-2-40-44 nginx[31740]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Dec 20 18:56:15 ip-10-2-40-44 nginx[31740]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Dec 20 18:56:15 ip-10-2-40-44 systemd[1]: Started The nginx HTTP and reverse proxy server.
Para habilitar el servicio en el arranque, use este comando:
sudo systemctl enable nginx
4. Instalación de PHP FPM en OpenSUSE Leap 15.3
PHP-FPM (un acrónimo de FastCGI Process Manager) es una implementación alternativa de FastCGI de PHP (procesador de hipertexto) muy popular. PHP-FPM es la implementación alternativa más popular de PHP FastCGI. Tiene características adicionales que son realmente útiles para sitios web de alto tráfico. Al usar Nginx con PHP-FPM se mejora el rendimiento a nivel de consumo de memoria.
PHP se ejecuta como un servicio separado cuando se usa PHP-FPM. Al usar esta versión de PHP como intérprete de lenguaje, las solicitudes se procesan a través de un socket TCP/IP; para que el servidor web Nginx solo maneje las solicitudes HTTP y PHP-FPM interprete el código PHP. El hecho de tener dos servicios separados es clave para aumentar la eficiencia.
Instale php-fpm usando este comando:
sudo zypper install -y php-fpm
Copie los archivos de configuración predeterminados
sudo cp /etc/php7/fpm/php-fpm.conf.default /etc/php7/fpm/php-fpm.conf
sudo cp /etc/php7/fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm.d/www.conf
El servicio no se iniciará de forma predeterminada. Inicie php-fpm usando este comando:
sudo systemctl start php-fpm
Verifique su estado usando este comando:
~> sudo systemctl status php-fpm
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2021-12-20 08:56:16 UTC; 21s ago
Main PID: 24608 (php-fpm)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4587)
CGroup: /system.slice/php-fpm.service
├─24608 php-fpm: master process (/etc/php7/fpm/php-fpm.conf)
├─24609 php-fpm: pool www
└─24610 php-fpm: pool www
Dec 20 08:56:16 ip-10-2-40-44 systemd[1]: Starting The PHP FastCGI Process Manager...
Dec 20 08:56:16 ip-10-2-40-44 systemd[1]: Started The PHP FastCGI Process Manager.
Para habilitar php-fpm en el arranque, use este comando:
sudo systemctl enable php-fpm
5. Creando un sitio simple y configurando host virtual
Nginx le permite atender múltiples sitios utilizando hosts virtuales. El concepto de hosts virtuales permite más de un sitio web en un sistema o servidor web. Los servidores se diferencian por su nombre de host. Los visitantes del sitio web se enrutan por nombre de host o dirección IP al host virtual correcto. El alojamiento virtual permite que las empresas que comparten un servidor tengan sus propios nombres de dominio.
En este ejemplo, usaremos el dominio site1.citizix.com para el host virtual, pero podrá usar el dominio que prefiera. Tenga en cuenta que el DNS del dominio que se utilizará ya debe estar configurado para apuntar a la dirección IP del servidor. Confirme eso con:
dig -t A site1.citizix.com
Crear un directorio y agregar contenido de muestra
La página predeterminada de nginx está configurada como un host virtual predeterminado que sirve contenido desde /var/www/html
. Es una buena práctica crear el directorio de su sitio en /var/www
directorio ya que es una mejor práctica servir desde allí.
Vamos a crear un directorio para nuestro sitio con el siguiente comando:
sudo mkdir /var/www/site1.citizix.com
Vamos a crear un simple index.php
página para servir desde nuestro sitio. Necesitará vim instalado para que esto funcione, si no, use este comando:
sudo zypper install -y vim
Edite el archivo:
sudo vim /var/www/site1.citizix.com/index.php
Agregar contenido al archivo:
<?php phpinfo(); ?>
Creación de host virtual (bloques de servidor)
Se pueden usar bloques de servidor Nginx para encapsular detalles de configuración y alojar más de un dominio en un solo servidor. Vamos a crear un host virtual para nuestro sitio (site1.citizix.com).
Las configuraciones de hosts virtuales de Nginx se almacenan en el directorio /etc/nginx/conf.d/
. Vamos a crear una configuración para nuestro sitio:
sudo vim /etc/nginx/conf.d/site1.citizix.com.conf
Agrega el siguiente contenido
server {
listen 80;
server_tokens off;
client_max_body_size 100M;
server_name site1.citizix.com;
access_log /var/log/nginx/site1.citizix.com.log;
error_log /var/log/nginx/site1.citizix.com.log;
root /var/www/site1.citizix.com;
index index.php;
if ($host !~* ^(site1.citizix.com)$) {
return 444;
}
location / {
proxy_read_timeout 600;
proxy_connect_timeout 600;
proxy_send_timeout 600;
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Reiniciemos el servicio nginx y php-fpm para que se aplique la configuración
sudo systemctl restart php-fpm
sudo systemctl restart nginx
6. Probando la configuración
Para probar la configuración, abra su navegador y cargue el dominio que configuró. En mi caso es http://site1.citizix.com. Deberías ver la página de información de php.
Si aún no ha configurado su configuración de DNS o simplemente no desea que el sitio se active todavía, puede modificar el archivo de hosts de su computadora. Para hacer esto, use el siguiente comando en la CLI de su computadora local
sudo vim /etc/hosts
Luego, agregue la dirección IP de su servidor real seguida del nombre de dominio que está configurando, por ejemplo:
# Virtual Hosts Local Test
10.2.11.11 site1.citizix.com
Ahora debería poder guardar el archivo y acceder a él desde un navegador web.
Conclusión
Hosts virtuales Nginx o server
Los bloques son una excelente manera de agregar sitios web adicionales al mismo servidor de origen. La cantidad de posibilidades de configuración para un sitio determinado es casi infinita cuando comienza a modificar el archivo de configuración del host virtual para adaptarlo a las necesidades específicas de su sitio.
En esta guía, aprendimos cómo configurar un host virtual para servir contenido php en OpenSUSE Leap 15.3.