El uso de aplicaciones web cada día toma más fuerza en un mundo donde cada día la conectividad en línea se ha vuelto más que esencial. Para ello el mundo web ofrece un sinfín de posibilidades que van desde aplicaciones hasta completas estructuras y como administradores o usuarios de estos medios disponemos de aplicaciones como PHP Framework que tienen como finalidad el facilitar estas tareas y hoy hablaremos de una en especial llamada Laravel y usaremos CentOS 8 para tal fin y así instalar Laravel PHP Framework CentOs 8 con NGINX.
- Routing
- Requests
- Response
- Middleware
- CSRF Protection
- Validation
- Authentication
- Authorization
- Eloquent ORM
- Responses
- Laravel Dusk
- Filestorage
- Artisan
Cada uno de ellos juega un rol fundamental en el comportamiento de la aplicación y de las opciones que tenemos para montar sitios web y objetos para acceder ya sea de forma local o externa.
- Múltiples plantillas de enrutamiento
- Soporte de arquitectura MVC
- Mejoras de seguridad al implementar el algoritmo Bcrypt Hashing y hace uso de sentencias SQL que evitan ataques de inyección SQL
- Soporte de ORM (Object Relational Mapping)
- Uso de Artisan la cual es una utilidad de línea de comandos con la cual se automatizan las tareas de programación
- Múltiples librerías y módulos de uso
- Sistemas de migración de bases de datos y más
- PHP >= 7.2.5
- Extensión BCMath PHP
- Extensión Ctype PHP
- Extensión Fileinfo PHP
- Extensión JSON PHP
- Extensión Mbstring PHP
- Extensión OpenSSL PHP
- Extensión PDO PHP
- Extensión Tokenizer PHP
- Extensión XML PHP
No te angusties que Solvetic te dará el paso a paso para instalar Laravel PHP Framework CentOs 8 con NGINX.
1. Actualizar CentOS 8
El primer paso a dar será actualizar los componentes y el sistema en CentOS 8, para ello vamos a la terminal y ejecutamos lo siguiente. Allí esperamos que el sistema sea actualizado.
dnf update
2. Instalar LEMP CentOS 8
LEMP es un conjunto de funcionalidades creadas para optimizar el sistema operativo CentOS 8, LEMP (Linux, Nginx, MariaDB / MySQL y PHP) permiten que Laravel sea explotado al máximo, para su instalación ejecutamos lo siguiente.
Ingresamos la letra “s” para confirmar la descarga e instalación de LEMP en CentOS 8.
dnf install nginx php php-fpm php-common php-xml php-mbstring php-json php-zip mariadb-server php-mysqlnd
Después de esto vamos a ejecutar los siguientes comandos:
systemctl start php-fpm nginx mariadb (inicia el servicio MariaDB) systemctl enable php-fpm nginx mariadb (habilita el servicio MariaDB) systemctl status php-fpm nginx mariadb (muestra el estado del servicio MariaDB)
El siguiente paso será asegurar la instalación de MySQL (por defecto es insegura), para ello vamos a ejecutar el siguiente comando. Allí debemos completar cada una de las preguntas desplegadas como lo son el cambio de contraseña de root, borrar bases de datos temporales y más.
mysql_secure_installation
A continuación, vamos a habilitar los protocolos HTTP y HTTPS para el acceso externo a través del Firewall, ejecutamos lo siguiente:
firewall-cmd --zone=public --permanent --add-service=http firewall-cmd --zone=public --permanent --add-service=https firewall-cmd --reload
Una vez realizado esto accedemos desde un navegador e ingresamos la IP del servidor para acceder a la configuración de Apache:
3. Configurar PHP-FPM y Nginx Centos 8
Con el fin de procesar las solicitudes del servidor web Nginx, PHP-FPM está en la capacidad de escuchar a través de un socket Unix o un socket TCP.
Esto es validado con el parámetro listen en el archivo de configuración /etc/php-fpm.d/www.conf, accedemos a este ejecutando:
nano /etc/php-fpm.d/www.conf
Allí vamos a buscar la línea “listen” la cual indica lo siguiente:
Podemos ver que escucha a través del socket, ahora vamos a descomentar algunos parámetros y asignar los valores para el usuario y el grupo de Nginx, estas líneas están un poco más abajo:
listen.owner = nginx listen.group = nginx listen.mode = 066
Allí reemplazamos “nobody” por “nginx”:
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salimos del editor usando:
Ctrl + X
Accedemos ahora al archivo de configuración de PHP:
nano /etc/php.ini
Allí vamos a la línea “;date.timezone” y establecemos la zona horaria actual. Guardamos los cambios y salimos del editor.
4. Instalar Composer en Centos 8
Composer es una herramienta mediante la cual administramos las dependencias en PHP, esta nos permite declarar las bibliotecas y las administrará (instalará / actualizará) sin mucha intervención de parte nuestra.
Esto simplifica estas tareas, para instalar Composer primero instalaremos algunas dependencias PHP:
dnf install php libapache2-mod-php php-mbstring php-xmlrpc php-soap php-gd php-xml php-cli php-zip
Ingresamos la letra “s” para aceptar la descarga e instalación de estas dependencias:
Después de esto comprobamos la versión de PHP ejecutando:
php -v
Después de esto instalaremos Curl el cual es un gestor de descargas:
dnf install curl
Procedemos a la descarga de la última versión de Composer para CentOS 8:
curl -sS https://getcomposer.org/installer | php
Si deseamos que Composer sea instalado de forma global para todos los usuarios del sistema vamos a ejecutar lo siguiente:
sudo mv composer.phar /usr/local/bin/composer sudo chmod +x /usr/local/bin/composer source ~/.bashrc
Comprobamos la versión de Composer con el siguiente comando:
composer -v
5. Instalar Laravel para acceso local en Centos 8
Laravel puede ser usado tanto de forma local como externa, Solvetic te explicará ambas formas.
Para acceso local vamos a ejecutar lo siguiente:
composer create-project --prefer-dist laravel/laravel test
Esto iniciará la descarga de todos los complementos necesarios para el acceso adecuado:
Cuando finalice veremos lo siguiente:
Ahora accedemos a la carpeta del proyecto creado y ejecutamos lo siguiente:
cd test php artisan serve
Como vemos allí se indica la dirección IP de acceso local con el respectivo puerto asignado. Asignamos los permisos respectivos en el Firewall de CentOS 8:
firewall-cmd --add-port=8000/tcp --permanent --zone=public firewall-cmd --reload
A continuación, usamos el comando ip add para detectar la IP del servidor y la asociamos a Laravel con el siguiente comando:
php artisan serve --host=192.168.0.34 --port=8000
Con esto podremos acceder desde un navegador e ingresar la siguiente sintaxis. Allí contamos con el acceso a Laravel de forma local.
http://IP_CentOS8:8000
6. Abrir Laravel PHP externamente en Centos 8
Para este caso el proceso es algo diferente, en primer lugar, accedemos al directorio html:
cd /var/www/html/
Allí creamos el respectivo proyecto:
composer create-project --prefer-dist laravel/laravel solvetic
Cuando el proyecto sea creado veremos lo siguiente:
Durante este proceso de instalación, ha sido creado el archivo de entorno .env y ha sido generada la aplicación requerida, para validar esto ejecutaremos lo siguiente. Allí vemos cada uno de los permisos asignados.
ls -la solvetic/
Ahora vamos a otorgar todos los permisos necesarios al proyecto:
chown -R :nginx /var/www/html/solvetic/storage/ chown -R :nginx /var/www/html/ solvetic /bootstrap/cache/ chmod -R 0777 /var/www/html/ solvetic /storage/ chmod -R 0775 /var/www/html/ solvetic /bootstrap/cache/
En caso de que SELinux se encuentre habilitado en CentOS 8, será necesario actualizar el contexto de seguridad de los directorios de almacenamiento y bootstrap/cache, esto lo logramos con los siguientes comandos:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/solvetic/storage(/.*)?' semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/ solvetic /bootstrap/cache(/.*)?' restorecon -Rv '/var/www/html/ solvetic '
7. Configurar Nginx para Laravel en Centos 8
Con el de que Nginx actue de forma correcta en el servidor debemos crear un bloque de servidor con un archivo .conf en el directorio /etc/nginx/conf.d/:
nano /etc/nginx/conf.d/solvetic.conf
En este archivo ingresamos los siguientes datos:
server { listen 80; server_name solvetic; root /var/www/html/solvetic/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; } }
Guardamos los cambios usando la combinación de teclas siguiente:
Ctrl + O
Salimos del editor usando:
Ctrl + X
Ahora comprobamos que todo funcione con el siguiente comando:
nginx -t
Después de esto reiniciamos los servicios:
systemctl restart php-fpm systemctl restart Nginx
8. Abri Laravel externamente en Centos 8
Debemos conceder los permisos en el archivo hosts tanto a la IP como al proyecto, esto será posible ejecutando:
echo "192.168.0.34 solvetic" | sudo tee -a /etc/hosts
Con esto ya podemos acceder de forma remota al proyecto ingresando la IP del servidor en cualquier navegador:
Con estos pasos que te ha explicado Solvetic ya estas listo para configurar tu servidor web con Laravel.