Chiroru's Diary

日々の学びをちょこちょこメモしていきます

nginx でドメインのサイト立ち上げ( VirtualHost )

【目次】

nginx で VirtualHost を使ってドメインのサイトを立ち上げる

サブドメイン(○○○.jpの場合、△△△.○○○.jpのように前に文字列を入れてドメインを区分けしたもの)で今回、サイトを立ち上げました。

VirtualHostとは

1つのサーバーで複数のドメインを運用できる技術。
ドメインはインターネット上の住所のこと。(参考:ドメインとは)

ドメインの取得

お名前.comより取得。.workが1円で登録できた!
(※お名前ドットコムは契約自動更新がデフォルトでONなので、テスト用だったらOFFにしとくと良いと教えていただきました!)

ネームサーバー(DNS)

ドメインとWebサーバーやメールサーバーを結びつけるための名前解決をするサーバー。インターネット上にあるサーバーにはすべてIPアドレスが割り振られており、これを利用してHPやメールを運用しているサーバーにアクセスする。
このIPアドレスドメインを結び付ける役割を担っているのがネームサーバー。

こちらのサイトを参考に設定を行った↓
参考:DNS関連機能の設定:DNSレコード設定

登録後、$ nslookupでアクセスして確認。
(※Debiannslookupdigを使うには# 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の内容を見にいくようシンボリックリンクが貼られたファイル。

設定ファイルの内容は以下。

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/ でうまくいった!

その他参考:プログラミングビギナーNekoteniがあなたに贈る!NginxでVirtual Hostの巻