nginx でドメインのサイト立ち上げ( VirtualHost )
【目次】
nginx で VirtualHost を使ってドメインのサイトを立ち上げる
※サブドメイン(○○○.jpの場合、△△△.○○○.jpのように前に文字列を入れてドメインを区分けしたもの)で今回、サイトを立ち上げました。
VirtualHostとは
1つのサーバーで複数のドメインを運用できる技術。
ドメインはインターネット上の住所のこと。(参考:ドメインとは)
ドメインの取得
お名前.comより取得。.workが1円で登録できた!
(※お名前ドットコムは契約自動更新がデフォルトでONなので、テスト用だったらOFFにしとくと良いと教えていただきました!)
ネームサーバー(DNS)
ドメインとWebサーバーやメールサーバーを結びつけるための名前解決をするサーバー。インターネット上にあるサーバーにはすべてIPアドレスが割り振られており、これを利用してHPやメールを運用しているサーバーにアクセスする。
このIPアドレスとドメインを結び付ける役割を担っているのがネームサーバー。
こちらのサイトを参考に設定を行った↓
参考:DNS関連機能の設定:DNSレコード設定
登録後、$ nslookup
でアクセスして確認。
(※Debianでnslookup
やdig
を使うには# apt-get install dnsutils
でインストール。)
私は複数サイトを立ててみたかったので、XXX.work
test.XXX.work
www.XXX.work
を登録。
nginxの設定
コンテンツ置き場
Virtual Host用のデータを入れておくディレクトリ(ファイル)を作る。
XXX.work
www.XXX.work
がコンテンツ1 で表示test.XXX.work
がコンテンツ2で表示
$ sudo mkdir -p /srv/XXX.work/{public,private,log,backup} # mkdir の-pオプションはエラーを表示せず記述したディレクトリが存在しなければ作成 # /srvはHTTP、FTP 用データが置かれているとこ。 $ sudo vim /srv/XXX.work/public/index.html # XXX.workのトップページとなるindex.html作成
Nginxは複数のドメインを管理できるので、もしもnew.comなど新しいドメインを取得したら、新しいフォルダを作る。
$ sudo mkdir -p/srv/new.com/{public,private,log,backup}
設定ファイル置き場
Virtual Hostの設定を作成する。 以下で設定ファイル置き場と設定ファイルを作成。
ちなみに/etc/init.d/nginx
にNginxの実行ファイルがある。
$ sudo mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled # 設定ファイル置き場 # /etcはプログラムの起動、終了や再起動などのコントロール機能やプログラム本体などが保存されてるとこ。 $ sudo vim /etc/nginx/sites-available/XXX.work # 設定ファイル作成
sites-available
:Virtual Hostの設定を書いたファイル
sites-enable
:sites-availableの内容を見にいくようシンボリックリンクが貼られたファイル。
- availableには利用可能な設定ファイルを置く
- enableには必要になったらシンボリックリンク作成
設定ファイルの内容は以下。
server { listen 80; server_name www.XXX.work; access_log /srv/XXX.work/log/access.log; error_log /srv/XXX.work/log/error.log; location / { root /srv/XXX.work/public/; index index.html index.php; } } server { listen 80; server_name XXX.work; access_log /srv/XXX.work/log/access.log; error_log /srv/XXX.work/log/error.log; location / { root /srv/XXX.work/public/; index index.html index.php; } }
上記の設定ファイルの中身、2つ似ているものを書いている。この違いは「www」があるかないか。
2つ設定しておくことで、Chromeのアドレスバーにwww.XXX.workと入れても、XXX.workと入れても、どっちでもindex.htmlが表示される仕組みになっている。
シンボリックリンクの作成
nginxが読むようにシンボリックリンクを作成する。 この作業の意味については以下。
nginxは起動時に、
/etc/nginx/sites-enabled
の設定ファイルを読み込む。 そのため有効にしたいvirtual Hostについては、sites-available/にある設定ファイルへのシンボリックリンクを、sites-enabled/の中に作っておかなければならない。 最初からsites-enabledに設定を書くことはせず、sites-availableに書いて、sites-enabledにリンクを貼るのがお約束なのだそうです。
$ sudo ln -s /etc/nginx/sites-available/XXX.work /etc/nginx/sites-enabled/XXX.work
※sites-available
:Virtual Hostの設定を書いたファイル
※sites-enable
:sites-availableの内容を見にいくようシンボリックリンクが貼られたファイル
読み込み設定
$ sudo vim nginx.conf include /etc/nginx/sites-enabled/*.work; # 追記する
確認
$ sudo /etc/init.d/nginx stop # 停止 $ sudo /etc/init.d/nginx start # 起動
これでhttp://www.XXX.work/
が表示された!
同じ要領でtest.XXX.work
も作成してみるとhttp://test.XXX.work/
でうまくいった!