ホームページ >バックエンド開発 >PHPチュートリアル >FCGI モードで 3 つのホスト間で LAMP を構築する詳細な説明
前述:
このビルドでは 3 つの CentOS 7 仮想マシンが使用されます。1 つ目はリクエストを受信する httpd サーバーとして構成され、2 つ目は FCGI モードで php を構成します。これは、独立したサービス プロセスとアイドル プロセスを備えた別個のサーバー ホストであり、httpd サーバーからの動的リソース呼び出し要求を待機し、php スクリプトを実行し、動的に応答します。3 番目のホストは、リレーショナルを格納する MariaDB (Mysql) データベース サーバーとして構成されます。データ。
各仮想ホストの IP 情報は次のとおりです。
| 172.16.49.2、CentOS 7
| RPM: httpd-2.4.6-31.el7.centos.x86_64
| |||||||||
FCGI ホスト
| 172.16.49.3、CentOS 7
| RPM: php-fpm-5.4.16- 23. el7_0.3.x86_64
| |||||||||
MariaDB ホスト
| 172.16.49.4、CentOS 7
|
RPM: mariadb-5.5.41-2.el7_0.x86_64
|
1. CentOS 6 シリーズ
PHP-5.3.2 およびそれ以前のバージョン: fpm メカニズムはデフォルトではサポートされていません。自分でパッチを適用し、コンパイルしてインストールする必要があります。
httpd-2.2: デフォルトではサポートされていません。fcgi プロトコルをサポートします。fcgi モジュールを自分でコンパイルする必要があります。
解決策: httpd-2.4、php-5.3.3 以降をコンパイルしてインストールします。
2. CentOS 7 シリーズ
172.16.49.2: [root@localhost ~]# yum install -y httpd
include=/etc/php-fpm.d/*.conf | 包含 /etc/php-fpm.d/*.conf 的配置信息 |
pid = /run/php-fpm/php-fpm.pid | 进程的 PID 文件位置 |
error_log = /var/log/php-fpm/error.log | 错误日志位置 |
log_level = notice | 日志级别,默认 notice 级别 |
;emergency_restart_threshold = 0 | 紧急重启的临界值 |
;emergency_restart_interval = 0 | 紧急重启的间隔 |
;process_control_timeout = 0 | 进程控制超时时长 |
daemonize = no | 是否运行在后台,运行在前台可方便查看 |
include=/etc/php-fpm.d/*.conf | include/etc /php-fpm.d/*.conf | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pid = /run/ php-fpm/php-fpm.pid | プロセスの PID ファイルの場所 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
error_log = /var/log/php-fpm/error.log | エラー ログの場所 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
log_level = Notice | ログ レベル、デフォルトの通知レベル | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;emergency_restart_threshold = 0 | 緊急再起動しきい値 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;emergency_restart_interval = 0 | 緊急再起動間隔 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;process_control_timeout = 0 | プロセス制御タイムアウト期間 | tr>||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
daemonize = no | バックグラウンドで実行するか、フォアグラウンドで実行するかを簡単に確認できます | テーブル>
| は、この行の情報をコメント化することを意味します
| ||||||||||||||||||||||||||||||||
listen = 127.0.0.1:9000
| リスニング ポート、0.0.0.0 はこのマシンのすべてのアドレスを表します。
| ||||||||||||||||||||||||||||||||
;listen.backlog = -1 td> | バックアップ待機キューの長さ、-1 は無制限を意味します | ||||||||||||||||||||||||||||||||
listen.allowed_clients = 127.0.0.1 | 認可によりホスト、IP ベースの制御メカニズムのリクエストが許可されます。コメントは何が許可されているかを示します | ||||||||||||||||||||||||||||||||
;listen.owner = nothing | サービスプロセスを監視するホストはデフォルトでどのユーザーとして実行されますか? none は通常のユーザーを表しますか? | ||||||||||||||||||||||||||||||||
;listen.group = none | サービスプロセスをリッスンするホストはデフォルトでどのユーザーグループとして実行されますか? td> | ||||||||||||||||||||||||||||||||
;listen.mode = 0666 | サービスプロセスをリッスンするホストはデフォルトでどのような権限で実行されますか? | ||||||||||||||||||||||||||||||||
user = apache | ユーザー、RPM パッケージプロデューサーによって変更され、コンパイルとインストールは行われません結果 | ||||||||||||||||||||||||||||||||
group = apache | ユーザーグループ、RPM パッケージプロデューサーの変更、コンパイル、インストールは次のようになります。結果ではありません | ||||||||||||||||||||||||||||||||
pm = static|dynamic | プロセス コントローラーが子プロセスを生成する方法 | ||||||||||||||||||||||||||||||||
;pm.status_path = / ステータス | ステータスメカニズム | ||||||||||||||||||||||||||||||||
;ping.path = /ping | ping メカニズム。通常は監視メカニズムを提供するために使用されます | ||||||||||||||||||||||||||||||||
php_admin_value[error_log] = | 接続プールのエラー ログの場所 | ||||||||||||||||||||||||||||||||
php_admin_flag[log_errors] = on | エラーの有無 管理関連のフラグをログにオープンします | ||||||||||||||||||||||||||||||||
php_value[session.save_handler] = files | PHP セッションレコードの保存形式: ファイル | ||||||||||||||||||||||||||||||||
php_value[session.save_path] = | PHP セッション レコードのストレージ パス、クラスタリングが鍵 |
pm.start_servers= | 番号を開始します有効なプロセスの数 |
pm.min_spare_servers= | アイドルプロセスの最小数 td> |
pm.max_spare_servers= | アイドルプロセスの最大数 |
;pm.max_requests = | 各子プロセスは複数のプロセスを持つことができます 応答するリクエストの数、超過した場合は kill |
3. サービスの開始とステータスの表示
[root@localhost~]# systemctl start php-fpm.service
[root@localhost~]# systemctl status php-fpm.service
3. Web サーバーの構成とテスト
1. fcgi モジュールが httpd サービスにロードされていることを確認します
[root@localhost~ ]# httpd - M | grep fcgi
2. httpd 設定ファイルが fcgi モジュール オプション
[root@localhost ~]#cat /etc/ をロードしていることを確認します。 httpd/conf.modules.d /00-proxy.conf
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so がある場合、設定はモジュール
2 をロードできます。仮想ホスト構成モードでサイトを構成します (中央ホストを使用することもできます)
(1) テスト ページを削除します: [root@localhost ~]# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf. bck
(2) メイン設定ファイルの中央ホストセグメントをコメントします: # Document "/var/www/html"
(3) サイトのルート ディレクトリの場所を作成します: [root@localhost ~]# mkdir /www/fcgi-test -pv
(4) 仮想ホスト構成を作成します: [root@localhost ~]# vim /etc /httpd/conf.d/vritual.conf
サーバー名localhost :80
サーバー名www.fcgi.com
DocumentRoot"/www/fcgi-test"
<ディレクトリ"/www/fcgi-test">
OptionsNone
AllowoverrideNone
Requireall Grant
(5) httpd 構成ファイルの構文を検出します: [root@localhost ~]# httpd -t
3.. 設定ファイルの転送
[root@localhost~]# vim /etc/httpd/conf.d/fcgi.conf
ProxyRequestsOff
ProxyPassMatch ^/(.*.php)$ fcgi://127.16.49.3 :9000/www/fcgi-test/$1
注:
1) 2 番目のステートメントは、マッピング all を定義します。 php サーバーへの 172.16.49.2Web サーバーへのアクセス クエリ実行
2) php サーバー上にマッピング検索ディレクトリを作成します。このディレクトリは Web サーバーのサイト ルート ディレクトリとは異なる場合があります。同じ
[root@localhost~]# mkdir -pv / www/fcgi-test/
4. サービスを開始します
[root@localhost~] # systemctl start httpd.service
[root@localhost~]# systemctl status httpd .service
5.
(1)172.16 をテストします。 49.2/www/fcgi-test/index.html と定義し、ブラウザで 172.16.49.2/index.html
と入力します (2) にindex.phpを作成しますマッピング プロキシ ディレクトリ 172.16.49.3 を指定し、phpinfo() テスト ステートメントを定義し、ブラウザに 172.16.49.2 と入力します。 /index.php
(3) 上記と同様に、index.php を 172.16.49.2 の下に配置し、ブラウザに 172.16.49.2/index.php と入力します
この時点で、サーバーは .php リクエストを送信します
(4) 172.16.49.3 に上記のようにマッピングディレクトリにindex.htmlを置き、172.16.49.2と入力します。ブラウザ内の /index.html
静的ファイルindex.html が 172.16.49.2 で見つからず、エラーが報告されます
4. MariaDB データベース構成テスト
1. ホスト名のデコードを無効にします
[root@localhost~]# vim /etc/my.cnf
[mysqld] セクションに次のステートメントを追加します。 ON
2. サービスを開始します
[root@localhost~]# systemctl start mariadb.server
3. 認可はリモートから実行できます ログインユーザー
[root@localhost~]# mysql
MariaDB モニターへようこそ。コマンドは ; または g で終わります。
MariaDB 接続 ID は 2
サーバーのバージョン: 5.5 .41-MariaDB MariaDB Server
Copyright (c) 2000, 2014,Oracle, MariaDB Corporation Ab およびその他
ヘルプについては、「help;」または「h」を入力してください。現在の inputstatement をクリアします。
MariaDB [(none)]>Grant ALL ON *.* TO 'root'@'172.16.%.%' IDENTIFIED BY 'xuding'
4 .mariadb データベースのリモート接続
172.16.49.3: [root@localhost ~]# mysql -uroot -h172.16.49.4 -pxuding
5.php およびmariadb サービス接続テスト
172.16.49.3php ホスト上にindex.php テスト ページを作成し、次のコードを記述します:
$conn = mysql_connect ('172.16.49.4','root','xuding');
if($conn)
echo "OK";
else
echo "Failure";
?>
ブラウザに 172.16.49.2/index.php と入力してテストします。OKZ が表示されれば、php と mysql は接続できます
LAMP プラットフォームは Web サイトの運用を高速化するために Xcache と Memcached をインストールします http://www.linuxidc.com/Linux/ 2015-06/ 118835.htm
CentOS 7 での LAMP プラットフォーム環境の構築 http://www.linuxidc.com/Linux/2015-06/118818.htm
CentOS 6.5 システムのインストール構成 LAMP (Apache) +PHP5+MySQL) サーバー環境 http://www.linuxidc.com/Linux/2014-12/111030.htm
Ubuntu 14.04 LAMP+phpMyAdmin の構成 PHP (5.5.9) 開発環境 http://www.linuxidc.com/Linux/2014-10/107924.htm
Ubuntu 14.10 での LAMP サービスのインストール 画像とテキスト 詳細な説明 http://www.linuxidc.com/Linux/2014-12/110082.htm
LAMP と NFS を組み合わせて小規模なブログ サイトを構築しました http://www.linuxidc.com/Linux/ 2015-08/121029 .htm
この記事の永久更新リンク アドレス : http://www.linuxidc.com/Linux/2016-01/127608.htm