Vagrantでnginx起動してもブラウザから見れない時の対処法

f:id:media-gatch:20181204172402j:plain

どうもー・ω・ガッチ(@MediaGatch)です。

vagrantを使ってWEB制作の環境を作っているのですが、ハマりどころもあるので備忘録として。

vagrantにnginxをインストールして起動したけれど、ブラウザで見れない。これを解決したので、同じような方の参考になるかと思います。

この記事では以下の環境が対象です。
centOSのバージョンが同じであればおそらく大丈夫だsとは思いますが。

【host環境】
OS: MacOS 10.14.1 (Mojave)
vagrant: 2.2.0
virtualBox: 5.2.20

vagrant環境】
OS:centOS7
nginx: 1.14.1

記事の内容はこちら

vagrantにnginxをインストール

nginxはapacheと同じでWEBサーバーの役目をしてくれます。 apacheの設定は複雑なんですが、nginxはわかりやすく、設定も簡単なので開発時にはいつも使ってます。処理速度も早く使用メモリも低いことからレンタルサーバーでもnginxの使用が増えているようです。

nginxリポジトリの追加

nginxのインストールは yum で行います。 その前に、yumのデフォルトリポジトリにはnginxのリポジトリがないため、追加してインストールできるようにします。

nginxのリポジトリ追加は、vagrantsshで接続し、以下のコマンドを実行すれば完了です。

$ yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

リポジトリは、プログラムを集めたサーバーのイメージで、ダウンロードする先のことですね。 ダウンロード先を増やすことで色々なプログラムをダウンロードしインストールできるようにしています。

nginxのインストール

nginxのインストールは以下のコマンドでできます。

$ sudo yum install --enablerepo=nginx nginx

yumコマンドのoption「--enablerepo=nginx」は、ダウンロード先のリポジトリにnginxのリポジトリを使います。と指定しています。

nginxがインストールされているか確認します。

$ nginx -v

nginxの起動

centOS7のシステムコントロールからnginxを起動します。 nginxをそのまま起動することもできますが、自動起動とかの設定もあるのでこちらを使ってます。

$ sudo systemctl start nginx

おまけに自動起動の設定(CentOS7の場合)

centOSの起動時に自動でnginxも起動するように設定しておきます。

$ sudo systemctl enable nginx

開発環境ではあまり効果はないかもしれませんが、本番環境の場合は絶対しておいた方が良いです。 本番環境でサーバーの負荷が高くなりOS再起動してしまうなんてこともありますし、手動で再起動することもあったりします。 その際に、nginx、mysql、キャシュサーバー、クーロンなど全てを手動で起動していくのは大変なので自動起動に任せちゃいましょう。

僕も会社のサイトを運営しているときに、何度か負荷が高くなりOS再起動の経験をしています。 そこから自動起動の大切さとありがたさが分かりました(笑)

ちなみに、自動起動できているかは以下のコマンドで確認できます。

$ sudo systemctl list-unit-files  -t service | grep nginx
nginx.service    enabled

nginx.serviceの横の文字が「enableになっていれば自動起動になっています。

ブラウザから見れない時は

f:id:media-gatch:20181204174410j:plain

vagrantのCentOS7にnginxもインストールしたし、ブラウザから確認できるかと思ったら、できないんですね。。。

世の中、そんなに甘くなかった。。。

僕が試した内容を3つ紹介しておきます。①、③で僕の場合は見れるようになりました!

見れない時の対処法① Vagrantfileの確認

Vagrantfileの config.vm.network を有効にします。

Vagrantfileは作成された時に、必要な設定項目をコメントアウトで記載してくれているので、コメントアウトを消すだけです。

ipなども変更することもできるようですが、それが原因で見れないってこともありそうなので、今回はデフォルトのipを使用しています。

  config.vm.network "private_network", ip: "192.168.33.10"

見れない時の対処法② ファイアーフォールを切る

ブラウザから 192.168.33.10 にアクセスすると、プロキシとファイアーウォールを確認するの文字が出てきた場合、ファイアーウォールの可能性が高いです。

ファイアーフォールを切るには以下のコマンドで実行できます。

$ systemctl stop firewalld

僕の場合は、ファイアーフォールを切ってもブラウザから見れませんでした。。。

見れない時の対処法③ ファイアーフォールの設定を変更する

ファイアーフォールの設定を変更は、コマンドを2つ実行します。

$ sudo firewall-cmd --add-service=http --permanent
success
$ sudo firewall-cmd --reload
success

参考はこちらのサイトです。

>>仮想マシン(CentOS7)にWebサーバーNginxをインストールしブラウザからWEBページを表示確認する方法

気になったので、firewall-cmdコマンドコマンドを調べてみると、昔よく聞いていた絶対に触りたくないiptablesが、CentOS7から変わったみたいですね。

--add-service でhttp通信を許可し、 --permanent で恒久的な対応。という意味みたいです。

詳しくはこちらを参照ください。 >>CentOS 7 firewalld よく使うコマンド

この設定で僕のvagrant環境では、ホストOSのMacのブラウザ(chrome)からvagrant環境のページが見れるようになりました。

まとめ

vagrantはコマンドで実行したり設定したりするので難しい印象だったけれど、使ってみると意外とサクサクと設定ができてWEB制作の開発環境が作れるのでなかなか良いですね!

Mac自体の環境を汚さないのでそれもまた良いですねー!

vagrantでnginxのバーチャルホストもできるようにしていきたいので、できたらまた記事にします。 wordpressをいれてブログ環境もgit管理できるようにしていこうと考えてますので、この辺もできたら記事にしていきたいなと思います。

では。ありがとうございました。