Aufgrund eines besseren Verständnisses dessen, was ich erreichen möchte, dankMarkierenund sein vorherigerAntwort, ich poste eine (hoffentlich) klarere und etwas andere Variante meiner vorherigen Frage, da dieser Thread den Sättigungspunkt erreicht hat;
Ich versuche, mehrere WordPress-Sites auf einem Nginx-Server laufen zu lassen, wobei jede Site eine andere PHP-Version erfordert. Dies möchte ich erreichen, indem ich mehrere Versionen von PHP-FPM verwende, die jeweils eine andere PHP-Version ausführen, getrennt von Nginx.
Ich möchte dann .conf
Dateien verwenden, um zu steuern, welchen PHP-FPM-Server jede Site verwendet, damit die Site mit der gewünschten PHP-Version ausgeführt werden kann.(Gemäß derKommentareAbschnitt)
Derzeit sieht mein Serverblock für Testsite1 so aus und führt die Standard-PHP-Version aus.
server {
listen 80;
listen [::]:80;
root /usr/share/nginx/html/testsite1;
index index.php index.html index.htm;
server_name local.testsite1.com;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
Dieser befindet sich in /var/nginx/sites-available/testsite1
und ist symbolisch verknüpft mit /var/nginx/sites-enabled/testsite1
. Jeder Serverblock befindet sich in einer separaten Datei innerhalbsites-available
testsite1
testsite2
testsite3
Ich habe eine andere Version von PHP (5.3.3) kompiliert, bin mir aber nicht sicher, wie ich mehrere PHP-FPM-Server einrichte und wie ich jeden auf eine andere PHP-Version „verweisen“ lasse. Ich brauche auch eine Anleitung, wie ich mehrere .conf
Dateien einrichte, um festzulegen, welchen PHP-FPM-Server jede WordPress-Site verwenden soll.
(im Grunde brauche ich während des gesamten Prozesses Hilfe ...)
Antwort1
Meiner Erfahrung nach reicht für Ihren Fall eine einfache Serverstruktur wie die folgende aus.
Annahme
Für die Einrichtung haben Sie etwa zwei Stunden Zeit.
Annahme zur Serverumgebung
1 x Nginx-Server (Frontend, zur Verarbeitung statischer Dateien)
2 x PHP-FPM-Server (Back-End, zur Verarbeitung von PHP-Skripten)
1 x Datenbankserver (entweder auf einem anderen separaten Server oder auf einem Nginx-Server ist ok)
Der Zugriff auf den Nginx-Server erfolgt überÖffentliches NetzwerkUndPrivates Netzwerk
Auf PHP-FPM-Server und DB-Server kann nur über den Nginx-Server zugegriffen werden (Privates Netzwerk)
Öffentliches Netzwerk, was bedeutet, dass der Zugriff für Personen mit Internetzugang möglich ist.
Privates Netzwerk, die in einer bestimmten Netzwerkgruppe angezeigt werden. (Klasse A, Klasse B, Klasse C. B. 192.xx.xx.xx oder 10.xx.xx.xx oder 172.xxx.xxx.xxx)
Wenn Sie VPS auf Linode und DigitalOcean verwenden (beide bieten private Netzwerk-IPs) können Sie den dort bereitgestellten Anweisungen zum Einrichten folgen.
Wenn nicht, können Sie Ihre eigeneVPN (virtuelles privates Netzwerk)oder verwenden Sie Ihren Router, um einen zu erstellen. Das ist ganz einfach: Sie können bei GOOGEL alles suchen, was Sie benötigen.
Wenn Sie Ubuntu verwenden, dauert die Erstellung eines VPN mit Konfiguration weniger als 5 Minuten.
Bevor Sie den nächsten Schritt ausführen, sollten Sie die Firewall-Regeln einrichten, um potenzielle Angriffe zu verhindern. (Mithilfe von IPTABLES oder dessen Wrapper FirewallD)
Obwohl wir PHP-FPM als dediziertes Nginx-Paket erstellen, können die PHP-Dateien von Websites nicht gleichzeitig über den TCP-Port und den Unix-Socket übergeben werden.
Daher müssen Sie Ihren Stammordner für den Webserver verwalten.
Optionen zum Verwalten des Website-Ordners
Hochladen Ihrer Websites auf Nginx-Server UND PHP-FPM-Server mit dem GLEICHEN Ordnerpfad
Schreiben Sie ein Skript zum Synchronisieren von Dateien auf alle Ihre Server
Verwenden Sie GIT für alle Ihre Server.
Erstellen eines NFS (Network File System) auf Nginx oder einem anderen dedizierten Server
Wenn Sie ein *nix-System verwenden, empfehle ich die vierte Option, da
Verwalten Sie zunächst alle Dateien Ihrer Websites auf einem Server
Zweitens, sehr leicht zu pflegen
Drittens: Backup in Minuten (das sollte eine andere Frage sein)
※ Der NFS-Server fungiert als reiner Speicherserver für Ihre Websites
Manche Leute sind möglicherweise der Meinung, dass die Verwendung von NFS zu Netzwerklatenz führt. Für die Verwaltung mehrerer Websites ist NFS jedoch eine effiziente und einfache Methode.
Sie können bei Google nach „NFS unter Linux“ suchen, um die Installation und Konfiguration dieses Schritts abzuschließen. Bei neueren Versionen dauert es etwa eine Stunde.
Beachten Sie jedoch, dass sich der NFS-Server in einemPrivates Netzwerksowie.
Wenn NFS, PHP-FPM und Nginx beide im selbenPrivates Netzwerk, die Netzwerklatenz sollte geringer sein.
Dann konfigurieren wir dienginx.conf
Annahme
Ihre öffentliche Nginx-IP ist 202.123.abc.abc, hören Sie 80 (oder 443, wenn SSL aktiviert ist)
Ihr PHP-FPM 5.5 ist auf 192.168.5.5, hören Sie 9008
Ihr PHP-FPM 5.6 ist auf 192.168.5.6, hören Sie 9008
(weiteres Beispiel) Ihr HHVM 3.4 befindet sich auf 192.168.5.7, hören Sie 9008
Und Sie denken, dass PHP 5.5 Ihre am häufigsten verwendete PHP-Version ist
server {
listen 80 default server;
server_name frontend.yourhost.ltd;
#root PATH is where you mount your NFS
root /home/www;
index index.php;
location ~ \.php$ {
try_files $uri $uri/ = 404;
fastcgi_pass 192.168.5.5:9008;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE open_basedir=$document_root:/tmp/:/proc/;
include fastcgi_params;
fastcgi_buffer_size 512k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
fastcgi_intercept_errors on;
}
}
#Here to set up you vhosts
include vhosts/*.conf;
Die obigen Zeilen sollten vor die letzte gesetzt werden}
Erstellen Sie dann einen Ordner namens vhosts
im Ordner vonnginx.conf
Annahme
Sie haben eine andere Anwendung, die PHP 5.6 verwendet
Sie haben eine andere Anwendung, die HHVM verwendet
Für PHP 5.6 (vhosts/app1.conf)
server {
server_name app1.yourhost.ltd;
listen 202.123.abc.abc:80;
index index.php;
#root PATH is where you mount your NFS
root /home/app1;
#Include your rewrite rules here if needed
include rewrite/app1.conf;
location ~ \.php($|/){
try_files $uri $uri/ = 404;
fastcgi_pass 192.168.5.6:9008;
fastcgi_index index.php;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param PHP_VALUE open_basedir=$document$
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
access_log /var/wwwlog/app1/access.log access;
error_log /var/wwwlog/app1/error.log error;
}
Für HHVM (vhosts/app2.conf)
server {
server_name app2.yourhost.ltd;
listen 202.123.abc.abc:80;
index index.php;
#root PATH is where you mount your NFS
root /home/app2;
#Include your rewrite rules here if needed
include rewrite/app2.conf;
location ~ \.hh($|/){
try_files $uri $uri/ = 404;
fastcgi_pass 192.168.5.7:9008;
fastcgi_index index.hh;
include fastcgi_params;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.hh)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param PHP_VALUE open_basedir=$document$
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
access_log /var/wwwlog/app2/access.log access;
error_log /var/wwwlog/app2/error.log error;
}
Auf diese Weise können Sie sogar verschiedene SSL-Zertifikate für Ihre virtuellen Hosts hinzufügen.
Starten Sie Ihren Server neu und viel Spaß!
BEARBEITET
Um verschiedene Versionen von PHP-FPM zu installieren, können Sie es selbst kompilieren oder den vorhandenen Stack verwenden.
Empfehlen Sie https://github.com/centos-bz/EZHTTP/archive/master.zip
, Ihre Zeit zu sparen
Methode verwenden (Vorausgesetzt, auf Ihrem Computer sind WGET und UNZIP installiert)
$ wget --kein-Check-Zertifikathttps://github.com/centos-z/EZHTTP/archive/master.zip?time=$(Datum +%s) -O server.zip
$ entpacken Sie server.zip
$ cd EZHTTP-Master
$ chmod +x start.sh
$ ./start.sh
Wählen Sie 1 im ersten Bildschirm
Wählen Sie 1 im zweiten Bildschirm (LNMP)
Wählen Sie 1, wenn Sie gefragt werden, welche Version von Nginx Sie installieren möchten (nicht installieren).
Wählen Sie 1, wenn Sie gefragt werden, welche Version von MySQL Sie installieren möchten (nicht installieren).
Wählen Sie die gewünschte Version aus, wenn Sie gefragt werden, welche PHP-Version Sie installieren möchten
Alle Einstellungen bleiben auf den Standardeinstellungen (damit Sie PHP-FPM in Zukunft einfacher verwalten können)
Wählen Sie aus, welche zusätzlichen Erweiterungen Sie möchten. Sie können diese natürlich ignorieren, da alle allgemeinen Erweiterungen später installiert werden.
Lassen Sie diese Shell mit der Kompilierung beginnen!