2018年12月10日月曜日

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

転載元:https://www.rem-system.com/centos-nginx-inst/

7.コンテンツ配置用ディレクトリの作成

今回のnginx構成はバーチャルホストを利用することを前提としています。アクセス先URLに応じてディレクトリを分けて、各ディレクトリにコンテンツを配置する形になります。その為、コンテンツを配置するためのディレクトリを事前に作成しておきます。
※本作業はバーチャルホストを追加する毎に必要になります。

7-1.コンテンツを配置用ディレクトリの場所

コンテンツはFTPを利用してアップロードを行うことを考えて、”/home/www/”以下にバーチャルホストのFQDNに合わせたディレクトリを作成し、その中に配置します。今回の構成ではドメイン名として”www.testdom.com”と”www.testdom2.com”を設定します。

7-2.ディレクトリの作成

ディレクトリの作成を行います。mkdirコマンドで作成します。

7-3.テスト用HTMLファイルの作成
作成したディレクトリに、テスト用のHTMLファイルを作成します。二つのドメインに対して、作成します。
www.testdom.com テスト用HTMLファイル
作成後、ファイルを保存します。これでwww.testdom.com用ファイルの作成は完了です。
続いて、www.testdom2.comテスト用のHTMLファイルを作成します。
www.testdom2.com テスト用HTMLファイル
作成後、ファイルを保存します。これでwww.testdom2.com用ファイルの作成は完了です。
本作業後のディレクトリツリーは以下のようになります。

7-4.パーミッションの変更

作成されたディレクトリは所有者がrootになっています。これをウェブサーバー用のユーザーであるwwwに変更します。以下のようにchownコマンド実行します。(-Rオプションはディレクトリに含まれる全てのファイル、ディレクトリの権限を変更します。)
これでパーミッションの変更は完了です。

8.バーチャルホスト管理用ディレクトリの作成

今回の構成ではnginxで複数のバーチャルホストを運用する形を想定しています。複数のバーチャルホストを運用するには、一つのconfファイルに列記していくことも可能ですが、数が多くなってくると管理が大変になります。ここでは管理を簡単にするために、ディレクトリを作成します。

8-1.管理用ディレクトリの構成

バーチャルホストを管理するためのディレクトリとして以下の二つを作成します。
  • バーチャルホスト用設定ファイルの保存先 … sites-available
  • 有効にするバーチャルホストのリンク設定先 … sites-enabled
sites-availableディレクトリには全てのバーチャルホスト用設定ファイルを保存します。sites-enabledディレクトリには有効にするバーチャルホストの設定ファイルに対してシンボリックリンクを設定していきます。
sites-enabledのシンボリックリンクが設定されているバーチャルホストが有効になるイメージです。

8-2.管理用ディレクトリの作成

mkdirコマンドで管理用ディレクトリを作成します。
作成後に確認します。lsコマンドでディレクトリのファイルを表示します。
作成したsites-available と sites-enabled ディレクトリが表示されれば確認は完了です。
作業後のディレクトリツリーは以下のようになります。

9.nginxの設定

項目8.の手順までで、nginxを利用するための準備が完了しました。本章ではnginxを利用するにあたっての設定変更を説明していきます。設定の前提は以下のようになります。
  • 動作ユーザーとグループはwwwに変更
  • バーチャルホストを利用します。各ドキュメントルートは”/home/www/”以下にドメイン名ディレクトリを設定
  • バーチャルホスト用の設定ファイルを読み込むため、sites-enabledディレクトリをincludeします
  • nginxのバージョンを非表示にします(セキュリティ対応)
  • データを圧縮して配信するためにgzip機能を有効にします
  • 日本語ドメインなどで見られる長いバーチャルホスト名に対応するための設定を行います
この条件に合わせて設定を行っていきます。

9-1.nginx.confファイルの変更

nginxの設定はnginx自体の設定を行うためのnginx.confファイルと、バーチャルホストを設定するためのdefault.confに分かれています。ファイルは”/etc/nginx/”以下に保存されています。まずはnginx.confの変更を行います。
nginx.confの編集前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。
バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

9-1-1.動作ユーザーの変更

2行目にあるuserの設定を変更します。動作ユーザーの設定になります。
この部分を、以下のように変更します。

9-1-2.バージョンの非表示

14行目にあるhttpディレクティブに”server_tokesn off;”を追加します。以下のように変更します。
この部分を以下のように追加します。

9-1-3.バーチャルホスト用設定ファイルのinclude

有効になるバーチャルホスト用の設定ファイルをincludeするためにhttpディレクティブに設定を追加します。
31行目にある以下の部分に追記を行います。
この部分を以下のように変更します。

9-1-4.gzip圧縮の有効化

コンテンツを配信する際にgzipを利用して圧縮を行い、サイズを小さくする機能を有効化します。多少ですがサイトの表示が早くなります。
以下を変更します。
この部分のコメントを外します。
上記のように変更します。

9-1-5.長いバーチャルホスト名への対応

日本語ドメインなどで見られる長いバーチャルホスト名を設定すると、エラーになることがあります。その回避として以下の設定を行います。
gzipの記述の下辺りに以下の設定を追加します。128の部分はハッシュ化されたバーチャルホスト名のサイズになります。やや大きめを指定しています。

9-1-6.キープアライブのタイムアウト秒数を変更

デフォルトで設定されているkeepalive timeoutはやや長いため、変更します。65秒から3秒に変更しています。必要に応じて時間は調整してください。本記事では短めにしています。
の65を
3に変更します。

9-1-7.設定変更後のnginx.conf

全ての項目を変更後のnginx.confファイルは以下のようになります。
変更点に間違いが無いかを確認します。問題なければ変更したnginx.confファイルを保存してください。

9-2.nginx.confの確認

nginx.confの変更が完了できたら、設定ファイルに間違いや問題がないかを確認します。nginxに”-t”オプションを付けて実行することで設定ファイルの間違いをチェックできます。設定変更後には実行することをお勧めします。
以下のように実行します。
上記のように、”test is successful”と表示されていればファイルには問題ありません。

10.バーチャルホスト用の設定ファイル作成

nginx自体の設定は完了しましたので、続いて、バーチャルホスト用の設定ファイルを作成します。
設定ファイルとしてdefault.confが用意されていますが、これとは別にドメイン毎の設定ファイルを作成していきます。default.confはどのバーチャルホスト名にもマッチしない場合に表示されるホストになります。

10-1.default.confの移動

最初から用意されているdefault.confをバーチャルホスト用ディレクトリであるsites-availableへ移動します。default.confは”/etc/nginx/conf.d/”以下に入っています。以下の手順でファイルをコピーします。
ファイルが移動できたことを確認します。
上記のようにdefault.confが表示されれば移動は完了です。
因みにdefault.confは以下のような内容になります。
上記のようにserverディレクティブで、バーチャルホストの基本設定を行っています。これをベースにバーチャルホスト用の設定ファイルを作成していきます。

10-2.バーチャルホストwww.testdom.com用の設定ファイル作成

一つ目のバーチャルホスト”www.testdom.com”用の設定ファイルを作成します。作成先はsites-availableディレクトリになりますので、viコマンドを以下のように実行します。尚、ファイル名は”ドメイン名”+拡張子”conf”という命名規則で作成します。
内容は以下のようになります。
ファイルの中で変更が必要になる部分は以下の項目です。
  • server_name … バーチャルホスト名を指定します。本設定のようにドメイン名とFQDNと両方を記載することで、wwwあり、無しの両方でアクセスができます。
  • access_log … アクセスログの出力先を指定します。ドメイン事に区別すると分かりやすくなります。
  • error_log … エラーログの出力先を指定します。ドメイン事に区別すると分かりやすくなります。
  • root … バーチャルホストのドキュメントルートを指定します。
上記の項目を運用する環境に合わせて変更します。必要に応じて変更後、ファイルを保存します。

10-3.バーチャルホストwww.testdom2.com用の設定ファイル作成

項目10-2.と同じように設定ファイルを作成します。作成する手順は基本的には同じです。viコマンドを以下のように実行します。
ファイルの内容は以下のようになります。必要に応じて変更してください。
内容を確認して、問題なければファイルを保存します。
ファイルの作成後、sites-avilableディレクトリは以下のようになります。
これでバーチャルホスト用設定ファイルの作成は完了です。作業後のディレクトリツリーは以下のようになります。

11.バーチャルホストの管理

設定したバーチャルホストを有効化するためには、sites-avilableディレクトリに作成した設定ファイルに対して、sites-enabledディレクトリにシンボリックリンクを作成する必要があります。本章ではバーチャルホストの有効化と無効化を説明します。

11-1.バーチャルホストの有効化

シンボリックリンクはlnコマンドで作成します。ここでは全てのバーチャルホストを有効にします。以下のようにlnコマンドを実行します。
エラーが出力されなければ、シンボリックリンクは正常に作成されています。確認はlsコマンドで行います。
上記のようにsites-enabledディレクトリにシンボリックリンクが表示されていれば、確認は完了です。
尚、本作業後のフォルダとファイルの構成は以下のようになります。

11-2.バーチャルホストの無効化

有効化したバーチャルホストを無効化する場合には、sites-enalbedディレクトリに設定されているシンボリックリンクを削除します。
削除はunlinkコマンドを利用します。例えばwww.testdom2.com.confを無効化したい場合は以下のようにunlinkコマンドを実行します。
エラーが出力されなければ、シンボリックリンクは正常に削除されています。確認はlsコマンドで行います。
上記のようにsites-enabledディレクトリからシンボリックリンクが削除されていれば、確認は完了です。

11-3.設定ファイルの確認

設定ファイルの作成と配置が完了したら、間違いや問題がないかを確認します。nginxに”-t”オプションを付けて実行することで設定ファイルの間違いをチェックできます。設定変更後には実行することをお勧めします。
以下のように実行します。
上記のように、”test is successful”と表示されていればファイルには問題ありません。

11-4.設定の有効化

シンボリックリンクでの管理について、有効化と無効化の何れかを行った場合には設定ファイルの再読み込みとして、nginxの再起動が必要になります。systemctlコマンドでnginxを再起動します。
エラーが出力されなければ、正常に再起動は完了しています。これで設定の有効化は完了です。

12.nginxの動作テスト

ここまででnginxのバーチャルホスト設定が完了しましたので、動作テストを行います。コマンドでの確認もできますが、ブラウザからのほうが早いと思いますので、ブラウザを利用して確認を行います。
バーチャルホストの動作確認には、DNSによる名前引き(正引き:ドメイン名からIPが引ける)が設定されている必要があります。もしDNSの名前引きが利用できない場合は、利用しているコンピューターのhostsファイルに、直接、IPとホスト名を記載することでも対応できます。

12-1.www.testdom.comの確認

ブラウザからwww.testdom.comを表示します。以下のようにテスト用HTMLファイルの内容が表示されました。

これで、バーチャルホスト”www.testdom.com”の確認は完了です。

12-2.www.testdom2.comの確認

ブラウザからwww.testdom2.comを表示します。以下のようにテスト用HTMLファイルの内容が表示されました。

これでバーチャルホスト”www.testdom2.com”の確認は完了です。
両方のサイトが表示されたことで、バーチャルホストが正常に動作していることが確認できました。これでnginxと各バーチャルホストの確認が完了です。

13.まとめ

nginxは設計思想からApacheとは大きくことなります。nginxはパフォーマンスに特化したウェブサーバーになりますので、設定ファイルや構成については分かりにくい部分があるかと思います。本手順では基本的な設定についてのみ記載していますが、様々なカスタイマイズで容易にパフォーマンスを向上できるnginxはここからが面白いところです。是非、基本的な構成を理解して、Apacheとは違うnginxならではの良さを楽しんで頂ければ幸いです。
今後はこの構成を元に、phpやパフォーマンスの向上を行うための設定などを記事にしていきたいと考えています。楽しみにして下さい。

0 コメント:

コメントを投稿