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 upnginxのインストール
基本的にはこのサイトの通りにインストールすれば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 wwwVagrantfileの修正
共有フォルダの設定をします。
$ vi VagrantfileでVagrantfileを開き、Vagrant.configure("2") do |config| から end までの間のどこでもいいので
config.vm.synced_folder "./www", "/var/www", owner: "nginx", group: "nginx"と追記します。僕はendの直前にいれました。
あとは、適応するために仮想マシンを再起動しましょう
$ vagrant reloadnginxの設定
$ 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以外を利用するサーバーなんかでも開発環境として簡単に使えるので、かなり便利だしオススメです。
コメント