Ideal Reality

興味の赴くままに

Vagrantでnginx

開発用WebサーバーをVagrant上に構築した話。

CentOS7のbox上でnginxを動作させます

Vagrantがインストール済みで、仮想マシンはVirtualBoxを使用するものとします。

前に$ のみが書いてあるコマンドはホストOSで、[vagrant@localhost ~]$ が前に書いてあるコマンドはゲストOS上での実行です。

あと、vagrantコマンドは全部Vagrantfileのあるフォルダで実行してください

Contents
スポンサーリンク

仮想マシンの用意

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のインストール

nginx: Linux packages

基本的にはこのサイトの通りにインストールすれば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以外を利用するサーバーなんかでも開発環境として簡単に使えるので、かなり便利だしオススメです。

スポンサーリンク

コメント

投稿されたコメントはありません

名前

メールアドレス(任意)

コメント

関連する投稿

VagrantのWebサーバーをmDNSでLAN内からアクセスできるようにしてみた