Vagrantでapacheをインストールして自動起動されなかったのでメモになります
通常のインストールは以下からセットアップ
sshでvagrantにアクセスする
vagrant ssh
Apacheのインストール
再起動しても立ち上がるように設定
sudo yum -y install httpd
sudo service httpd start
sudo chkconfig httpd on
sudo service iptables stop
sudo chkconfig iptables off
exit
- サーバからログアウト後にVagrantファイルを編集する(※プライベートIPは自由に変更して良い)
- Vagrantfileの編集
config.vm.network :private_network, ip: "192.168.33.10"
Vagrantの再起動
vagrant reload
共有フォルダの設定(シンボリックリンク)
Vagrantには共有フォルダ設定されている。 ローカルのディレクトリと仮想のサーバとリンクされているため、シンボリックしているとサーバにアップロードしなくても即座に変更することができる
vagrant ssh
ls /vagrant // サーバのRootのvagrantディレクトリとローカルのディレクトリはリンクしている
共有ディレクトリを/var/www/htmlの公開ディレクトリにシンボリックリンクをはる
sudo ln -fs /vagrant /var/www/html
Apacheの設定部分
元ネタ
これはApacheに関わらず、Vagrant共有ディレクトリにサービス起動に必要なファイルを配置している場合に発生する現象です。
シンボリックにしてしまうとVagrant再起動時に、Apacheが自動再起動できなくなる
原因
これは、/etc/init.dの起動スクリプトが実行されるタイミングで/vagrantディレクトリがマウントされていないことが原因です。 その時点で必要なファイルが存在しないため、起動でエラーになってしまっています。
対策
起動スクリプトを作成してマウント状態をチェックするスクリプトを実行する
vagrant ssh // sshでログイン
sudo vi /usr/local/bin/vagrant-mount-checker // サーバ上にスクリプトを作成
以下のスクリプトを作成
#!/bin/sh
check_vagrant_mount() {
local prog=$1;
for ((i = 1; i <= 6; i++))
do
[ -f /vagrant/Vagrantfile ] && return 0
sleep 5
done
/usr/bin/logger -t vagrant-mount-checker "$prog couldn't start, because the vagrant shared directory didn't mount."
return 1
}
起動スクリプトを編集
sudo vi /etc/init.d/httpd
以下を処理の最初に追加する
. /usr/local/bin/vagrant-mount-checker
check_vagrant_mount `basename $0`|| exit 1
VagrantでCSSの更新が反映されない場合の対処法
Vagrant上で作成したファイルでCSSなどが反映されない現状になります。 これは静的なファイルのようにRequestの処理にデータのアクセスを必要としない時には、ファイルを読み込むことなくカーネルのsendfileを使ってファイルを送るようになっているため
vagrant ssh
sudo vi /etc/httpd/conf/httpd.conf
httpd.confファイルのEnableSendfile onをoffに設定する
EnableSendfile off
※Nginxの場合
sendfile off;
最後にWEBサーバの再起動
sudo service httpd restart