Debian8(さくらVPS)にNginxでVirtual Hostを構築
目的
Debian8(さくらVPS)サーバにインストールしたNginxでVirtual Host を構築する。
前提と環境
- さくら VPSにDebian8 ( 8.6 )インストール済み
- Nginx ( 1.10.2) はDebian8にインストール済み
- ドメインは以前取得済み(ムームードメイン)のドメインを使用
- 複数のサブドメインで運用できるようにする
NginxにVirtual Hostを設定
さくらインターネット側でドメインの登録
今回の設定は、ムームードメイン側の設定は「 GMOペパボ以外 のネームサーバを使用する」とし、さくらインターネット側に既取得済みのドメインの情報を登録することとした。
さくらインターネット側でサブドメインの設定を実施。
手順の詳細は参考サイト記載の「さくらVPSのサブドメイン設定方法 - メコログ」の通り。
会員メニュー --> 契約情報 --> 契約ドメインの確認 --> ドメインメニュー --> ゾーン編集 -->
ドメインが有効かを nsloojup コマンドで確認。
$ nslookup sub1.domain-a.com
ディレクトリ構成の決定
お好みですが、各ユーザのhomeディレクトリにsitesというディレクトリを新たに作成し、各webサイトの格納ディレクトリを作るという構成にしました。
サブドメインを作る場合は、サブドメイン名を、無い場合は www と命名することとしました。
/home/ユーザ名/sites/サブドメイン名/ドメイン名/public <-- index.html等格納
/log <-- log格納
今回、具体的には、sub1/domain-a.com と sub2/domain-a.comの2つを構築する。
/home/user1/sites/sub1/domain-a.com/.....
/home/user1/sites/sub2/domain-a.com/.....
NginxにVirtual Hostの設定
- Virtual Host用のデータを格納するディレクトリ作成
$ mkdir /home/user1/sites
$ mkdir /home/user1/sites/sub1
$ mkdir /home/user1/sites/sub1/domain-a.com
$ mkdir /home/user1/sites/sub1/domain-a.com/{public,log}
以下、sub2も同様に作成。
トップページ(index.html)の作成
$ vim ~/sites/sub1/domain-a.com/public/index.html
$ vim ~/sites/sub2/domain-a.com/public/index.html
テスト的に内容は以下。
<html>
<head>
<title>sub1/domain-a</title>
</head>
<body>
Welcome to Sub1.Domain-a.com! ←Webの画面にこれが表示されます。
</body>
</html>
バーチャルホスト設定ファイルの作成と配置
設定ファイルに関する情報は以下のファイルです。
/etc/nginx/nginx.conf
この中に、以下の記述があります。
include /etc/nginx/conf.d/*.conf;
デフォルトの設定ファイルは以下です。
/etc/nginx/conf.d/default.conf
設定ファイルの反映の方法は色々できるわけですが、/etc/nginx/conf.d ディレクトリ に「定義名.conf」のファイルを作成し、配置することとした。
/etc/nginx/conf.d/domain-a.conf
設定内容は以下。
server {
listen 80;
server_name sub1.domain-a.com ;
access_log /home/user1/sites/sub1/domain-a.com/log/access.log;
error_log /home/user1/sites/sub1/domain-a.com/log/error.log;
location / {
root /home/user1/sites/sub1/domain-a.com/public/;
index index.html index.php;
}
}
server {
listen 80;
server_name sub2/domain-a.com ;
access_log /home/user1/sites/sub2/domain-a.com/log/access.log;
error_log /home/user1/sites/sub2/domain-a.com/log/error.log;
location / {
root /home/user1/sites/sub2/domain-a.com/public/;
index index.html index.php;
}
}
確認
Nginxの再起動
$ sudo /etc/init.d/nginx stop ←Nginx停止
$ sudo /etc/init.d/nginx start ←Nginx起動
ブラウザで確認
参考サイト
プログラミングビギナーNekoteniがあなたに贈る!NginxでVirtual Hostの巻 - ねこテニ
nginxのサブドメインでrailsの複数アプリを運用 - mikami's engineer diary
nginx連載4回目: nginxの設定、その2 - バーチャルサーバの設定 - インフラエンジニアway - Powered by HEARTBEATS