Mark と彼の以前の answer のおかげで私が達成したいことをよりよく理解するために、(うまくいけば)より明確で少しだけ投稿しますそのスレッドが飽和に達したときの私の前の質問の別のバリエーション;
Nginxサーバーで複数のWordPress=サイトを実行します。各サイトには異なるバージョンのPHPが必要です。異なるバージョンを実行する複数のバージョンのPHP-FPMを使用してこれを実現したいと考えています。 nginxとは別のバージョンのPHP。
次に、.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サイトが使用します。
(基本的に、私はプロセス全体を通して手が必要です...)
私の経験では、次のような単純なサーバー構造で十分です。
仮定
セットアップには約2時間かかります。
サーバー環境の想定
1 x Nginxサーバー(フロントエンド、静的ファイルを処理するため)
2 x PHP-FPMサーバー(バックエンド、処理するPHPスクリプト)
1 xデータベースサーバー(別の別のサーバーまたはNginxサーバーのどちらでも問題ありません)
Nginxサーバーには、Public NetworkおよびPrivate Networkでアクセスできます
PHP-FPMサーバーとDBサーバーは、Nginxサーバーからのみアクセスできます(Private Network)
Public Network、つまりインターネットを持っている人がアクセスできることを意味します。
プライベートネットワーク、特定のネットワークグループで見ることができます。 (クラスA、クラスB、クラスC。例:192.xx.xx.xxまたは10.xx.xx.xxまたは172.xxx.xxx.xxx)
LinodeとDigitalOceanでVPSを使用している場合、どちらもプライベートネットワークIPを提供します。それらの指示に従ってセットアップできます。
そうでない場合は、独自のVPN(仮想プライベートネットワーク)を設定するか、ルーターを使用して構築することができます。簡単です。すべてのものをGOOGLEできます必要。
Ubuntuを使用している場合、構成を使用してVPNを作成すると、5分未満で済みます。
次のステップの前に、ファイアウォールルールを設定して潜在的な攻撃を防ぐことをお勧めします。 (IPTABLESまたはそのラッパーFirewallDを使用)
PHP-FPMはNginxから専用として作成していますが、PHP Webサイトのファイルは、TCPポートとUnixソケットの両方を介して渡すことはできません。
したがって、Webサーバーのルートフォルダーを管理する必要があります。
Webサイトフォルダーを管理するためのオプション
同じフォルダーPATHを使用してWebサイトをNginxサーバーとPHP-FPMサーバーにアップロードする
すべてのサーバーの同期ファイルにスクリプトを記述します
すべてのサーバーにGITを使用します。
Nginxまたは別の専用サーバーでのNFS(ネットワークファイルシステム)の作成
* nixシステムを使用している場合は、4番目のオプションをお勧めします。
まず、すべてのWebサイトファイルを1つのサーバーで管理します
第二に、メンテナンスが非常に簡単
3番目に、数分でバックアップ(これは別の質問になります)
※NFSサーバーはあなたのウェブサイトのための純粋なストレージサーバーとして機能します
NFSを使用するとネットワーク遅延が発生する場合がありますが、管理を待機している複数のWebサイトについては、NFSが効率的で簡単な方法です。
「LinuxでのNFS」をGOOGLEして、このステップのインストールと構成を完了することができます。新しい場合は約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 version
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;
上記の行は最後の行の前に置く必要があります}
次に、nginx.conf
のフォルダ内にvhosts
というフォルダを作成します
仮定
別の1つのアプリケーションが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;
}
このようにして、vhostに別のSSL証明書を追加することもできます。
サーバーを再起動してお楽しみください!
[〜#〜]編集済み[〜#〜]
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= $(date +%s)-O server.Zip
$ unzip server.Zip
$ cd EZHTTP-master
$ chmod + x start.sh
$ ./start.sh
最初の画面で1を選択します
2番目の画面で1を選択します(LNMP)
インストールするnginxのバージョンを確認するときに1を選択します(do_not_install)
インストールするMySQLのバージョンを確認するときに1を選択します(do_not_install)
インストールするPHPのバージョンを確認するときに、必要なバージョンを選択します
すべての設定をデフォルトのままにします(将来、PHP-FPMを簡単に管理できるようにします)
必要な追加の拡張機能を選択します。もちろん、すべての一般的な拡張機能が後でインストールされるため、無視できます。
このシェルでコンパイルを始めましょう!