덕분에 내가 달성하고자 하는 것이 무엇인지 더 잘 이해하게 되었기 때문에표시그리고 그의 이전답변, 해당 스레드가 포화 상태에 도달함에 따라 이전 질문에 대해 (희망적으로) 더 명확하고 약간 다른 변형을 게시하고 있습니다.
nginx 서버에서 여러 WordPress 사이트를 실행하려고 하는데, 각 사이트에는 서로 다른 버전의 PHP가 필요합니다. nginx와 별도로 서로 다른 버전의 PHP를 실행하는 여러 버전의 PHP-FPM을 사용하여 이를 달성하고 싶습니다.
.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
각 WordPress 사이트에서 사용할 PHP-FPM 서버를 정의하기 위해 여러 파일을 설정하는 방법에 대한 지침이 필요합니다 .
(본질적으로 전 과정 내내 손을 잡고 있어야 하는데...)
답변1
내 경험상, 귀하의 경우에는 다음과 같은 간단한 서버 구조로 충분합니다.
추정
설정하는 데 약 2시간이 소요됩니다.
서버 환경 가정
1 x Nginx 서버(프런트엔드, 정적 파일 처리용)
2 x PHP-FPM 서버(백엔드, PHP 스크립트 처리용)
1 x 데이터베이스 서버(다른 별도의 서버나 Nginx 서버 모두 괜찮습니다)
Nginx 서버는 다음을 통해 액세스할 수 있습니다.공용 네트워크그리고사설망
PHP-FPM 서버와 DB 서버는 Nginx 서버(사설망)
공용 네트워크, 이는 인터넷이 있는 사람들이 액세스할 수 있음을 의미합니다.
사설망, 특정 네트워크 그룹에서 볼 수 있습니다. (클래스 A, 클래스 B, 클래스 C. Ex, 192.xx.xx.xx 또는 10.xx.xx.xx 또는 172.xxx.xxx.xxx)
Linode 및 DigitalOcean에서 VPS를 사용하는 경우 둘 다 개인 네트워크 IP를 제공하므로 해당 지침에 따라 설정할 수 있습니다.
그렇지 않은 경우 직접 설정할 수 있습니다.VPN(가상사설망)또는 라우터를 사용하여 라우터를 구축하는 것은 쉽습니다. 필요한 모든 것을 GOOGLE로 검색할 수 있습니다.
Ubuntu를 사용하는 경우 구성이 포함된 VPN을 만드는 데 드는 비용은 5분 미만입니다.
다음 단계 전에 잠재적인 공격을 방지하기 위해 방화벽 규칙을 설정하는 것이 좋습니다. (IPTABLES 또는 해당 래퍼인 FirewallD를 사용하여)
그러나 Nginx에서 PHP-FPM을 전용으로 만들었지만 웹사이트의 PHP 파일은 TCP 포트와 Unix 소켓을 모두 통과할 수 없습니다.
따라서 웹 서버의 루트 폴더를 관리해야 합니다.
웹사이트 폴더 관리 옵션
동일한 폴더 경로를 사용하여 Nginx 서버 및 PHP-FPM 서버에 웹사이트 업로드
모든 서버에 대한 동기 파일에 대한 스크립트 작성
모든 서버에 GIT를 사용합니다.
Nginx 또는 다른 전용 서버에서 NFS(네트워크 파일 시스템) 생성
*nix 시스템을 사용하는 경우 다음과 같은 이유로 네 번째 옵션을 제안합니다.
먼저, 하나의 서버에서 모든 웹사이트 파일을 관리하세요
둘째, 유지 관리가 매우 쉽습니다.
세 번째, 몇 분 만에 백업(이건 또 다른 질문이 되어야 합니다)
※ NFS 서버는 웹사이트의 순수 스토리지 서버 역할을 합니다.
어떤 사람들은 NFS를 사용하면 네트워크 대기 시간이 발생한다고 생각할 수도 있지만, 관리를 기다리는 여러 웹 사이트의 경우 NFS가 효율적이고 간단한 방법입니다.
"Linux의 NFS"를 검색하여 이 단계의 설치 및 구성을 완료할 수 있으며 최신 버전의 경우 약 1시간이 소요됩니다.
그러나 NFS 서버는 다음 위치에 있어야 합니다.사설망또한.
NFS, PHP-FPM, Nginx가 모두 동일한 경우사설망, 네트워크 대기 시간이 짧아야 합니다.
그럼 구성해보자nginx.conf
추정
Nginx 공용 IP는 202.123.abc.abc입니다. 수신 대기 시간은 80(또는 SSL이 활성화된 경우 443)입니다.
귀하의 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 인증서를 추가할 수도 있습니다.
서버를 다시 시작하고 즐기십시오!
편집됨
다양한 버전의 PHP-FPM을 설치하려면 직접 컴파일하거나 기존 스택을 사용하면 됩니다.
https://github.com/centos-bz/EZHTTP/archive/master.zip
시간을 절약하는 것이 좋습니다
방법 사용(컴퓨터에 WGET 및 UNZIP이 설치되어 있다고 가정)
$ wget --no-check-인증서https://github.com/centos-z/EZHTTP/archive/master.zip?time=$(날짜 +%s) -O 서버.zip
$ 서버.zip 압축 해제
$ cd EZHTTP-마스터
$ chmod +x start.sh
$ ./start.sh
첫 화면에서 1번을 선택하세요.
두 번째 화면에서 1번 선택(LNMP)
설치하려는 nginx 버전을 물을 때 1을 선택하십시오(do_not_install).
설치하려는 mysql 버전을 물을 때 1을 선택하십시오(do_not_install).
어떤 버전의 PHP를 설치하고 싶은지 물을 때 원하는 버전을 선택하세요.
모든 설정을 기본값으로 유지합니다. (향후 PHP-FPM을 쉽게 관리할 수 있도록 합니다.)
원하는 추가 확장을 선택하세요. 물론 모든 일반 확장이 나중에 설치되므로 무시할 수 있습니다.
이 쉘의 컴파일을 시작해보세요!