CentOS7にWebサーバーのNginxを個別インストールします。今ではクラウドやレンタルサーバーに入ってるものを使う機会が多いので、作業することはあまりありなく忘れちゃってました。その備忘録です。
リポジトリを追加してyumコマンドでインストールするだけ。なんでこんなかんたんなこと忘れるんだろう?
いまは、クラウド・レンタルサーバーのサービスでインスタンス・イメージが用意されています。
(管理画面で選んでクリックするだけで済む。)
このへんのインストール作業はしない傾向です。まずはそれを検討しましょう。
今回はあくまで、『個人の力でやる』ためのものです。
検証CnetOSバージョン | 7.7.1908 |
Nginxのインストール
Nginxはyumでインストールできますが、リポジトリを追加しないといけません。
/etc/yum.repos.d/
にリポジトリファイルを作成します。
(centos/7/$base...はCentOSのメジャー・バージョン番号)
インストールします。
OS起動時に自動起動するように設定してnginxを起動しましょう。
ブラウザでWebサーバーにアクセスして、
このページが表示されたらOKです。
php-fpmインストール
PHPプログラムを使うならNginxはphp-fpmが必要です。yumコマンドでインストールします。
OS起動時に自動起動するように設定して起動しましょう。
ダウンロード先リポジトリに気をつける
リポジトリを指定しないとき、CentOS7に標準で入っているPHP5.6と同じリポジトリからインストールします。
PHP7のときはremiリポジトリからインストールします。
(remiはPHP7のパッケージ・リポジトリ)
もちろん、リポジトリでphp-fpmの最新バージョンはちがいます。
リポジトリはphpに合わせてください。
php-commonのバージョン違いでインストールに失敗します。
php-fpmってなんぞや?
php-fpmは、
PHPのFastCGI Process Manager
です。PHPプログラムを速く動かすためのWebサーバーの拡張機能。
(Apache httpdでも使える。)
Nginx + php-fpmでは、
Nginx | リバースプロキシサーバー |
php-fpm | Webサーバー |
と見たほうがしくみが分かりやすいです。
(Nginx + php-fpmでシステムとしての『Webサーバー』)
NginxはApacheなどほかのWebサーバーのリバースプロキシとして使うことが多い。
サイトにアクセスがあると、Nginxはphpプログラムの仕事をphp-fpmに丸投げし、結果(htmlなど)だけを受け取ってブラウザに返します。
じっさいNginxは、キャッシュやロードバランサーなどの機能がリバースプロキシとして重宝されてます。
ロードバランサーは、大きなWebシステムで複数のWebサーバーがあるとき、サイトアクセスの処理を各Webサーバーへ振り分ける。
PHPプログラムを動かす設定
Nginxの初期ページをphpプログラムに変更してみましょう。
/usr/share/nginx/html/index.htmlをコピーしてindex.phpファイルを用意します。
1-2行目を追加して
15行目を変更しました。
次に、php-fpmの設定ファイルを変更します。
/etc/php-fpm.conf
php-fpmの設定ファイルを編集してプロセス実行権限を変更します。(初期値はapache)
nginxの実行ユーザー・ユーザーグループを確認します。
/etc/php-fpm.confの設定を変更しましょう。
設定を反映させます。
php-fpmのプロセスを確認します。
nginxユーザーで起動していればOK。
/etc/nginx/conf.d/default.conf
nginxの初期ページのデフォルトホスト設定も変更しましょう。
nginxのホスト設定にはphp-fpmの設定がすでにあり、コメント化されています。そのコメントを外します。
そしてindexをhtmlからphpに変えます。
設定を反映させます。
デフォルト設定で失敗
『よっしゃ。これでイケる!』と思いましたが、index.phpファイルをダウンロードしようとして失敗します。
nginxのエラーログを見ます。
ありました、エラーが。もう一度、設定を確認します。
スクリプトファイルのパス(/scripts...)が間違ってますね?
rootパスも間違ってるし。そこでパスを修正します。
$document_rootはWebサーバーの公開ディレクトリのルート。
(rootで設定した値)
あと、"root /usr/share/nginx/html;" はほかでも使っているので、ひとつ上の階層(server{})に移しましょう。
完成したdefault.confです。
"systemctl reload nginx"して、ブラウザからアクセスします。
上手くいきました。今回のnginx+php-fpmの設定は初期ページを表示するための最低限です。
その他の設定は必要になったら追加・変更していきましょう。