LoginSignup
7

More than 5 years have passed since last update.

Vagrant1.8.4でcentos7 + php7 + composer + apacheの開発環境を作る

Last updated at Posted at 2017-05-03

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を開いて編集

編集箇所その1
# config.vm.network "forwarded_port", guest: 80, host: 8080
この行の#を外して
config.vm.network "forwarded_port", guest: 80, host: 8080
にする
編集箇所その2
# 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環境を停止することにした。

じゃましているvagrant環境のディレクトリに行って、停止する
$ cd じゃましているvagrant環境
$ vagrant halt

もしくは

global-statusコマンドを実行して作成済みのvagrant環境すべてのステータスを確認し、runningになっている環境をすべてhalt(停止)する

一括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
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
init.shを実行
$ bash init.sh

だいたい5分弱で終わった

本当はvagrantfileのprovisionに書きたかったんだけど、シンタックスエラーが発生してvagrant upできなくなってしまった・・・

php composerが入ったか確認

$ php -v
$ composer -v

localhostにブラウザからアクセスしてみる

apacheが起動していればtestページが見れるはず

*ポート番号を変えていたら8080の部分をそのポート番号にすること
http://localhost:8080

結果
スクリーンショット 2017-05-03 14.17.34.png

なるほど。

apache(httpd)がそもそも動いているのか確認

centos7からhttpdの確認はsystemctlコマンドを使うようになったそうです。

apacheの動作確認
$ 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
スクリーンショット 2017-05-03 14.20.27.png

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
index.php中身
<?php 

$hoge = 'uwaaaa';
echo $hoge;

phpの閉じタグである?>は書かない。理由は?>を書くと、?>の後に何かあると思われてしまうから。

ブラウザで確認

結果
*ポート番号を変えていたら8080の部分をそのポート番号にすること
http://localhost:8080

スクリーンショット 2017-05-03 14.32.33.png

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

以上。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7