#author("2018-08-15T19:26:54+09:00","","") #author("2018-08-21T20:06:10+09:00","","") [[CentOS7]] *nginxインストール [#b28ee374] **firewalldの設定 [#g4522698] ''firewall-cmd''コマンドでウェブサーバーの待ち受けポートである''80''番に外部から接続できるように設定を追加します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# firewall-cmd --add-service=http --permanent| |[root@localhost ~]# firewall-cmd --reload| |[root@localhost ~]# firewall-cmd --list-all &color(lime){←設定確認};| **nginx用レポジトリの設定 [#q91ca660] ''nginx''用レポジトリファイルの追加 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# vi /etc/yum.repos.d/nginx.repo| |[nginx] &br; name=nginx repo &br; baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ &br; gpgcheck=0 &br; enabled=1| ''enabled=1''としてレポジトリを常に有効にしています。 **nginxインストール [#za91fd94] |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# yum -y install nginx| エラーの出力がなく”完了しました!”と表示されれば、''nginx''のインストールは完了です。 **nginx起動の確認と自動起動設定 [#j57379a7] ***nginxの起動 [#v66c85e3] |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# systemctl start nginx| |[root@localhost ~]# systemctl enable nginx &color(lime){←nginxの自動起動設定};| エラーが出力されなければ、nginxは正常に起動しています。 **ウェルカムページの表示確認 [#oed2deb0] ここまでの手順でnginxパッケージに用意されたデフォルトで用意されているウェブページを表示することが出来ます。 ご自分の環境で利用されているウェブブラウザから、テスト用のページが表示できることを確認します。もし''nginx''をインストールしたサーバーのIPアドレスが ''192.168.1.7'' の場合 http://192.168.1.7 をブラウザへ入力すると、以下のようなテスト用のウェルカムページが表示されます。 &ref(01.jpg); **Webコンテンツ更新用ユーザーの作成 [#g85235c7] ***ユーザー作成 [#e81900d8] |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# useradd -s /sbin/nologin www| |[root@localhost ~]# passwd www| **コンテンツ配置用ディレクトリの作成 [#t55564a9] ''nginx''構成はバーチャルホストを利用することを前提にします。アクセス先 URLに応じてディレクトリを分けて、各ディレクトリにコンテンツを配置する形になります。その為、コンテンツを配置するためのディレクトリを事前に2つ作成しておきます。 ※本作業はバーチャルホストを追加する毎に必要になります。 ***コンテンツを配置用ディレクトリの場所 [#f82ddd51] コンテンツはFTPを利用してアップロードを行うことを考えて、”''/home/www/''”以下にバーチャルホストの''FQDN''に合わせたディレクトリを作成し、その中に配置します。今回の構成ではドメイン名として”hoge.com”と”usage.com”を設定します。 ***ディレクトリの作成 [#zeab8a58] ディレクトリの作成を行います。mkdirコマンドで作成します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# mkdir /home/www/hoge.com /home/www/usage.com| ***アクセス権の変更 [#p34b777c] |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# chmod 755 /home/www| ***テスト用HTMLファイルの作成 [#g884420d] 作成したディレクトリに、テスト用のHTMLファイルを作成します。二つのドメインに対して、作成します。 ''hoge.com テスト用HTMLファイル'' |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# vi /home/www/hoge.com/index.html| |<html> &br; <body> &br; hoge.com test page &br; </body> &br; </html>| 作成後、ファイルを保存します。これで hoge.com 用ファイルの作成は完了です。 続いて、usage.com テスト用のHTMLファイルを作成します。 ''usage.com テスト用HTMLファイル'' |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# vi /home/www/usage.com/index.html| |<html> &br; <body> &br; usage.com test page &br; </body> &br; </html>| ***パーミッションの変更 [#q814e593] 作成されたディレクトリは所有者がrootになっています。これをウェブサーバー用のユーザーである ''www'' に変更します。以下のように ''chown'' コマンド実行します。(''-R''オプションはディレクトリに含まれる全てのファイル、ディレクトリの権限を変更します。) |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# chown -R www:www /home/www| **バーチャルホスト管理用ディレクトリの作成 [#uab25e8b] 今回の構成では''nginx''で複数のバーチャルホストを運用する形を想定しています。複数のバーチャルホストを運用するには、一つの''conf''ファイルに列記していくことも可能ですが、数が多くなってくると管理が大変になります。ここでは管理を簡単にするために、ディレクトリを作成します。 ***管理用ディレクトリの構成 [#b827b988] バーチャルホストを管理するためのディレクトリとして以下の二つを作成します。 -バーチャルホスト用設定ファイルの保存先 … ''sites-available'' -有効にするバーチャルホストのリンク設定先 … ''sites-enabled'' ''sites-available''ディレクトリには全てのバーチャルホスト用設定ファイルを保存します。''sites-enabled''ディレクトリには有効にするバーチャルホストの設定ファイルに対してシンボリックリンクを設定していきます。 ''sites-enabled''のシンボリックリンクが設定されているバーチャルホストが有効になるイメージです。 ***管理用ディレクトリの作成 [#m6f24a80] mkdirコマンドで管理用ディレクトリを作成します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# mkdir /etc/nginx/sites-available /etc/nginx/sites-enabled| 作成後に確認します。lsコマンドでディレクトリのファイルを表示します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# ls -a /etc/nginx| **nginxの設定 [#z7d84273] ''nginx''を利用するにあたっての設定変更を説明していきます。設定の前提は以下のようになります。 -動作ユーザーとグループは''www''に変更 -バーチャルホストを利用します。各ドキュメントルートは”''/home/www/''”以下にドメイン名ディレクトリを設定 -バーチャルホスト用の設定ファイルを読み込むため、''sites-enabled''ディレクトリを''include''します -''nginx''のバージョンを非表示にします(セキュリティ対応) -データを圧縮して配信するために''gzip''機能を有効にします -日本語ドメインなどで見られる長いバーチャルホスト名に対応するための設定を行います この条件に合わせて設定を行っていきます。 ***nginx.confファイルの変更 [#d36a60da] ''nginx''の設定は''nginx''自体の設定を行うための''nginx.conf''ファイルと、バーチャルホストを設定するための''default.conf''に分かれています。ファイルは”''/etc/nginx/''”以下に保存されています。まずは''nginx.conf''の変更を行います。 ''nginx.conf''の編集前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# cd /etc/nginx/| |[root@localhost nginx]# cp -p nginx.conf nginx.conf.org| バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境では''OS''の標準的なエディタである、viエディタを利用しています。 |BGCOLOR(black):COLOR(white):|c |[root@localhost nginx]# vi nginx.conf| ''動作ユーザーの変更'' ''user''の設定を変更します。動作ユーザーの設定になります。 |BGCOLOR(black):COLOR(white):|c |user www;| ''バージョンの非表示'' |BGCOLOR(black):COLOR(white):|c |http { &br; server_tokens off; &br; include /etc/nginx/mime.types; &br; default_type application/octet-stream;| ''バーチャルホスト用設定ファイルのinclude'' 有効になるバーチャルホスト用の設定ファイルを''include''するために''http''ディレクティブに設定を追加します。 |BGCOLOR(black):COLOR(white):|c | include /etc/nginx/conf.d/*.conf; &br; include sites-enabled/*.conf; &br; }| ''gzip圧縮の有効化'' コンテンツを配信する際にgzipを利用して圧縮を行い、サイズを小さくする機能を有効化します。多少ですがサイトの表示が早くなります。 |BGCOLOR(black):COLOR(white):|c |gzip on;| ''長いバーチャルホスト名への対応'' 日本語ドメインなどで見られる長いバーチャルホスト名を設定すると、エラーになることがあります。その回避として以下の設定を行います。 ''gzip''の記述の下辺りに以下の設定を追加します。128の部分はハッシュ化されたバーチャルホスト名のサイズになります。やや大きめを指定しています。 |BGCOLOR(black):COLOR(white):|c | server_names_hash_bucket_size 128;| ''キープアライブのタイムアウト秒数を変更'' デフォルトで設定されている''keepalive timeout''はやや長いため、変更します。65秒から30秒に変更しています。必要に応じて時間は調整してください。 |BGCOLOR(black):COLOR(white):|c |keepalive_timeout 30;| **nginx.confの確認 [#o90388e6] ''nginx.conf''の変更が完了できたら、設定ファイルに間違いや問題がないかを確認します。''nginx''に”''-t''”オプションを付けて実行することで設定ファイルの間違いをチェックできます。設定変更後には実行することをお勧めします。 以下のように実行します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# nginx -t| |nginx: the configuration file /etc/nginx/nginx.conf syntax is ok &br; nginx: configuration file /etc/nginx/nginx.conf test is successful| **バーチャルホスト用の設定ファイル作成 [#a4520ff9] ''nginx''自体の設定は完了しましたので、続いて、バーチャルホスト用の設定ファイルを作成します。 設定ファイルとして''default.conf''が用意されていますが、これとは別にドメイン毎の設定ファイルを作成していきます。''default.conf''はどのバーチャルホスト名にもマッチしない場合に表示されるホストになります。 ***default.confの移動 [#zcee53fb] 最初から用意されている''default.conf''をバーチャルホスト用ディレクトリである''sites-available''へ移動します。''default.conf''は”''/etc/nginx/conf.d/''”以下に入っています。以下の手順でファイルをコピーします。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# mv /etc/nginx/conf.d/default.conf /etc/nginx/sites-available/| ***バーチャルホスト hoge.com用の設定ファイル作成 [#a93f9ab3] 一つ目のバーチャルホスト”''hoge.com''”用の設定ファイルを作成します。作成先は''sites-available''ディレクトリになりますので、''vi''コマンドを以下のように実行します。尚、ファイル名は”ドメイン名”''+''拡張子”''conf''”という命名規則で作成します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# vi /etc/nginx/sites-available/hoge.conf| 内容は以下のようになります。 |BGCOLOR(black):COLOR(white):|c |server { &br; listen 80; &br; server_name hoge.com www.hoge.com; &br; access_log /var/log/nginx/hoge.com-access.log; &br; error_log /var/log/nginx/hoge.com-error.log; &br; root /home/www/hoge.com; &br; &br; location / {&br; index index.html; &br; } &br; location ~ \.php$ { &br; try_files $uri $uri/ =404; &br; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; &br; fastcgi_index index.php; &br; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; &br; include fastcgi_params; &br; } &br; }| |server { &br; listen 80; &br; server_name hoge.com www.hoge.com; &br; access_log /var/log/nginx/hoge.com-access.log; &br; error_log /var/log/nginx/hoge.com-error.log; &br; root /home/www/hoge.com; &br; &br; location / {&br; index index.html; &br; } &br; location ~ \.php$ { &br; root /home/www/hoge.com &br; try_files $uri $uri/ =404; &br; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; &br; fastcgi_index index.php; &br; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; &br; include fastcgi_params; &br; } &br; }| ファイルの中で変更が必要になる部分は以下の項目です。 -''server_name'' … バーチャルホスト名を指定します。ドメイン名と''FQDN''の両方を記載することで、wwwあり、無しの両方でアクセスができます。 -''access_log'' … アクセスログの出力先を指定します。ドメイン事に区別すると分かりやすくなります。 -''error_log'' … エラーログの出力先を指定します。ドメイン事に区別すると分かりやすくなります。 -''root'' … バーチャルホストのドキュメントルートを指定します。 上記の項目を運用する環境に合わせて変更します。必要に応じて変更後、ファイルを保存します。 ***バーチャルホスト usage.com用の設定ファイル作成 [#n6fa0aec] 設定ファイルを作成します。作成する手順は基本的には同じです。viコマンドを以下のように実行します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# vi /etc/nginx/sites-available/usage.com.conf| ファイルの内容は以下のようになります。必要に応じて変更してください。 |BGCOLOR(black):COLOR(white):|c |server { &br; listen 80; &br; server_name usage.com www.usage.com; &br; access_log /var/log/nginx/usage.com-access.log; &br; error_log /var/log/nginx/usage.com-error.log; &br; root /home/www/usage.com; &br; &br; location / { &br; index index.html; &br; } &br; location ~ \.php$ { &br; try_files $uri $uri/ =404; &br; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; &br; fastcgi_index index.php; &br; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; &br; include fastcgi_params; &br; } &br; }| |server { &br; listen 80; &br; server_name usage.com www.usage.com; &br; access_log /var/log/nginx/usage.com-access.log; &br; error_log /var/log/nginx/usage.com-error.log; &br; root /home/www/usage.com; &br; &br; location / { &br; index index.html; &br; } &br; location ~ \.php$ { &br; root /home/www/usage.com &br; try_files $uri $uri/ =404; &br; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; &br; fastcgi_index index.php; &br; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; &br; include fastcgi_params; &br; } &br; }| 内容を確認して、問題なければファイルを保存します。 ***default.conf の修正 [#k3b19ab0] どの''FQDN''にもヒットしない場合はデフォルトのページが表示されしまうので、代表のサイトを表示するように変更する。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# vi /etc/nginx/sites-available/default.conf| |location / { &br; &color(lime){#};root /usr/share/nginx/html; &color(lime){←コメントアウト}; &br; root /home/www/hoge.com; &color(lime){←追加}; &br; index index.html index.htm; &br; }| **バーチャルホストの管理 [#z333024b] 設定したバーチャルホストを有効化するためには、''sites-avilable''ディレクトリに作成した設定ファイルに対して、''sites-enabled''ディレクトリにシンボリックリンクを作成する必要があります。バーチャルホストの有効化と無効化を説明します。 ***バーチャルホストの有効化 [#d88a119b] シンボリックリンクは''ln''コマンドで作成します。ここでは全てのバーチャルホストを有効にします。以下のように''ln''コマンドを実行します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# ln -s /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.com.conf| |[root@localhost ~]# ln -s /etc/nginx/sites-available/hoge.com.conf /etc/nginx/sites-enabled/hoge.com.conf| |[root@localhost ~]# ln -s /etc/nginx/sites-available/usage.com.conf /etc/nginx/sites-enabled/usage.com.conf| エラーが出力されなければ、シンボリックリンクは正常に作成されています。 ***バーチャルホストの無効化 [#p48dd4db] 有効化したバーチャルホストを無効化する場合には、''sites-enalbed''ディレクトリに設定されているシンボリックリンクを削除します。 削除は''unlink''コマンドを利用します。例えば''usage.com.conf''を無効化したい場合は以下のように''unlink''コマンドを実行します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# unlink /etc/nginx/sites-enabled/usage.com.conf| ***設定ファイルの確認 [#w86450a3] 設定ファイルの作成と配置が完了したら、間違いや問題がないかを確認します。''nginx''に”''-t''”オプションを付けて実行することで設定ファイルの間違いをチェックできます。設定変更後には実行することをお勧めします。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~] nginx -t| |nginx: the configuration file /etc/nginx/nginx.conf syntax is ok &br; nginx: configuration file /etc/nginx/nginx.conf test is successful| 上記のように、”test is successful”と表示されていればファイルには問題ありません。 ***設定の有効化 [#r573b2be] シンボリックリンクでの管理について、有効化と無効化の何れかを行った場合には設定ファイルの再読み込みとして、''nginx''の再起動が必要になります。''systemctl''コマンドで''nginx''を再起動します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# systemctl restart nginx| **nginxの動作テスト [#jba52bb7] ここまでで''nginx''のバーチャルホスト設定が完了しましたので、動作テストを行います。コマンドでの確認もできますが、ブラウザからのほうが早いと思いますので、ブラウザを利用して確認を行います。 バーチャルホストの動作確認には、''DNS''による名前引き(正引き:ドメイン名から''IP''が引ける)が設定されている必要があります。もし''DNS''の名前引きが利用できない場合は、利用しているコンピューターの''hosts''ファイルに、直接、''IP''とホスト名を記載することでも対応できます。 ***hoge.comの確認 [#z8ed2bd4] ブラウザから http://hoge.com を表示します。 これで、バーチャルホスト”hoge.com”の確認は完了です。 ***usage.comの確認 [#sa1d4473] ブラウザから http://usage.com を表示します。 これでバーチャルホスト”usage.com”の確認は完了です。 両方のサイトが表示されたことで、バーチャルホストが正常に動作していることが確認できました。これで''nginx''と各バーチャルホストの確認が完了です。