NginxでVirtualHostを使ってサイトを立ち上げる。
前書き
題名の通りNginxでVirtualHostの機能を使ってサイトを立ち上げる手順です。
せっかくVirtualHostを使うので、1個のドメインで2個のサイトを立ち上げてみます。
さくらVPSで借りているサーバーにubuntuをインストールし、そのubuntuにnginxをインストールして、そこで立ち上げた時の手順です。
また手順だけ覚えても何をしているか分からないと柔軟性に乏しい知識になってしまうので、適宜補足で理解を促していきます。
本題
ドメインを取得する
一番最初に必要なのはドメインです。
ドメインは、いうなればインターネット上の住所です。 A地区を自分の土地にします!ここに遊びにきてねー!みたいな感じです。
これはお好きな場所で取得して頂いてもいいのですが、今回はお名前.comで取得します。
僕はintensify.siteというドメインを購入しました、40円くらいだったかな?
この後ドメインにネームサーバを登録する作業と、さくらインターネット側にドメインの情報を登録する作業をしなければいけません。
ドメインにネームサーバを登録する作業に関しては、お名前.comを利用していれば購入時にチェックボックスにチェックをいれるだけでやってくれるので、今回は割愛します。
さくらインターネットにドメインを登録する
まずはドメインコトロールパネルにアクセスします。
次に登録します。
これが終わったら次にゾーンを設定します
今回は2サイト立ち上げればokとするので
intensify.siteとwww.intensify.siteで2サイトとします。
なのでこれを選びましょう
IPアドレスの欄には貴方が借りたサーバーのIPアドレスを入力してください。
DNSサーバーとドメイン
今やった作業を簡単に説明します。
今貴方はドメインを取得し、DNSサーバーと紐づけるという作業を行いました。
先ほど説明した通りドメインとは住所で、DNSサーバーは案内所みたいなものです。
intensify.siteっていう住所にいきたいけど、世界は広すぎて住所を知っているだけではたどり着けません。
そこでDNSサーバーに住所を登録しておくと、アクセスする際にDNSサーバーにintensify.siteって住所に行きたいんだけどどうやっていくの?と問い合わせてくれるようになります。
結果DNSサーバーが、こっちの道からいけるよー。と案内してくれるので、intensify.siteに辿り着くことができるようになります。
ただしこの状態ではintensify.siteにはたどり着けますが、intensify.siteのどこにいっていいか分からないのでそれをVirtual Hostで設定してあげます。
NginxにVirtual Hostの設定をする
まずはデータを保存しておくディレクトリを作ります。
ここでは好きなディレクトリを自身で選ぶことができますが、慣例に従い/var/www/html
に保存していくことにします。
sudo mkdir /var/www/html/intensify_main sudo mkdir /var/www/html/intensify_sub sudo mkdir /var/www/html/intensify_main/{public,private,log,backup} sudo mkdir /var/www/html/intensify_sub/{public,private,log,backup}
これで下準備が完了です
設定ファイルを作ります
sudo vim /etc/nginx/sites-available/intensify.site
まっさらなファイルに設定情報を書き込んでいきます
server { listen 80; server_name intensify.site; access_log /var/www/html/intensify_main/log/access.log; error_log /var/www/html/intensify_main/log/error.log; location / { root /var/www/html/intensify_main/public/; index index.html; } } server { listen 80; server_name www.intensify.site; access_log /var/www/html/intensify_sub/log/access.log; error_log /var/www/html/intensify_sub/log/error.log; location / { root /var/www/html/intensify_sub/public/; index index.html; } }
これで設定はokです
補足として説明しておくと
listen 80 は待ち受けるポート番号を指定しています。
server_nameはサーバーの名前です。 VirtualHostを利用して疑似的に複数台のサーバーとして稼働させるので、このように2台のサーバーとして振舞う設定ができます。
access_log, error_logは名前の通りのログを保存しておくファイルを指定しています。
locationはそのサーバーにアクセスされたときどの場所のコンテンツを返すかを指定しています
それでは最後に
sudo ln -s /etc/nginx/sites-available/intensify.site /etc/nginx/sites-enabled/intensify.site
として設定は終わりになります
これはNginxが起動時にsites-enabledを読み込むからなのですが、avaliableに書き込んでシンボリックリンクでenabledに置くのが慣例らしいです。
これであとは指定したパスにおいたindex.htmlを好きなように記述して頂ければ完成です
sudo /etc/init.d/nginx stop sudo /etc/init.d/nginx start
としてNginxを再起動すれば
うまくいきました、お疲れ様でした。