Wyszukiwanie w witrynie

Jak zainstalować Laravel PHP Framework z Nginx na CentOS 8


Laravel to dobrze znana i nowoczesna platforma internetowa oparta na języku PHP o otwartym kodzie źródłowym, z wyrazistą, elegancką i łatwą do zrozumienia składnią, która ułatwia tworzenie dużych, solidnych aplikacji internetowych.

Jego kluczowe funkcje obejmują prosty, szybki silnik routingu, potężny kontener wstrzykiwania zależności, wiele zaplecza do przechowywania sesji i pamięci podręcznej, ekspresyjne i intuicyjne ORM bazy danych (mapowanie obiektowo-relacyjne), niezawodne przetwarzanie zadań w tle i transmisję zdarzeń w czasie rzeczywistym.

Wykorzystuje także narzędzia takie jak Composer – menedżer pakietów PHP do zarządzania zależnościami i Artisan – interfejs wiersza poleceń do tworzenia aplikacji internetowych i zarządzania nimi.

W tym artykule dowiesz się, jak zainstalować najnowszą wersję frameworka internetowego Laravel PHP na dystrybucji CentOS 8 Linux.

Wymagania serwera

Framework Laravel ma następujące wymagania:

  • PHP >= 7.2.5 z rozszerzeniami PHP OpenSSL, PDO, Mbstring, Tokenizer, XML, Ctype i JSON.
  • Composer – do instalowania zależności i zarządzania nimi.

Krok 1: Instalowanie stosu LEMP w CentOS 8

1. Na początek zaktualizuj pakiety oprogramowania systemowego i zainstaluj stos LEMP (Linux, Nginx, MariaDB/MySQL i PHP) za pomocą następujących poleceń dnf.

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

2. Po zakończeniu instalacji LEMP musisz uruchomić PHP-PFM, Nginx i MariaDB za pomocą następujących poleceń systemctl.

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

3. Następnie musisz zabezpieczyć i wzmocnić silnik bazy danych MariaDB za pomocą skryptu bezpieczeństwa, jak pokazano.

mysql_secure_installation

Odpowiedz na poniższe pytania, aby zabezpieczyć instalację serwera.

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. Jeśli masz uruchomioną usługę firewalld, musisz otworzyć w zaporze usługi HTTP i HTTPS aby umożliwić wysyłanie żądań klientów do serwera WWW Nginx.

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

5. Na koniec możesz potwierdzić, że stos LEMP działa, używając przeglądarki pod adresem IP Twojego systemu.

http://server-IP

Krok 2: Konfiguracja i zabezpieczenie PHP-FPM i Nginx

6. Aby przetwarzać żądania z serwera internetowego Nginx, PHP-FPM może nasłuchiwać na gnieździe Unix lub gnieździe TCP i jest to definiowane przez Parametr listen w pliku konfiguracyjnym /etc/php-fpm.d/www.conf.

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

Domyślnie jest skonfigurowany do nasłuchiwania na gnieździe Unix, jak pokazano na poniższym zrzucie ekranu. Wartość tutaj zostanie określona później w pliku bloku serwera Nginx.

7. Jeśli używasz gniazda Unix, powinieneś także ustawić dla niego poprawną własność i uprawnienia, jak pokazano na zrzucie ekranu. Odkomentuj poniższe parametry i ustaw ich wartości dla użytkownika i grupy tak, aby odpowiadały użytkownikowi i grupie, na której działa Nginx.

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

8. Następnie ustaw także ogólnosystemową strefę czasową w pliku konfiguracyjnym /etc/php.ini.

vi /etc/php.ini

Poszukaj wiersza „;date.timezone ” i odkomentuj go, a następnie ustaw jego wartość jak pokazano na zrzucie ekranu (użyj wartości, które dotyczą Twojego regionu/kontynentu i kraju).

 
date.timezone = Africa/Kampala

9. Aby ograniczyć ryzyko przekazywania przez Nginx żądań od złośliwych użytkowników korzystających z innych rozszerzeń do wykonywania kodu PHP do PHP-FPM, odkomentuj następujący parametr i ustaw jego wartość na 9. kod>0.

cgi.fix_pathinfo=1

10. W nawiązaniu do poprzedniego punktu odkomentuj także następujący parametr w pliku /etc/php-fpm.d/www.conf. Przeczytaj komentarz, aby uzyskać więcej wyjaśnień.

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

Krok 3: Instalacja Composer i Laravel PHP Framework

11. Następnie zainstaluj pakiet Composer, uruchamiając następujące polecenia. Pierwsze polecenie pobiera instalator, następnie uruchamia go przy użyciu PHP.

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

12. Teraz, gdy zainstalowany jest Composer, użyj go do zainstalowania plików Laravel i zależności w następujący sposób. Zastąp mysite.com nazwą katalogu, w którym będą przechowywane pliki Laravel, ścieżka bezwzględna (lub ścieżka główna w pliku konfiguracyjnym Nginx) będzie miała postać /var/www/html/mysite .com.

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

Jeśli wszystko przebiegnie pomyślnie, aplikacja powinna zostać pomyślnie zainstalowana i wygenerowany klucz, jak pokazano na poniższym zrzucie ekranu.

13. Podczas procesu instalacji został utworzony plik środowiska .env oraz wygenerowana została także wymagana aplikacja, dzięki czemu nie trzeba ich tworzyć ręcznie jak dotychczas. Aby to potwierdzić, uruchom długą listę katalogu głównego laravel za pomocą polecenia ls.

ls -la mysite.com/

14. Następnie musisz skonfigurować poprawną własność i uprawnienia do katalogów storage i bootstrap/cache, aby umożliwić zapis przez sieć Nginx serwer.

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. Jeśli na Twoim serwerze jest włączony SELinux, powinieneś także zaktualizować kontekst bezpieczeństwa pamięci i bootstrap/cache katalogi.

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'

Krok 4: Skonfiguruj blok serwera Nginx dla Laravel

16. Aby Nginx mógł rozpocząć obsługę Twojej witryny lub aplikacji, musisz utworzyć dla niego blok serwera w pliku .conf w sekcji /etc/nginx/conf.d/ jak pokazano.

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

Skopiuj i wklej następującą konfigurację do pliku. Zanotuj parametry 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. Zapisz plik i sprawdź, uruchamiając, czy składnia konfiguracji Nginx jest poprawna.

nginx -t

18. Następnie uruchom ponownie usługi PHP-FPM i Nginx, aby ostatnie zmiany zaczęły obowiązywać.

systemctl restart php-fpm
systemctl restart Nginx

Krok 5: Dostęp do witryny Laravel z przeglądarki internetowej

19. Aby uzyskać dostęp do witryny Laravel pod adresem mysite.com, która nie jest w pełni kwalifikowaną nazwą domeny (FQDN) i nie jest zarejestrowana (jest używana wyłącznie do celów testowych) , użyjemy pliku /etc/hosts na Twoim komputerze lokalnym do utworzenia lokalnego DNS.

Uruchom następujące polecenie, aby dodać adres IP serwera i domenę do wymaganego pliku (zamień wartość zgodnie z ustawieniami).

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

20. Następnie otwórz przeglądarkę internetową na komputerze lokalnym i do nawigacji użyj poniższego adresu.

http://mysite.com

Pomyślnie wdrożyłeś Laravel na CentOS 8. Możesz teraz rozpocząć tworzenie swojej witryny lub aplikacji internetowej za pomocą Laravel. Aby uzyskać więcej informacji, zobacz przewodnik wprowadzający do Laravel.