Com instal·lar Laravel PHP Framework amb Nginx a CentOS 8


Laravel és un marc web de codi obert, conegut i modern basat en PHP amb una sintaxi expressiva, elegant i fàcil d'entendre que facilita la creació d'aplicacions web grans i robustes.

Les seves característiques clau inclouen un motor d'encaminament senzill i ràpid, un potent contenidor d'injecció de dependències, múltiples back-ends per a l'emmagatzematge de sessions i memòria cau, ORM de base de dades expressiva i intuïtiva (Mapeo relacional amb objectes), processament robust de treballs en segon pla i difusió d'esdeveniments en temps real.

A més, utilitza eines com Composer, un gestor de paquets PHP per gestionar les dependències, i Artisan, una interfície de línia d'ordres per crear i gestionar aplicacions web.

En aquest article, aprendràs a instal·lar la darrera versió del marc web Laravel PHP a la distribució Linux CentOS 8.

El framework Laravel té els requisits següents:

  • PHP >= 7.2.5 amb aquestes extensions PHP OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype i JSON.
  • Composer: per instal·lar i gestionar dependències.

Pas 1: instal·lació de la pila LEMP a CentOS 8

1. Per començar, actualitzeu els paquets de programari del sistema i instal·leu la pila LEMP (Linux, Nginx, MariaDB/MySQL i PHP) mitjançant les ordres dnf següents.

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

2. Quan s'hagi completat la instal·lació de LEMP, haureu d'iniciar els serveis PHP-PFM, Nginx i MariaDB mitjançant les ordres systemctl següents.

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

3. A continuació, heu de protegir i endurir el motor de base de dades MariaDB mitjançant l'script de seguretat tal com es mostra.

# mysql_secure_installation

Contesteu les preguntes següents per assegurar la instal·lació 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 teniu el servei firewalld en execució, heu d'obrir el servei HTTP i HTTPS al tallafoc per habilitar les sol·licituds del client al servidor web de Nginx.

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

5. Finalment, podeu confirmar que la vostra pila LEMP s'està executant mitjançant un navegador a l'adreça IP del vostre sistema.

http://server-IP

Pas 2: Configuració i seguretat de PHP-FPM i Nginx

6. Per processar les sol·licituds del servidor web Nginx, PHP-FPM pot escoltar en un sòcol Unix o TCP i això es defineix pel paràmetre listen al fitxer de configuració /etc/php-fpm.d/www.conf.

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

Per defecte, està configurat per escoltar en un sòcol Unix, tal com es mostra a la captura de pantalla següent. El valor aquí s'especificarà al fitxer de bloqueig del servidor Nginx més endavant.

7. Si feu servir un sòcol Unix, també hauríeu d'establir-hi la propietat i els permisos correctes tal com es mostra a la captura de pantalla. Descomenteu els paràmetres següents i configureu-ne els valors a l'usuari i al grup perquè coincideixin amb l'usuari i el grup amb què s'executa Nginx.

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

8. A continuació, també configureu la zona horària de tot el sistema al fitxer de configuració /etc/php.ini.

# vi /etc/php.ini

Busqueu la línia \;date.timezone” i descomenceu-la i, a continuació, definiu-ne el valor tal com es mostra a la captura de pantalla (utilitza els valors que s'apliquen a la vostra regió/continent i país).

 
date.timezone = Africa/Kampala

9. Per mitigar el risc que Nginx passi sol·licituds d'usuaris maliciosos que utilitzen altres extensions per executar codi PHP a PHP-FPM, descomenta el paràmetre següent i defineix el seu valor a 0.

cgi.fix_pathinfo=1

10. En relació amb el punt anterior, també descomenteu el paràmetre següent al fitxer /etc/php-fpm.d/www.conf. Llegeix el comentari per obtenir més explicació.

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

Pas 3: instal·lació de Composer i Laravel PHP Framework

11. A continuació, instal·leu el paquet Composer executant les ordres següents. La primera ordre descarrega l'instal·lador i després l'executa amb PHP.

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

12. Ara que Composer està instal·lat, utilitzeu-lo per instal·lar fitxers i dependències de Laravel de la manera següent. Substituïu mysite.com pel nom del directori on s'emmagatzemaran els fitxers Laravel, la ruta absoluta (o ruta arrel al fitxer de configuració Nginx) serà /var/www/html/mysite.com.

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

Si tot va bé durant el procés, l'aplicació s'hauria d'instal·lar correctament i s'hauria de generar una clau tal com es mostra a la captura de pantalla següent.

13. Durant el procés d'instal·lació, es va crear el fitxer d'entorn .env i també es va generar l'aplicació necessària, de manera que no cal que els creeu manualment com abans. Per confirmar-ho, executeu una llista llarga del directori arrel de laravel mitjançant l'ordre ls.

# ls -la mysite.com/

14. A continuació, heu de configurar la propietat i els permisos correctes a l'emmagatzematge i als directoris d'arrencada/caché perquè el servidor web Nginx pugui escriure.

# 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à habilitat al vostre servidor, també hauríeu d'actualitzar el context de seguretat dels directoris d'emmagatzematge i d'arrencada/caché.

# 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'

Pas 4: configureu el bloc del servidor Nginx per a Laravel

16. Perquè Nginx comenci a servir el vostre lloc web o aplicació, heu de crear-hi un bloc de servidor en un fitxer .conf al directori /etc/nginx/conf.d/ tal com es mostra.

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

Copieu i enganxeu la configuració següent al fitxer. Preneu nota dels paràmetres root i 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. Deseu el fitxer i comproveu si la sintaxi de configuració de Nginx és correcta executant-lo.

# nginx -t

18. A continuació, reinicieu els serveis PHP-FPM i Nginx perquè els canvis recents tinguin efecte.

# systemctl restart php-fpm
# systemctl restart Nginx

Pas 5: Accés al lloc web de Laravel des d'un navegador web

19. Per accedir al lloc web de Laravel a mysite.com, que no és un nom de domini complet (FQDN) i no està registrat (només s'utilitza amb finalitats de prova), utilitzarem el fitxer /etc/hosts a la vostra màquina local. per crear DNS local.

Executeu l'ordre següent per afegir l'adreça IP i el domini del servidor al fitxer requerit (substituïu el valor segons la vostra configuració).

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

20. A continuació, obriu un navegador web a la màquina local i utilitzeu l'adreça següent per navegar.

http://mysite.com

Heu implementat Laravel amb èxit a CentOS 8. Ara podeu començar a desenvolupar el vostre lloc web o aplicació web amb Laravel. Per obtenir més informació, consulteu la guia d'iniciació de Laravel.