Cómo instalar Laravel PHP Framework con Nginx en CentOS 8


Laravel es un marco web de código abierto, conocido y moderno basado en PHP con una sintaxis expresiva, elegante y fácil de entender que facilita la creación de aplicaciones web grandes y robustas.

Sus características clave incluyen un motor de enrutamiento simple y rápido, un potente contenedor de inyección de dependencias, múltiples back-end para almacenamiento de caché y sesiones, ORM (mapeo relacional de objetos) de base de datos expresivo e intuitivo, procesamiento de trabajos en segundo plano robusto y transmisión de eventos en tiempo real.

Además, utiliza herramientas como Composer, un administrador de paquetes PHP para administrar dependencias y Artisan, una interfaz de línea de comandos para crear y administrar aplicaciones web.

En este artículo, aprenderá cómo instalar la última versión del marco web PHP de Laravel en la distribución de Linux CentOS 8.

El marco de Laravel tiene los siguientes requisitos:

  • PHP >= 7.2.5 with these PHP extensions OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype and JSON.
  • Composer – for installing and manage dependencies.

Paso 1: Instalar LEMP Stack en CentOS 8

1. Para comenzar, actualice los paquetes de software del sistema e instale la pila LEMP (Linux, Nginx, MariaDB/MySQL y PHP) usando los siguientes comandos dnf.

# dnf update
# dnf install nginx php php-fpm php-common php-xml php-mbstring php-json php-zip mariadb-server php-mysqlnd

2. Cuando se complete la instalación de LEMP, debe iniciar los servicios PHP-PFM, Nginx y MariaDB utilizando los siguientes comandos systemctl.

# systemctl start php-fpm nginx mariadb
# systemctl enable php-fpm nginx mariadb
# systemctl status php-fpm nginx mariadb

3. A continuación, debe proteger y fortalecer el motor de la base de datos MariaDB utilizando el script de seguridad como se muestra.

# mysql_secure_installation

Responda las siguientes preguntas para asegurar la instalación del servidor.

Enter current password for root (enter for none): Enter Set root password? [Y/n] y #set new root password Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] y Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y

4. Si tiene el servicio firewalld en ejecución, debe abrir el servicio HTTP y HTTPS en el firewall para habilitar las solicitudes de los clientes al servidor web Nginx.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

5. Finalmente, puede confirmar que su pila LEMP se está ejecutando usando un navegador en la dirección IP de su sistema.

http://server-IP

Paso 2: configurar y proteger PHP-FPM y Nginx

6. Para procesar solicitudes del servidor web Nginx, PHP-FPM puede escuchar en un socket Unix o un socket TCP y esto está definido por el parámetro listen en el archivo de configuración /etc/php-fpm.d/www.conf.

# vi /etc/php-fpm.d/www.conf

De forma predeterminada, está configurado para escuchar en un socket Unix como se muestra en la siguiente captura de pantalla. El valor aquí se especificará en el archivo de bloque del servidor Nginx más adelante.

7. Si usa un socket Unix, también debe establecer la propiedad y los permisos correctos en él como se muestra en la captura de pantalla. Elimine el comentario de los siguientes parámetros y establezca sus valores para el usuario y el grupo para que coincidan con el usuario y el grupo con el que se ejecuta Nginx.

listen.owner = nginx
listen.group = nginx
listen.mode = 066

8. A continuación, configure también la zona horaria de todo el sistema en el archivo de configuración /etc/php.ini.

# vi /etc/php.ini

Busque la línea “; date.timezone” y descomente, luego establezca su valor como se muestra en la captura de pantalla (use valores que se apliquen a su región/continente y país).

 
date.timezone = Africa/Kampala

9. Para mitigar el riesgo de que Nginx pase solicitudes de usuarios malintencionados que usan otras extensiones para ejecutar código PHP en PHP-FPM, elimine el comentario del siguiente parámetro y establezca su valor en 0 .

cgi.fix_pathinfo=1

10. En relación con el punto anterior, descomente también el siguiente parámetro en el archivo /etc/php-fpm.d/www.conf. Lea el comentario para obtener más explicaciones.

security.limit_extensions = .php .php3 .php4 .php5 .php7

Paso 3: Instalar Composer y Laravel PHP Framework

11. A continuación, instale el paquete Composer ejecutando los siguientes comandos. El primer comando descarga el instalador y luego lo ejecuta usando PHP.

# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
# chmod +x /usr/local/bin/composer

12. Ahora que Composer está instalado, utilícelo para instalar archivos y dependencias de Laravel de la siguiente manera. Reemplace mysite.com con el nombre del directorio donde se almacenarán los archivos de Laravel, la ruta absoluta (o ruta raíz en el archivo de configuración de Nginx) será /var/www/html/mysite.com.

# cd /var/www/html/
# composer create-project --prefer-dist laravel/laravel mysite.com

Si todo va bien durante el proceso, la aplicación debería instalarse correctamente y debería generarse una clave como se muestra en la siguiente captura de pantalla.

13. Durante el proceso de instalación, se creó el archivo de entorno .env y también se generó la aplicación requerida, por lo que no es necesario crearlos manualmente como antes. Para confirmar esto, ejecute una lista larga del directorio raíz de laravel usando el comando ls.

# ls -la mysite.com/

14. A continuación, debe configurar la propiedad y los permisos correctos en el almacenamiento y los directorios de arranque/caché para que el servidor web Nginx pueda escribir.

# chown -R :nginx /var/www/html/mysite.com/storage/
# chown -R :nginx /var/www/html/mysite.com/bootstrap/cache/
# chmod -R 0777 /var/www/html/mysite.com/storage/
# chmod -R 0775 /var/www/html/mysite.com/bootstrap/cache/

15. Si SELinux está habilitado en su servidor, también debe actualizar el contexto de seguridad de los directorios de almacenamiento y bootstrap/cache.

# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/storage(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/mysite.com/bootstrap/cache(/.*)?'
# restorecon -Rv '/var/www/html/mysite.com'

Paso 4: configurar el bloque del servidor Nginx para Laravel

16. Para que Nginx comience a servir su sitio web o aplicación, debe crear un bloque de servidor en un archivo .conf en el directorio /etc/nginx/conf.d/ como se muestra.

# vi /etc/nginx/conf.d/mysite.com.conf

Copie y pegue la siguiente configuración en el archivo. Tome nota de los parámetros root y fastcgi_pass.

server {
	listen      80;
       server_name mysite.com;
       root        /var/www/html/mysite.com/public;
       index       index.php;

       charset utf-8;
       gzip on;
	gzip_types text/css application/javascript text/javascript application/x-javascript  image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;
        location / {
        	try_files $uri $uri/ /index.php?$query_string;
        }

        location ~ \.php {
                include fastcgi.conf;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/run/php-fpm/www.sock;
        }
        location ~ /\.ht {
                deny all;
        }
}

17. Guarde el archivo y verifique si la sintaxis de configuración de Nginx es correcta ejecutando.

# nginx -t

18. Luego reinicie los servicios PHP-FPM y Nginx para que los cambios recientes surtan efecto.

# systemctl restart php-fpm
# systemctl restart Nginx

Paso 5: Acceder al sitio web de Laravel desde un navegador web

19. Para acceder al sitio web de Laravel en mysite.com, que no es un nombre de dominio completamente calificado (FQDN) y no está registrado (solo se usa para propósitos de prueba), usaremos el archivo/etc/hosts en su máquina local para crear DNS local.

Ejecute el siguiente comando para agregar la dirección IP del servidor y el dominio en el archivo requerido (reemplace el valor según su configuración).

# ip add		#get remote server IP
$ echo "10.42.0.21  mysite.com" | sudo tee -a /etc/hosts

20. A continuación, abra un navegador web en la máquina local y use la siguiente dirección para navegar.

http://mysite.com

Ha implementado con éxito Laravel en CentOS 8. Ahora puede comenzar a desarrollar su sitio web o aplicación web usando Laravel. Para obtener más información, consulte la guía de introducción a Laravel.