サイトを立ち上げる必要があったので、CentOSにnginxのインストールからマルチドメインの設定までの作業をした。今回はその時のメモ。(参考サイトはココと、ココと、ココ)
上記を実行したら、「/etc/yum.repos.d/nginx.repo」というファイルが作成されているはずなので、確認。
ブラウザからサーバのURL(※3)にアクセスしてみて、nginxのwelcomeページが表示されればOK。
■マルチドメインとは?
マルチドメインは1つのサーバ(IPアドレス)で、複数のドメインを管理できること。
例えば、「aaa.comとbbb.comの2つドメインでそれぞれ のサイトを立ち上げたいけど、今のところそんなにアクセス数もないのでサイト毎にサーバを用意するのはリソース(≒お金)の無駄だなー」という時に、重宝する。
マルチドメインは、Webサーバアプリケーション(ここではnginx)のバーチャルサーバ機能(※1)を利用して行う。
nginx は、(ブラウザからの)HTTP リクエストヘッダの “Host”情報を読み取り、どのコンテンツを返すべきかを判定する(参考→nginx公式解説ページ)(※2)。
■作業環境
今回の作業環境は以下のとおり。
- サーバ: さくらインターネットのVPS
- OS: CentOS 6
- ドメイン:さくらインターネットであらかじめ2つのドメインを取得し、それぞれのドメインで上記VPSのIPアドレスへ紐づけの設定が完了している。
■手順1(nginxのインストールまで)
▼CentOSに、nginx用のyumリポジトリを登録するRPMをインストール
nginx公式ページで、CentOS 6 用のRPMのURLを調べて、以下のコマンドを実行する。
# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
(ここで、http://~.noarch.rpmは、上記の公式ページで調べたRPMファイルのURL)
(ここで、http://~.noarch.rpmは、上記の公式ページで調べたRPMファイルのURL)
上記を実行したら、「/etc/yum.repos.d/nginx.repo」というファイルが作成されているはずなので、確認。
▼yumでnginxをインストールし、動作確認
nginxをyumでインストールする。
# yum install nginx
インストール後、nginxを起動。
# /etc/init.d/nginx start
■手順2(nginxのバーチャルサーバ機能の設定完了まで)
▼設定ファイルを置くためのディレクトリを作成
以下のコマンドを実行。
# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enable
# mkdir /etc/nginx/sites-enable
これから、運用する個々のドメイン用の設定ファイルを「sites-available」以下において、その設定ファイルを参照するシンボリックリンクを「sites-enable」以下に配置し、nginx自体はそのシンボリックリンクを参照するようにしていく(※4)。
▼個々のドメイン用の設定ファイルを作成&配置
sites-availableディレクトリ以下に、それぞれのバーチャルホスト用の設定ファイルを作成する。ファイル名は「aaa.com」のようにドメイン名と同一にしたほうが運用しやすい。
作成内容は下記の参照のこと。
例えば「vi /etc/nginx/sites-available/aaa.com」 コマンドで以下の編集をする。
作成内容は下記の参照のこと。
例えば「vi /etc/nginx/sites-available/aaa.com」 コマンドで以下の編集をする。
# For aaa.com
server {
listen 80;
server_name aaa.com www.aaa.com; #ドメイン名の指定。サブドメインも指定可。
access_log /var/log/nginx/access.aaa.com.log; #アクセスログの保存先もドメイン毎に。
location / { #コンテンツの置き場所も、ドメイン別に分けておく。
root /usr/share/nginx/html/aaa.com;
index index.html;
}
}
server {
listen 80;
server_name aaa.com www.aaa.com; #ドメイン名の指定。サブドメインも指定可。
access_log /var/log/nginx/access.aaa.com.log; #アクセスログの保存先もドメイン毎に。
location / { #コンテンツの置き場所も、ドメイン別に分けておく。
root /usr/share/nginx/html/aaa.com;
index index.html;
}
}
上記と同じものをバーチャルサーバをつくる分だけ作り配置する。(たとえばbbb.com用など)
次に、ここで作った設定ファイルをsite-enableディレクトリ側から参照するシンボリックリンクをはる。
次に、ここで作った設定ファイルをsite-enableディレクトリ側から参照するシンボリックリンクをはる。
# ln -s /etc/nginx/sites-available/aaa.com /etc/nginx/sites-enable/
# ln -s /etc/nginx/sites-available/bbb.com /etc/nginx/sites-enable/
# ln -s /etc/nginx/sites-available/bbb.com /etc/nginx/sites-enable/
▼nginxが上記で作成した設定ファイルを参照するように設定。
viで「/etc/nginx/nginx.conf」に、
include /etc/nginx/sites-enable/*;
の行を加える。(他のinclude節の直後に配置しとけばよい)
▼それぞれのドメイン用コンテンツを作成。
「site-available」以下に配置したドメイン毎の設定ファイル内でlocationのrootとして設定したディレクトリを作成。
# mkdir /usr/share/nginx/html/aaa.com
# mkdir /usr/share/nginx/html/bbb.com
# mkdir /usr/share/nginx/html/bbb.com
作成後、それぞれのディレクトリ配下に、適当な「index.html」を作成し配置しておく。(あとで接続試験をするため)
▼設定の確認→nginx再起動→接続試験
設定に不備がないかをテストツールでテストする。問題がなければ「test is successful」のような表示がされる。
# /etc/init.d/nginx configtest
設定に問題がなければ、nginxを再起動。
# /etc/init.d/nginx restart
再起動後、それぞれのドメイン(今回はaaa.com、bbb.com)にブラウザからアクセスし、それぞれ意図通りのコンテンツが表示されれればOK。
- (※1) apacheでも同じ機能があり、「バーチャルホスト機能」と呼んでる。
- (※2) ちなみに、仕組み上HTTPリクエストヘッダに"Host"情報を入れないブラウザでアクセスされた場合には、上手く動かない。ただそのようなブラウザはよっぽど古いブラウザだけで、現在はほとんど、Host情報を入れるようになっている。
- (※3) ドメイン名がまだない場合は、例えばhttp://xxx.xxx.xxx.xxxなど。ここでxxx.xxx.xxx.xxxはサーバのIPアドレス。
- (※4) なぜシンボリックリンクで参照させるかというと、サイトを一時的に停止したい場合、sites-enable以下のシンボリックリンクを消すだけでOKになるという運用上のメリットがあるから。
0 件のコメント:
コメントを投稿