Vagrant1.8.4でcentos7 + php7 + composer + apacheの開発環境を作ります。
前提) vagrantはインストール済み
centos7のboxを取得する
$ vagrant box add centos/7
centos/7を指定することでcentosのversion7をダウンロードしてboxに追加してくれる。
この時のbox名はcentos/7そのままになる。
initする
作業用ディレクトリに移った後、これを実行
$ vagrant init centos/7
これでvagrantfileがつくられる。
vagrantfileを編集してhttpアクセスできるようにする
vagrantfileを開いて編集
# config.vm.network "forwarded_port", guest: 80, host: 8080
この行の#を外して
config.vm.network "forwarded_port", guest: 80, host: 8080
にする
# config.vm.network "private_network", ip: "192.168.33.10"
この行の#を外して
config.vm.network "private_network", ip: "192.168.33.10"
にする
その1をやることでlocalhost:8080でアクセスできるようにする。(8080ポートがいやだったらhostで指定してあるポートを変えれば良い)
その2をやることで192.168.33.10でアクセスできるようにする
centos/7を立ち上げ
$ vagrant up
vagrant up に失敗してエラーが出た
Vagrant cannot forward the specified ports on this VM, since they
would collide with some other application that is already listening
on these ports. The forwarded port to 8080 is already in use
on the host machine.
To fix this, modify your current project's Vagrantfile to use another
port. Example, where '1234' would be replaced by a unique host port:
config.vm.network :forwarded_port, guest: 80, host: 1234
Sometimes, Vagrant will attempt to auto-correct this for you. In this
case, Vagrant was unable to. This is usually because the guest machine
is in a state which doesn't allow modifying port forwarding. You could
try 'vagrant reload' (equivalent of running a halt followed by an up)
so vagrant can attempt to auto-correct this upon booting. Be warned
that any unsaved work might be lost.
以前立ち上げたvagrant環境とポートがバッティングしていたようだ。ポートを1234に変更したらいいよ、みたいなことを言われているけど、面倒なので昔使っていたvagrant環境を停止することにした。
$ cd じゃましているvagrant環境
$ vagrant halt
もしくは
global-statusコマンドを実行して作成済みのvagrant環境すべてのステータスを確認し、runningになっている環境をすべてhalt(停止)する
$ vagrant global-status
f1ca449 default virtualbox poweroff /Users/aaa/Documents/vagrant/laravelTest2
8748a38 default virtualbox running /Users/aaa/Documents/vagrant/laravelTest3
40248e1 default virtualbox running /Users/aaa/Documents/vagrant/laravelTest4
329e424 default virtualbox poweroff /Users/aaa/Documents/vagrant/ssh_test
8748a38と40248e1がrunningになっているのでこいつらを停止させたい。
vagrant halt に続けてハッシュ値?を指定してあげれば止められる。
$ vagrant halt 8748a38 40248e1
停止できたらもう一度vagrant up して起動チャレンジ
perlのDLやinstall等が始まってだいたい2分ほどでupが終わる。
upが完了したらsshログインする
$ vagrant ssh
php7やapacheをインストール
ここを参考にした。
http://qiita.com/t114/items/c5b86043534cd069afdf
viでinit.shファイルを作成し以下を記述
$ vi init.sh
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum install -y --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-xml php-zip
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
$ bash init.sh
だいたい5分弱で終わった
本当はvagrantfileのprovisionに書きたかったんだけど、シンタックスエラーが発生してvagrant upできなくなってしまった・・・
php composerが入ったか確認
$ php -v
$ composer -v
localhostにブラウザからアクセスしてみる
apacheが起動していればtestページが見れるはず
*ポート番号を変えていたら8080の部分をそのポート番号にすること
http://localhost:8080
なるほど。
apache(httpd)がそもそも動いているのか確認
centos7からhttpdの確認はsystemctlコマンドを使うようになったそうです。
$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd(8)
man:apachectl(8)
Active: inactive(dead)
死んどるやんけ
apacheを起動する
$ sudo systemctl start httpd
結果
*ポート番号を変えていたら8080の部分をそのポート番号にすること
http://localhost:8080
apacheの起動確認できた。
サーバー起動する度にapacheが起動するようにする
$ sudo systemctl enable httpd
*これであってるのかな?
せっかくなのでphpページを表示させる。
ドキュメントルートは初期設定なら/var/www/html/
になっているはず
ドキュメントルートとは?
クライアントからコンテンツのリクエストに対して対応するコンテンツを返します。それらのコンテンツを配置しておく場所をドキュメントルートといいます。
https://www.adminweb.jp/apache/docroot/index1.html
$ cd /var/www/html
$ echo "<?php echo 'uwaaaaa' ?>" > index.php
echoの部分で許可がありません
と言われた。sudo echoをしてもダメだった ・・・
これはsuコマンドでrootになると使用できるようになる。rootのパスワードは"vagrant"
なのでviでindex.phpを作ってphp文を書くことにする
$ sudo vi index.php
<?php
$hoge = 'uwaaaa';
echo $hoge;
phpの閉じタグである?>
は書かない。理由は?>を書くと、?>の後に何かあると思われてしまうから。
ブラウザで確認
結果
*ポート番号を変えていたら8080の部分をそのポート番号にすること
http://localhost:8080

とりあえず動いてよかった。
以上。