2018年12月10日月曜日

CentOS 7へのnginxのインストール。最短でバーチャルホストまでを利用する。その1

勉強の為に転載しました。


今までの記事でApacheに関する設定や機能の拡張について紹介してきましたが、ここ最近、導入されている環境が増えている、もう一つのウェブサーバーであるnginx(エンジンエックス)の導入について紹介します。
nginxはパフォーマンスに特化されたウェブサーバーで、Apacheのように機能がてんこ盛りというウェブサーバーとは異なり、最低限の機能を提供する代わりに高パフォーマンスが期待できるウェブサーバーです。大手のウェブサイトで導入実績も多く、着実にシェアを伸ばしているソフトウェアです。
今回の記事では、nginxの基本的な導入手順と、一つのサーバー(とIPアドレス)で複数のサイトを運用するためのバーチャルホスト機能の提供までを紹介したいと思います。Apacheとnginx、どちらを導入するか、選択肢が増えることは悩ましいことですが、是非、両方試してみて、運用環境に合わせた選択を行って下さい。
※本記事ではパッケージによる導入を行っております。WordPressとFastCGIキャッシュを利用した場合に便利な”ngx_cache_purge”モジュールを利用する場合にはソースからのnginxインストールが必要になります。(ngx_cache_purgeモジュールが入っていない場合、キャッシュファイルを手動で削除します。)
1-1.firewall-cmdコマンドによる80番ポートのオープン
CentOS 7のfirewalldを利用している場合は、以下のように設定を行います。
firewall-cmdコマンドでウェブサーバーの待ち受けポートである80番に外部から接続できるように設定を追加します。コマンドは以下のように実行します。
このコマンドはデフォルトのゾーンであるpublicにhttpのサービスを追加します。publicゾーンはインターフェイスに対して割り当てられていますので、この場合はどのIPアドレスからもhttpへ接続可能になります。
続いて、設定を反映するために再読み込みを実行します。
成功するとsuccessと表示されます。設定の確認は以下のコマンドで行います。
表示された結果の”services”項目にhttpが追加されていれば、設定の確認は完了です。

2.nginxインストール前の事前準備

nginxのインストール前に事前準備を行います。作業としてはnginxをインストールするのに必要なレポジトリの追加になります。なおnginxのサイトにはstableという安定版とmainlineという最新のバグフィックスや機能が盛り込まれたバージョンの二つが用意されています。nginxではmainline版を利用することを推奨しているようですので、本記事ではmainline版を利用します。

2-1.nginx用レポジトリの設定

OSデフォルトでは以下のようにnginxに関するパッケージを探してみても見つかりません。試しにyumコマンドでnginxのパッケージを確認してみます。
上記のようにnginxは含まれていません。これはOSのベースに用意されているレポジトリにはnginxは含まれていなことが原因です。nginxをインストールするためにはnginx用レポジトリの追加が必要になります。
レポジトリファイルは”/etc/yum.repos.d/”ディレクトリにあります。現状のレポジトリファイルを確認してみます。
上記のレポジトリファイルが存在します。ここにnginx用のレポジトリファイルを追加します。

2-1-1.nginx用レポジトリファイルの作成

「nginx公式ウェブサイト」にOS毎のレポジトリファイルが記載されています。
(nginxレポジトリ作成用URL)https://nginx.org/en/linux_packages.html#mainline
基本的にはこのサイトに記載されている内容をコピーして、ファイルを作成します。Linuxのディストリビューションとバージョンに合わせて、URLの部分を変更します。本環境はOSとしてcentos、OSのバージョンは7になりますので、以下のようにレポジトリファイルの記載内容を変更します。
ウェブサイトの記載されているレポジトリファイルの内容
変更後のレポジトリファイルの内容
本記事ではenabled=1としてレポジトリを常に有効にしています。
ファイルの内容が確認できたら、viコマンドでファイルを作成します。以下のように実行します。
開いたエディタに、先ほどの内容をコピー&ペーストします。完了後にはファイルを保存して下さい。これでnginx用レポジトリファイルの追加は完了です。

2-1-2.nginx用レポジトリ追加の確認

レポジトリを追加した後で、nginxのパッケージが表示されることを確認してみます。レポジトリはenable=1で有効になっていますので、指定なしでyumコマンドを実行します。
実行結果は以下のようになります。
nginxのパッケージが表示されたことが確認できました。この中で必要になるものは以下のパッケージになります。
  • nginx.x86_64 : High performance web server
上記のnginxパッケージをインストール対象とします。

3.nginxのインストール

本章では実際にnginxパッケージをインストールする手順を紹介していきます。特に難しい部分はありませんので、ゆっくりと落ち着いて作業して頂ければ大丈夫です。

3-1.nginxパッケージの情報を確認

nginxパッケージのインストール前に、パッケージの情報を確認しておきます。実行結果は以下の通りです。各パッケージの役割などを確認しておくと、インストールするパッケージの意味合いをイメージしやすいと思います。
パッケージの詳細を確認後、インストールに入ります。

3-2.nginxパッケージのインストール

nginxパッケージはyumコマンドにinstallオプションを付けることでインストールすることができます。項目3-1.で必要なパッケージの情報が確認できましたので、以下のコマンドでインストールします。
上記ではyumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。コマンドを実行すると、以下のようにインストールが開始されます。
エラーの出力がなく”完了しました!”と表示されれば、ngixのインストールは完了です。

3-3.インストールされたnginxパッケージの確認

nginxパッケージがインストールされたことを確認します。インストールされているパッケージはyumコマンドで確認できます。以下のようにyumに”list installed”オプションを付与して実行することで、インストール済みのnginxパッケージが表示されることを確認します。
出力結果としてMariaDBパッケージが表示されることを確認します。
上記のようにnginxパッケージが表示されれば、確認は完了です。

4.nginx起動の確認と自動起動設定

ここまででnginxのインストールと確認が完了しましたので、本章ではインストールしたnginxの起動と、自動起動設定を行います。

4-1.nginxの起動

CentOSでは7系からsystemctlコマンドでサービスの起動・停止を行います。nginxは以下のように実行することで起動できます。
エラーが出力されなければ、nginxは正常に起動しています。合わせて、サービスのステータス確認を行います。
systemctlコマンドにstatusオプションを付けて実行することで、起動したサービスの状態について、詳細な情報を取得することができます。以下が実行例です。
上記では分かり難いかもしれませんが、黒丸(●)の部分が正常な起動状態の場合、緑色で表示されます。また、稼働しているプロセスを表示するpsコマンドでもnginxが起動していることを確認できます。
以下のように実行します。
以上の結果から、nginxが正常に起動することが確認できました。

4-2.nginxの自動起動設定

サーバーの再起動や停止の復旧時に、nginxが自動的に起動するように設定します。サービスの自動起動を設定するにもsystemctlコマンドを利用します。自動起動は以下のようにsystemctlコマンドを実行します。
エラーが出力されなければ、自動起動の設定は正常に完了しています。
続いて自動起動が設定されたことを確認します。こちらもsystemctlコマンドから確認できます。is-enabledオプションを付与して実行します。
enabledと表示されれば自動起動は設定されています。これで自動起動の確認は完了です。

5.ウェルカムページの表示確認

ここまでの手順でnginxパッケージに用意されたデフォルトで用意されているウェブページを表示することが出来ます。ご自分の環境で利用されているウェブブラウザから、テスト用のページが表示できることを確認します。もしhttpdをインストールしたサーバーのIPアドレスが111.8.21.167の場合
http://111.8.21.167
をブラウザへ入力すると、以下のようなテスト用のウェルカムページが表示されます。

これでテスト用のウェルカムページが表示されることまで、確認が出来ました。続いてnginxの設定を行います。

6.nginx用ユーザーの作成

まずnginxを動作させるためにユーザーを追加します。
デフォルトではnginxのインストール時に同名のユーザー(nginx)が作成されますが、これは利用せずに新規でwwwというユーザーを追加します。nginxユーザーについてはコンテンツアップロード時の権限と、ユーザー名が分かってしまう可能性を考慮して、本記事では利用しません。
※本記事ではwwwユーザーを作成していますが、ユーザー名は任意になりますので、www以外でも問題ありません。

6-1.ユーザー作成

ユーザー追加はuseraddコマンドで行います。-sオプションを付けることでshellを指定しています。
wwwユーザーはサーバーへログインすることがないので、シェルとして”/sbin/nologin”を指定します。成るべくシステムへログインできるユーザーを制限することがセキュリティの基本です。
エラーが出力されなければ、ユーザーの作成は完了です。

6-2.パスワードの設定

続いて、作成したユーザーにパスワードの設定を行います。
パスワードは任意になりますが、成るべく複雑なものを設定することをお勧めします。エラーの出力が無ければパスワードの設定は完了です。

6-3.作成したユーザーの確認

作成したウェブサーバー用のユーザー”www”についての情報を確認します。/etc/passwdファイルに作成したwwwユーザーの情報が追加されていることを確認します。確認は以下のコマンドで行います。
続いてidコマンドでユーザーとグループが表示されることを確認します。
wwwユーザーに関する情報が表示されればユーザーの確認は完了です。

0 コメント:

コメントを投稿