Cómo instalar Nginx 1.15, MariaDB 10 y PHP 7 en CentOS 7


En este artículo explicaremos cómo instalar una pila LEMP (Linux, Nginx, MariaDB, PHP) junto con PHP-FPM en servidores RHEL/CentOS 7/6 y Fedora 26-29 usando el administrador de paquetes dnf.

Durante el proceso instalaremos y habilitaremos los repositorios Epel, Remi, Nginx y MariaDB para poder instalar las últimas versiones de estos paquetes.

Paso 1: Instalación de EPEL y Remi Repository

EPEL (Paquetes adicionales para Enterprise Linux) es un repositorio basado en la comunidad que ofrece paquetes de software complementarios para distribuciones de Linux basadas en RHEL.

Remi es un repositorio donde puede encontrar las últimas versiones de la pila PHP (con todas las funciones) para instalar en las distribuciones de Fedora y Enterprise Linux.

# yum update && yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

------ For RHEL 7 Only ------
# subscription-manager repos --enable=rhel-7-server-optional-rpms
# yum update && yum install epel-release
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

------ For RHEL 6 Only ------
# subscription-manager repos --enable=rhel-6-server-optional-rpms
# rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-29.rpm  [On Fedora 29]
# rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-28.rpm  [On Fedora 28]
# rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-27.rpm  [On Fedora 27]
# rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-26.rpm  [On Fedora 26]
# rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-25.rpm  [On Fedora 25]
# rpm -Uvh http://rpms.remirepo.net/fedora/remi-release-24.rpm  [On Fedora 24]

Paso 2: Instalación de repositorios Nginx y MariaDB

El repositorio de Nginx solo se necesita en distribuciones RHEL y CentOS. Cree un archivo llamado /etc/yum.repos.d/nginx.repo y agréguele las siguientes líneas.

[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ 
gpgcheck=0 
enabled=1 
[nginx] 
name=nginx repo 
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ 
gpgcheck=0 
enabled=1 

Para habilitar el repositorio MariaDB, cree un archivo llamado /etc/yum.repos.d/mariadb.repo con el siguiente contenido:

[mariadb] 
name = MariaDB 
baseurl = http://yum.mariadb.org/10.1/centos7-amd64 
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB 
gpgcheck=1 

Paso 4: Instalar Ngnix y MariaDB

Nginx (Engine X) es un servidor web de código abierto, robusto, ligero y de alto rendimiento, servidor proxy inverso y también servidor proxy de correo para protocolos HTTP, SMTP, POP3 e IMAP. Para obtener más detalles, visite http://wiki.nginx.org/Overview.

MariaDB es una bifurcación del conocido MySQL, uno de los sistemas de gestión de bases de datos relacionales (RDBMS) más populares del mundo. Está completamente desarrollado por la comunidad y, como tal, está destinado a seguir siendo FOSS y compatible con la GPL.

Para instalar Ngnix y MariaDB, ejecute los siguientes comandos.

----------- Installing on RHEL/CentOS 7/6 ----------- 
# yum --enablerepo=remi install nginx MariaDB-client MariaDB-server php php-common php-fpm 

----------- Installing on Fedora ----------- 
# dnf --enablerepo=remi install nginx MariaDB-client MariaDB-server php php-common php-fpm 

Paso 3: Instalar PHP usando Remi Repository

PHP (preprocesador de hipertexto) es un lenguaje de programación del lado del servidor de código abierto y gratuito que se adapta mejor al desarrollo web. Se puede utilizar para producir páginas web dinámicas para un sitio web y se encuentra con mayor frecuencia en servidores * nix. Una de las ventajas de PHP es que se puede ampliar fácilmente mediante el uso de una amplia variedad de módulos.

Para instalar PHP, primero debe habilitar el repositorio de Remi instalando yum-utils , una colección de programas útiles para administrar repositorios y paquetes de yum.

# yum install yum-utils

Una vez instalado, puede usar yum-config-manager proporcionado por yum-utils para habilitar el repositorio Remi como el repositorio predeterminado para instalar diferentes versiones de PHP como se muestra.

Por ejemplo, para instalar la versión PHP 7.x, use el siguiente comando.

------------- On CentOS & RHEL ------------- 
# yum-config-manager --enable remi-php70 && yum install php       [Install PHP 7.0]
# yum-config-manager --enable remi-php71 && yum install php       [Install PHP 7.1]
# yum-config-manager --enable remi-php72 && yum install php       [Install PHP 7.2]
# yum-config-manager --enable remi-php73 && yum install php       [Install PHP 7.3]

------------- On Fedora ------------- 
# dnf --enablerepo=remi install php70      [Install PHP 7.0]
# dnf --enablerepo=remi install php71      [Install PHP 7.1]
# dnf --enablerepo=remi install php72      [Install PHP 7.2]
# dnf --enablerepo=remi install php73      [Install PHP 7.3]

A continuación, vamos a instalar todos estos siguientes módulos PHP.

------ On RHEL/CentOS 7/6 ------
# yum --enablerepo=remi install php-mysqlnd php-pgsql php-fpm php-pecl-mongo php-pdo php-pecl-memcache php-pecl-memcached php-gd php-xml php-mbstring php-mcrypt php-pecl-apcu php-cli php-pear

------ On Fedora ------
# dnf --enablerepo=remi install php-mysqlnd php-pgsql php-fpm php-pecl-mongo php-pdo php-pecl-memcache php-pecl-memcached php-gd php-xml php-mbstring php-mcrypt php-pecl-apcu php-cli php-pear

Paso 6: detener y deshabilitar el servicio Apache

De forma predeterminada, Apache y Nginx escuchan en el mismo puerto (TCP 80). Por esa razón, si Apache está instalado en su servidor, debe detenerlo y deshabilitarlo/enmascararlo (una versión más fuerte de deshabilitar que vincula el servicio a/dev/null) para usar Nginx, o puede eliminarlo si ya no planeas usarlo.

# systemctl stop httpd 
# systemctl disable httpd 
or 
# systemctl mask httpd 

Paso 7: iniciar/detener Nginx, MariaDB y PHP-FPM

----------- Enable Nginx, MariaDB and PHP-FPM on Boot ----------- 
# systemctl enable nginx 
# systemctl enable mariadb 
# systemctl enable php-fpm 
 
----------- Start Nginx, MariaDB and PHP-FPM ----------- 
# systemctl start nginx 
# systemctl start mariadb 
# systemctl start php-fpm 

Paso 8: Configuración de Nginx y PHP-FPM

Creemos ahora una estructura de directorio para su sitio web (un host virtual o un bloque de servidor como se llama en Nginx) en/srv/www /. En este ejemplo usaremos www.tecmint.com , pero si lo desea, puede elegir otro dominio y directorio principal.

# mkdir -p /srv/www/tecmint/public_html 
# mkdir /srv/www/tecmint/logs 
# chown -R nginx:nginx /srv/www/tecmint  

Paso 9: Configuración de directorios de host virtual de Nginx

Como sabe, la capacidad de ejecutar varios sitios desde la misma máquina es una de las características distintivas de los principales servidores web. Procedamos ahora a crear los directorios para almacenar nuestros bloques de servidor (conocidos como hosts virtuales en Apache) en/etc/nginx.

# mkdir /etc/nginx/sites-available 
# mkdir /etc/nginx/sites-enabled 

La siguiente línea de código, que debe insertarse antes de cerrar el bloque http en /etc/nginx/nginx.conf, garantizará que los archivos de configuración dentro del directorio/etc/nginx/sites-enabled se tengan en cuenta cuando Nginx se esté ejecutando :

## Load virtual host conf files. ## 
include /etc/nginx/sites-enabled/*; 

Para crear el bloque de servidor para tecmint.com , agregue las siguientes líneas de código a/etc/nginx/sites-available/tecmint (este archivo se creará cuando ingrese la ruta completa para iniciar su editor de texto). Este es un archivo de configuración de host virtual básico.

server { 
	listen 80 default; 
	server_name tecmint; 
	access_log /srv/www/tecmint/logs/access.log; 
	error_log /srv/www/tecmint/logs/error.log; 
	root /srv/www/tecmint/public_html; 
	location ~* \.php$ { 
	fastcgi_index   index.php; 
	fastcgi_pass    127.0.0.1:9000; 
	include         fastcgi_params; 
	fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name; 
	fastcgi_param   SCRIPT_NAME        $fastcgi_script_name; 
	} 
} 

El proceso de "activar" un host virtual consiste en crear un enlace simbólico desde la definición del host virtual tecmint a/etc/nginx/sites-enabled.

# ln -s /etc/nginx/sites-available/tecmint /etc/nginx/sites-enabled/tecmint 

Para aplicar realmente los cambios que hemos estado haciendo, ahora necesitamos reiniciar Nginx. A veces es útil comprobar los archivos de configuración para ver si hay errores de sintaxis antes de hacerlo:

# nginx -t 
# systemctl restart nginx 
# systemctl status nginx 

Para acceder a su host virtual recién creado, debe agregar la siguiente línea a/etc/hosts como método básico de resolución de nombres de dominio.

192.168.0.18	www.tecmint.com tecmint.com 

Paso 10: Prueba de Nginx, MySQL, PHP y PHP-FPM

Sigamos con la forma clásica de probar PHP. Cree un archivo llamado test.php en/srv/www/tecmint/public_html/y agregue las siguientes líneas de código.

La función phpinfo() muestra una gran cantidad de información sobre la instalación actual de PHP:

<?php 
	phpinfo(); 
?> 

Ahora apunte su navegador web a http://tecmint/test.php y verifique la presencia de los módulos instalados y el software adicional:

¡Felicidades! Ahora tiene una instalación funcional de una pila LEMP. Si algo no salió como esperaba, no dude en contactarnos mediante el formulario a continuación. Las preguntas y sugerencias también son bienvenidas.