Zoeken op website

Hoe Laravel PHP Framework met Nginx op CentOS 8 te installeren


Laravel is een open-source, bekend en modern, op PHP gebaseerd webframework met expressieve, elegante en gemakkelijk te begrijpen syntaxis, waardoor het eenvoudig is om grote, robuuste webapplicaties te bouwen.

De belangrijkste kenmerken zijn onder meer een eenvoudige, snelle routing-engine, een krachtige container voor afhankelijkheidsinjectie, meerdere back-ends voor sessie- en cache-opslag, expressieve en intuïtieve database-ORM (Object-relational Mapping), robuuste verwerking van taken op de achtergrond en realtime uitzending van gebeurtenissen.

Het maakt ook gebruik van tools zoals Composer – een PHP-pakketbeheerder voor het beheren van afhankelijkheden en Artisan – een opdrachtregelinterface voor het bouwen en beheren van webapplicaties.

In dit artikel leert u hoe u de nieuwste versie van het Laravel PHP webframework op CentOS 8 Linux-distributie installeert.

Serververeisten

Het Laravel-framework voldoet aan de volgende vereisten:

  • PHP >= 7.2.5 met deze PHP-extensies OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype en JSON.
  • Composer – voor het installeren en beheren van afhankelijkheden.

Stap 1: LEMP Stack installeren in CentOS 8

1. Update om te beginnen de systeemsoftwarepakketten en installeer de LEMP-stack (Linux, Nginx, MariaDB/MySQL en PHP) met behulp van de volgende dnf-opdrachten.

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

2. Wanneer de LEMP installatie voltooid is, moet je de PHP-PFM, Nginx en starten >MariaDB-services met behulp van de volgende systemctl-opdrachten.

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

3. Vervolgens moet u de MariaDB database-engine beveiligen en versterken met behulp van het beveiligingsscript, zoals weergegeven.

mysql_secure_installation

Beantwoord de volgende vragen om de serverinstallatie te beveiligen.

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. Als u de service firewalld actief heeft, moet u de service HTTP en HTTPS in de firewall openen om clientverzoeken aan de Nginx-webserver mogelijk te maken.

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

5. Ten slotte kunt u bevestigen dat uw LEMP-stack actief is met behulp van een browser op het IP-adres van uw systeem.

http://server-IP

Stap 2: PHP-FPM en Nginx configureren en beveiligen

6. Om verzoeken van de Nginx webserver te verwerken, kan PHP-FPM luisteren op een Unix-socket of TCP-socket en dit wordt gedefinieerd door de listen parameter in het /etc/php-fpm.d/www.conf configuratiebestand.

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

Standaard is het geconfigureerd om te luisteren op een Unix-socket, zoals weergegeven in de volgende schermafbeelding. De waarde hier wordt later gespecificeerd in het Nginx-serverblokbestand.

7. Als u een Unix-socket gebruikt, moet u ook het juiste eigendom en de juiste rechten hierop instellen, zoals weergegeven in de schermafbeelding. Verwijder de opmerkingen bij de volgende parameters en stel hun waarden in op de gebruiker en groep, zodat deze overeenkomen met de gebruiker en groep waarop Nginx wordt uitgevoerd.

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

8. Stel vervolgens ook de systeembrede tijdzone in het /etc/php.ini configuratiebestand in.

vi /etc/php.ini

Zoek naar de regel “;date.timezone ” en verwijder de opmerkingen. Stel vervolgens de waarde in zoals weergegeven in de schermafbeelding (gebruik waarden die van toepassing zijn op uw regio/continent en land).

 
date.timezone = Africa/Kampala

9. Om het risico te beperken dat Nginx verzoeken doorgeeft van kwaadwillende gebruikers die andere extensies gebruiken om PHP-code uit te voeren naar PHP-FPM, verwijdert u het commentaar op de volgende parameter en stelt u de waarde ervan in op 0.

cgi.fix_pathinfo=1

10. Met betrekking tot het vorige punt: verwijder ook de commentaartekens voor de volgende parameter in het bestand /etc/php-fpm.d/www.conf. Lees de reactie voor meer uitleg.

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

Stap 3: Composer en Laravel PHP Framework installeren

11. Installeer vervolgens het Composer pakket door de volgende opdrachten uit te voeren. De eerste opdracht downloadt het installatieprogramma en voert het vervolgens uit met behulp van PHP.

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

12. Nu Composer is geïnstalleerd, kunt u het als volgt gebruiken om Laravel-bestanden en afhankelijkheden te installeren. Vervang mijnsite.com door de naam van de map waar de Laravel-bestanden zullen worden opgeslagen, het absolute pad (of hoofdpad in het Nginx-configuratiebestand) zal /var/www/html/mysite zijn .com.

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

Als alles goed gaat tijdens het proces, zou de applicatie succesvol moeten zijn geïnstalleerd en zou er een sleutel moeten worden gegenereerd, zoals weergegeven in de volgende schermafbeelding.

13. Tijdens het installatieproces werd het omgevingsbestand .env gemaakt en werd ook de vereiste applicatie gegenereerd, zodat u deze niet zoals voorheen handmatig hoeft te maken. Om dit te bevestigen, voert u een lange lijst van de laravel-hoofdmap uit met behulp van de opdracht ls.

ls -la mysite.com/

14. Vervolgens moet u het juiste eigendom en de juiste rechten configureren voor de mappen opslag en bootstrap/cache, zodat deze door het Nginx-web kunnen worden geschreven server.

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. Als SELinux is ingeschakeld op uw server, moet u ook de beveiligingscontext van de opslag en bootstrap/cache bijwerken > mappen.

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'

Stap 4: Configureer Nginx-serverblok voor Laravel

16. Om Nginx uw website of applicatie te kunnen aanbieden, moet u er een serverblok voor maken in een .conf-bestand onder >/etc/nginx/conf.d/ map zoals weergegeven.

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

Kopieer en plak de volgende configuratie in het bestand. Let op de root- en fastcgi_pass-parameters.

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. Sla het bestand op en controleer of de configuratiesyntaxis van Nginx correct is door het uit te voeren.

nginx -t

18. Start vervolgens de PHP-FPM- en Nginx-services opnieuw op, zodat de recente wijzigingen van kracht worden.

systemctl restart php-fpm
systemctl restart Nginx

Stap 5: Toegang tot de Laravel-website via een webbrowser

19. Om toegang te krijgen tot de Laravel-website op mysite.com, wat geen volledig gekwalificeerde domeinnaam (FQDN) is en niet geregistreerd is (deze wordt alleen gebruikt voor testdoeleinden) , gebruiken we het bestand /etc/hosts op uw lokale computer om lokale DNS te maken.

Voer de volgende opdracht uit om het IP-adres en domein van de server toe te voegen aan het vereiste bestand (vervang de waarde volgens uw instellingen).

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

20. Open vervolgens een webbrowser op de lokale computer en gebruik het volgende adres om te navigeren.

http://mysite.com

Je hebt Laravel met succes geïmplementeerd op CentOS 8. U kunt nu beginnen met het ontwikkelen van uw website of webapplicatie met Laravel. Zie de Laravel Getting Started-handleiding voor meer informatie.