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.