Благодаря лучшему пониманию того, чего я хочу достичь благодаря отметка и его предыдущие ответ, Я публикую (надеюсь) более четкую и немного отличающуюся вариацию моего предыдущего вопроса, поскольку эта ветка достигла насыщения;
Я пытаюсь запустить несколько сайтов WordPress на сервере nginx, где для каждого сайта требуется своя версия PHP. Я хочу добиться этого, используя несколько версий PHP-FPM, каждая из которых работает с другой версией PHP, отдельной от nginx.
Затем я хочу использовать .conf
файлы, чтобы контролировать, какой сервер PHP-FPM использует каждый сайт, позволяя этому сайту работать на желаемой версии PHP. (В соответствии с Комментарии раздел)
В настоящее время мой серверный блок для testsite1 выглядит так, на нем установлена версия PHP по умолчанию.
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;
}
}
Это находится в /var/nginx/sites-available/testsite1
и связан с символом /var/nginx/sites-enabled/testsite1
. Каждый серверный блок находится в отдельном файле внутри sites-available
testsite1
testsite2
testsite3
Я скомпилировал другую версию PHP (5.3.3), но я не уверен, как настроить несколько серверов PHP-FPM и как сделать так, чтобы каждый «указывал» на другую версию PHP. Мне также нужно руководство по настройке нескольких .conf
файлы, чтобы определить, какой сервер PHP-FPM будет использовать каждый сайт WordPress.
(по сути, мне нужно держать руку на протяжении всего процесса ...)
По моему опыту, простая структура сервера выглядит следующим образом, чего достаточно для вашего случая.
Предположение
У вас есть около двух часов, чтобы их настроить.
Допущение серверной среды
1 сервер Nginx (Front-end, для обработки статических файлов)
2 x PHP-FPM-сервер (Back-end, для обработки PHP-скрипта)
1 x сервер базы данных (можно на другом отдельном сервере или на сервере Nginx)
Доступ к серверу Nginx можно получить Публичная сеть и Частная сеть
Доступ к серверам PHP-FPM и серверу БД может получить только сервер Nginx (Частная сеть)
Публичная сеть, что означает, что к нему могут получить доступ люди, у которых есть Интернет.
Частная сеть, который можно увидеть в определенной сетевой группе. (Класс A, класс B, класс C. Ex, 192.xx.xx.xx или 10.xx.xx.xx или 172.xxx.xxx.xxx)
Если вы используете VPS на Linode и DigitalOcean, оба из них предоставляют IP-адрес частной сети, вы можете следовать их инструкциям по настройке.
Если нет, вы можете настроить свой собственный VPN (виртуальная частная сеть) или используйте свой маршрутизатор, чтобы построить его, это просто, вы можете использовать GOOGLE все, что вам нужно.
Если вы используете Ubuntu, создание VPN с конфигурацией стоит менее 5 минут.
Перед следующим шагом предложите вам настроить правила брандмауэра для предотвращения потенциальных атак. (Используя IPTABLES или его оболочку FirewallD)
Хотя мы делаем PHP-FPM выделенным из Nginx, однако файлы PHP веб-сайтов не могут передаваться через TCP-порт и Unix Socket.
Таким образом, вам нужно управлять корневой папкой для веб-сервера.
Параметры для управления папкой веб-сайта
Загрузка ваших сайтов на сервер Nginx И серверы PHP-FPM с ОДНОЙ папкой PATH
Напишите сценарий для синхронных файлов на всех ваших серверах
Использование GIT на всех ваших серверах.
Создание NFS (сетевой файловой системы) на Nginx или другом выделенном сервере
Если вы используете систему * nix, я предлагаю четвертый вариант, потому что
Во-первых, управляйте всеми файлами своих сайтов на одном сервере
Во-вторых, очень проста в обслуживании
В-третьих, резервное копирование в считанные минуты (это должен быть другой вопрос)
※ Сервер NFS действует как чистый сервер хранения для ваших веб-сайтов
Некоторые люди могут подумать о том, что использование NFS может вызвать сетевую задержку, однако, что касается нескольких веб-сайтов, ожидающих управления, NFS является эффективным и простым способом.
Чтобы завершить установку и настройку на этом этапе, вы можете использовать GOOGLE «NFS в Linux», более новый вариант стоит около 1 часа.
Однако имейте в виду, что сервер NFS должен находиться в Частная сеть также.
Когда NFS, PHP-FPM и Nginx находятся в одном и том же Частная сеть, задержка в сети должна быть меньше.
Затем давайте настроим nginx.conf
Предположение
Ваш общедоступный IP-адрес Nginx - 202.123.abc.abc, слушайте 80 (или 443, если включен SSL)
Ваш PHP-FPM 5.5 находится на 192.168.5.5, слушайте 9008
Ваш PHP-FPM 5.6 находится на 192.168.5.6, слушайте 9008
(дополнительный пример) Ваш HHVM 3.4 находится на 192.168.5.7, слушайте 9008
И вы считаете, что PHP 5.5 - ваша самая используемая версия PHP.
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;
Вышеупомянутые строки следует поставить перед последними }
Затем перейдите к созданию папки с именем vhosts
внутри папки nginx.conf
Предположение
У вас есть еще одно приложение, использующее PHP 5.6
У вас есть другое приложение, использующее HHVM
Для 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;
}
Для 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;
}
Таким образом, вы даже можете добавить разные SSL-сертификаты для своих vhosts.
Перезагрузите сервер и наслаждайтесь!
ИЗМЕНЕНО
Чтобы установить разные версии PHP-FPM, вы можете скомпилировать его самостоятельно или используя существующий стек.
Рекомендовать https://github.com/centos-bz/EZHTTP/archive/master.zip
чтобы сэкономить ваше время
Используя метод (Предположим, на вашем компьютере установлены WGET и UNZIP)
$ wget --no-check-certificate https://github.com/centos-z/EZHTTP/archive/master.zip?time=$ (дата +% s) -O server.zip
$ unzip server.zip
$ cd EZHTTP-master
$ chmod + x start.sh
$ ./start.sh
Выберите 1 на первом экране
Выберите 1 на втором экране (LNMP)
Выберите 1, когда вас спросят, какую версию nginx вы хотите установить (do_not_install)
Выберите 1, когда вас спросят, какую версию mysql вы хотите установить (do_not_install)
Выберите, какую версию вы хотите, когда спросите, какую версию PHP вы хотите установить.
Оставьте все настройки по умолчанию (упростите управление PHP-FPM в будущем)
Выберите, какие дополнительные расширения вы хотите, конечно, вы можете игнорировать, потому что все распространенные расширения будут установлены позже.
Позвольте этой оболочке начать компиляцию!