Vagrantでnginx
開発用WebサーバーをVagrant上に構築した話。
CentOS7のbox上でnginxを動作させます
Vagrantがインストール済みで、仮想マシンはVirtualBoxを使用するものとします。
前に$
のみが書いてあるコマンドはホストOSで、[vagrant@localhost ~]$
が前に書いてあるコマンドはゲストOS上での実行です。
あと、vagrantコマンドは全部Vagrantfileのあるフォルダで実行してください
仮想マシンの用意
Vagrantfileの生成
適当な作業用ディレクトリを用意して、centos/7のVagrantfileを生成します
$ mkdir webserver
$ cd webserver
$ vagrant init centos/7
ネットワークの設定
$ vi Vagrantfile
でVagrantfileを開き、
# config.vm.network "private_network", ip: "192.168.33.10"
の先頭の#を消して保存します
起動
$ vagrant up
nginxのインストール
基本的にはこのサイトの通りにインストールすればOK
$ vagrant ssh
で仮想マシンに接続して
[vagrant@localhost ~]$ sudo vi /etc/yum.repos.d/nginx.repo
で、このファイルに
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
を入力して保存します。その後、
[vagrant@localhost ~]$ sudo yum install -y nginx
でインストールされます。
あとは、nginxを起動、有効化して
[vagrant@localhost ~]$ sudo systemctl start nginx
[vagrant@localhost ~]$ sudo systemctl enable nginx
ホストOSからhttp://192.168.33.10にアクセスして"Welcome to nginx!"が表示されればOKです
共有フォルダをドキュメントルートにする
サーバー上での動作テストをする度に、ファイルを仮想マシンにアップデートするのは手間なので、共有フォルダでホストOSのフォルダをゲストOSにマウントして、そこをnginxのドキュメントルートに設定します。
Guest Additionsのインストール
VirtualBoxで共有フォルダを利用するにはゲストOSにGuest Additionsをインストールする必要があります。これをVagrantから簡単にインストールするためにvagrant-vbguestプラグインをインストールします。
$ vagrant plugin install vagrant-vbguest
あとは、仮想マシンを再起動して
$ vagrant reload
この時にGuest Additionsが自動でインストールされると思いますが、もしされない場合は仮想マシンが起動した状態で
$ vagrant vbguest
で手動でインストールしてください
共有フォルダの生成
Vagrantfileと同じディレクトリに生成します
$ mkdir www
Vagrantfileの修正
共有フォルダの設定をします。
$ vi Vagrantfile
でVagrantfileを開き、Vagrant.configure("2") do |config| から end までの間のどこでもいいので
config.vm.synced_folder "./www", "/var/www", owner: "nginx", group: "nginx"
と追記します。僕はendの直前にいれました。
あとは、適応するために仮想マシンを再起動しましょう
$ vagrant reload
nginxの設定
$ vagrant ssh
で仮想マシンに接続し、
[vagrant@localhost ~]$ sudo vi /etc/nginx/conf.d/default.conf
で表示されたファイルの
root /usr/share/nginx/html;
という部分を
root /var/www;
に変更。あとは
[vagrant@localhost ~]$ sudo systemctl restart nginx
でnginxを再起動させればOK
SELinuxの無効化
こいつが邪魔して共有フォルダ内のファイルにnginxからアクセスできません。今回はあくまでテスト環境用なので、こんな厄介なものは無効化してしまいましょう。
[vagrant@localhost ~]$ sudo setenforce 0
で無効化できます。でも、このままだと仮想マシンを再起動したらまた有効になってしまうので、
[vagrant@localhost ~]$ sudo vi /etc/selinux/config
で開いたファイルの
SELINUX=enforcing
を
SELINUX=disabled
にしてください。
テスト
ホストOS側から、
$ echo "This is a test message." > www/index.html
適当なhtmlファイルを生成し、http://192.168.33.10にアクセスしてページが開けたら成功です。
VagrantでWebサーバー構築が何かと便利
今回nginxをVagrantで動かしたのは、nginx + Node.jsのテスト用サーバーが欲しかったからです。ご存知の通り、Node.jsで動かすHTTPサーバーは静的なファイルの公開がそこまで早くないので、動的なものをNode.jsで動かし、静的なものはNginxを使おうと思ったわけです。
Webサーバーの開発環境構築と言ったらXAMPPや、MacユーザーならMAMPが定番ですが、Vagrantを使えばLinuxの仮想マシンをすぐに用意できるので、テスト用サーバーをすぐに用意できる。これだとApache以外を利用するサーバーなんかでも開発環境として簡単に使えるので、かなり便利だしオススメです。
コメント