Jak uruchamiać wiele stron z różnymi wersjami PHP w Nginx

Jak uruchamiać wiele stron z różnymi wersjami PHP w Nginx

Czasami programiści PHP chcą budować i uruchamiać różne strony internetowe/aplikacje za pomocą różnych wersji PHP na tym samym serwerze WWW. Jako administrator systemu Linux, musisz skonfigurować środowisko, w którym możesz uruchamiać wiele stron internetowych za pomocą różnych wersji PHP na jednym serwerze WWW i.mi. Nginx.

W tym samouczku wyjaśnimy, jak zainstalować wiele wersji Php i skonfiguruj serwer WWW Nginx pracować z nimi za pośrednictwem bloków serwerów (wirtualne hosty w Apache) w Centos/Rhel 7 rozkłady za pomocą LEMP stos.

Przeczytaj także: Pyenv - Zainstaluj wiele wersji Pythona dla określonego projektu

Nginx zastosowania PHP-FPM (oznacza FastCGI Process Manager), która jest alternatywą PHP Fastcgi Wdrożenie z dodatkowymi, przydatnymi funkcjami dla mocno załadowanych stron internetowych.

Konfiguracja środowiska testowego

  1. Serwer Centos 7 lub Rhel 7 z minimalną instalacją.
  2. Serwer Nginx HTTP.
  3. PHP 7.1 (do wersji domyślnej) i 5.6.
  4. Serwer bazy danych Mariadb.
  5. Adres IP serwera: 192.168.56.10.
  6. Strony internetowe: Przykład 1.com I Przykład2.com.

Krok 1: Instalowanie i włączanie repozytorium EPEL i REMI

1. Pierwszy zacznij od zainstalowania i włączenia Epel I Remi Repozytorium, które oferuje najnowsze wersje Php Ułóż dalej Centos/Rhel 7 rozkłady.

# Yum Zainstaluj https: // dl.Fedoraproject.org/pub/epel/epel-release-latest-7.Noarch.RPM # Yum Instaluj http: // RPM.remirepo.Net/Enterprise/Remi-Rulease-7.RPM 

2. Następnie zainstaluj Yum-Utils pakiet, który rozszerza natywne funkcje Yum i zapewnia Yum-Config-Manager polecenie, które służy do włączenia lub wyłączania repozytoriów Yum w systemie.

# mniam instaluj yum-utils 

Notatka: NA RHEL 7 Możesz włączyć opcjonalny kanał dla niektórych zależności za pomocą następującego polecenia.

# Repos subskrypcji-manager -enable = RHEL-7-SERVER-OPTIONAL-RPMS 

Krok 2: Instalowanie serwera WWW Nginx

3. Aby zainstalować najnowszą wersję Nginx, musimy dodać oficjalne repozytorium Nginx, utwórz plik o nazwie /etc/mniam.repozytorium.D/nginx.Repo.

# vi /etc /yum.repozytorium.D/nginx.Repo 

Dodaj następujące wiersze do pliku zgodnie z dystrybucją.

--------------- Na Centos 7 --------------- [nginx] nazwa = nginx repo baseurl = http: // nginx.org/pakiety/centos/7/$ basearch/gpgCheck = 0 włączony = 1 --------------- Na Rhel 7 --------------- [nginx] nazwa = nginx repo baseurl = http: // nginx.org/pakiety/RHEL/7.x/ $ basearch/ gpgcheck = 0 włączony = 1 

4. Po dodaniu Nginx repozytor.

# mniam instaluj nginx 

Krok 3: Instalowanie serwera bazy danych Mariadb

5. Aby zainstalować najnowszą wersję MariaDB, musimy dodać oficjalne repozytorium MariaDB, utwórz plik o nazwie /etc/mniam.repozytorium.D/Mariadb.Repo.

# vi /etc /yum.repozytorium.D/Mariadb.Repo 

Dodaj następujące wiersze do pliku zgodnie z dystrybucją.

--------------- Na Centos 7 --------------- [mariadb] nazwa = mariadb baseurl = http: // yum.Mariadb.Org/10.2/centos7-amd64 gpgkey = https: // yum.Mariadb.ORG/RPM-GPG-KEY-MARIADB GPGCheck = 1 --------------- Na Rhel 7 --------------- [mariadb] nazwa = mariadb baseurl = http: // yum.Mariadb.Org/10.2/RHEL7-AMD64 GPGKEY = https: // yum.Mariadb.ORG/RPM-GPG-KEY-MARIADB GPGCheck = 1 

6. Po dodaniu repozytorium MariaDB możesz zainstalować Mariadb za pomocą narzędzia Yum Pack Manager, jak pokazano.

# Yum Zainstaluj mariadb-client mariadb-server 

7. Następnie zabezpiecz instalację serwera bazy danych za pomocą poniższego skryptu. Ustaw hasło roota i odpowiedz y i naciśnij [Wchodzić] W reszcie kolejnych pytań, aby wyłączyć zdalny login użytkownika root, usuń konta anonimowego użytkownika i bazę danych testowych, do których domyślnie mogą uzyskać dostęp do wszystkich użytkowników, nawet anonimowych użytkowników.

# mysql_secure_instalation 

Przeczytaj także: 12 Mysql/MariaDB Security Best Practices for Linux

Krok 4: Instalowanie wielu wersji PHP

8. Aby zainstalować różne wersje PHP dla swoich projektów, użyj Yum-Config-Manager polecenie do zainstalowania wielu wersji PHP wraz z najbardziej wymaganymi modułami, jak pokazano.

Zainstaluj PHP 7.1 wersja

# Yum-Config-Manager-Ustawa REMI-PHP71 [Domyślnie] # Yum Instal Php-common php-fpm # yum instaluj php-mysql php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt PHP-XML PHP-PECL-APC PHP-CLI PHP-PEAR PHP-PDO 

Zainstaluj PHP 5.6 wersja

# Yum Instaluj PHP56 PHP56-PHP-COMMON PHP56-PHP-FPM # Yum Instaluj php56-php-mysql php56-php-pecl-memcache php56-php-pecl-memcached php56-php-gd php56-php-mbstring pHP56-pHP- MCRYPT PHP56-PHP-XML PHP56-PHP-PECL-APC PHP56-PHP-CLI PHP56-PHP-PEAR PHP56-PHP-PDO 

9. Po zainstalowaniu PHP możesz użyć następującego polecenia, aby sprawdzić domyślną wersję PHP używaną na serwerze.

# php -v 
Sprawdź domyślną wersję PHP

Krok 5: Konfigurowanie PHP-FPM i PHP56-PHP-FPM

10. To najciekawsza część tego samouczka, wyjaśnia, w jaki sposób możesz uruchomić wiele wersji PHP na serwerze. Tutaj skonfigurujesz różne wersje PHP-FPM że Nginx będzie współpracować. Powinieneś zdefiniować użytkownika/grupę procesów FASTCGI, a także porty, na których będą słuchać.

Są to następujące dwa pliki konfiguracyjne, które zamierzasz edytować.

  • PHP-FPM (Domyślnie 7.1) - /etc /php -fpm.D/www.conf
  • PHP56-PHP-FPM - /opt/remi/php56/root/etc/php-fpm.D/www.conf

Otwórz powyższe pliki, ustaw użytkownik/grupę procesów FASTCGI.

# vi /etc /php-fpm.D/www.CONF [PHP 7.1] # vi/opt/remi/php56/root/etc/php-fpm.D/www.CONF [PHP 5.6] 

Wartości domyślne powinny być Apache, Zmień je na nginx jak pokazano.

użytkownik = grupa nginx = nginx 

11. Następnie znajdź parametry słuchania i zdefiniuj Adres: Port na które zostaną odebrane żądania FASTCGI.

Słuchaj = 127.0.0.1: 9000 [php-fpm] słuchaj = 127.0.0.1: 9001 [php56-php-fpm] 

12. Po zakończeniu całej powyższej konfiguracji musisz uruchomić i włączyć Nginx, Mariadb I PHP-FPM Aby automatycznie startować w systemie.

# Systemctl Włącz Nginx # Systemctl Start Nginx # Systemctl Włącz MARIADB # Systemctl Start MariaDB ---------------- PHP 7.1 ---------------- # Systemctl Włącz php-fpm # Systemctl start php-fpm ---------------- PHP 5.6 ---------------- # Systemctl Włącz php56-php-fpm # Systemctl start php56-php-fpm 

Uwaga: W przypadku, gdy otrzymasz błędy podczas rozpoczęcia drugiej instancji PHP, PHP56-PHP-FPM, Polityka Selinux może blokować ją od uruchomienia. Jeśli Selinux jest w środku Tryb egzekwowania, ustaw to tryb dopuszczalny, Następnie spróbuj ponownie uruchomić usługę.

# getenforce # setenforce 0 

Krok 6: Skonfiguruj strony internetowe z uprawnieniami

13. W tym momencie możesz teraz stworzyć niezbędne katalogi dla swoich stron internetowych /var/www/html/. Musisz także tworzyć katalogi do przechowywania dzienników w następujący sposób:

---------------- Strona internetowa 1 ---------------- # mkdir -p/var/www/html/example1.com/ # mkdir -p/var/log/nginx/example1.com/ ---------------- Strona internetowa 2 ---------------- # mkdir -p/var/www/html/example2.com/ # mkdir -p/var/log/nginx/example2.com/ 

14. Ustaw odpowiednie uprawnienia do własności we wszystkich katalogach.

---------------- Strona internetowa 1 ---------------- # chown -r root: nginx/var/www/html/example1.com/ # chmod -r 755/var/www/html/example1.com/ # chown -r root: nginx/var/log/nginx/example1.com/ # chmod -r 660/var/log/nginx/example1.com/ ---------------- Strona internetowa 2 ---------------- # chown -r root: nginx/var/www/html/example2.com/ # chmod -r 755/var/www/html/example2.com/ # chown -r root: nginx/var/log/nginx/example2.com/ # chmod -r 660/var/log/nginx/example2.com/ 

Krok 7: Ustaw bloki serwera Nginx dla stron internetowych

15. Teraz skonfiguruj, w jaki sposób Nginx przetwarza żądania na twoich stronach internetowych za pomocą plików konfiguracyjnych bloku serwera, które powinny być zlokalizowane /etc/nginx/conf.D/.

Utwórz pliki konfiguracyjne dla swoich stron internetowych kończących .conf rozszerzenie.

# vi/etc/nginx/conf.d/przykład1.com.conf # vi/etc/nginx/conf.d/przykład2.com.conf 

Następnie wklej następujące konfiguracje bloku serwera w odpowiednich plikach.

Strona internetowa 1

Konfiguracja na przykład1.com
serwer Słuchaj 80; Server_name Przykład 1.com www.Przykład 1.com; root/var/www/html/example1.com/; indeks indeksu.Wskaźnik PHP.Indeks HTML.HTM; #Carset Koi8-R; access_log/var/log/nginx/example1.com/example1_access_log; error_log/var/log/nginx/example1.com/example1_error_log błąd; lokalizacja / try_files $ URI $ URI / / Index.php?$ query_string;  # Przekaż skrypty PHP do serwera FastCGI słuchania w 127.0.0.Lokalizacja 1: 9000 ~ \.php $ root/var/www/html/example1.com/; fastcgi_pass 127.0.0.1: 9000; #Set Port dla PHP-FPM do słuchania w indeksie FastCGI_Index.php; fastcgi_param script_filename $ dokument_root $ fastcgi_script_name; Dołącz fastcgi_params; obejmują/etc/nginx/fastcgi_params;  

Strona internetowa 2

Konfiguracja na przykład2.com
serwer Słuchaj 80; Server_name Przykład 2.com www.Przykład2.com; root/var/www/html/example2.com/; indeks indeksu.Wskaźnik PHP.Indeks HTML.HTM; #Carset Koi8-R; access_log/var/log/nginx/example2.com/example2_access_log; error_log/var/log/nginx/example2.com/example2_error_log błąd; lokalizacja / try_files $ URI $ URI / / Index.php?$ query_string;  # Przekaż skrypty PHP do serwera FastCGI słuchania w 127.0.0.Lokalizacja 1: 9000 ~ \.php $ root/var/www/html/example2.com/; fastcgi_pass 127.0.0.1: 9001; #Set Port dla php56-php-fpm do słuchania w indeksie fastcgi_index.php; fastcgi_param script_filename $ dokument_root $ fastcgi_script_name; Dołącz fastcgi_params; obejmują/etc/nginx/fastcgi_params;  

16. Upewnij się, że masz następującą linię w części zamykającej bloku HTTP /etc/nginx/nginx.conf. Pomaga uwzględnić wszystkie pliki konfiguracyjne wewnątrz /etc/nginx/conf.D/ katalog, gdy Nginx działa.

obejmują/etc/nginx/conf.D/*.conf; 

Krok 8: Testowanie różnych wersji PHP

17. Na koniec musisz przetestować, że Twój serwer używa dwóch wersji PHP. Możesz stworzyć bardzo podstawowy informacje.php skrypt w dokumentach głównych katalogów twoich stron internetowych, jak pokazano.

# echo "">/var/www/html/example1.com/info.php # echo "">/var/www/html/example2.com/info.php 

18. Aby zastosować wszystkie zmiany, które dokonałeś powyżej, musisz ponownie uruchomić Nginx, PHP-FPM I PHP56-PHP-FPM. Ale przede wszystkim możesz sprawdzić, czy pliki konfiguracyjne Nginx dla wszelkich błędów składniowych.

# nginx -t # Systemctl restart nginx php-fpm php56-php-fpm 
Sprawdź konfigurację Nginx

19. Jest jeszcze jedna ostatnia rzecz do zrobienia, zwłaszcza jeśli używasz serwera lokalnie, musisz skonfigurować lokalne DN za pomocą /etc/hosts Plik, jak pokazano w zrzucie ekranu poniżej.

192.168.56.10 Przykład 1.Com Przykład 1 192.168.56.10 Przykład2.com przykład2 
Dodaj strony internetowe do pliku Hosts

20. Na koniec otwórz przeglądarkę internetową i wpisz następujące adresy, aby zweryfikować wersje PHP zainstalowane w systemie.

http: // przykład1.com/indeks.php http: // przykład2.com/indeks.php 
Sprawdź PHP 7.1 wersja Sprawdź PHP 5.6 wersja

Otóż ​​to! Teraz możesz wdrażać pliki i testować strony internetowe z różnymi wersjami PHP. Jeśli masz jakieś dodatki lub pytania, skorzystaj z poniższego formularza komentarza.