--- title: vagrantを用いたPHPの環境構築 tags: PHP Vagrant Mac Windows CentOS author: tiwu_official slide: false --- # 初めに この記事は * PHPを自宅で動かしたい * 開発環境の構築はさっぱり * 環境構築に時間をかけたくない * vagrantを使ってみたい という比較的初心者向けになっています。 最終的に、PHPからmysqlを操作し、ブラウザでデータの確認までします。 ステップ1(本記事)→[vagrantを用いたPHPの環境構築](http://qiita.com/tiwu_offical/items/f135e6b6fbbe3ec6aa54) ステップ2→[centOS6.5にmysql5.6をインストールする](http://qiita.com/tiwu_offical/items/5ff3fa38611de058704a) ステップ3→[PHPからmysqlの操作](http://qiita.com/tiwu_offical/items/3415fad87fb3a6d68666) ### 前提条件 * vagrantインストール済み * VirtualBoxインストール済み * centOS入手済み ### 開発環境 * OS X Yosemite Windowsでも同じことができると思います(未確認) ※追記 Windows環境で試してみました。 マシンの起動(vagrant up)までは同じ手順になります。 Windowsのコマンドプロンプトはssh接続機能がないため Tera Term等を利用してcentOSにログインすることになります。 Tera Term等でログインする以外は同じ手順で大丈夫でした。 Tera Termのログインは ホスト名 => 127.0.0.1 TCPポート => 2222 user => vagrant password => vagrant でした。 ※追記 # 1.BOXの追加 まず入手したcentOSをvagrantに追加します。 $ vagrant box add NAME URL NAME -> 任意の名前 URL -> 入手したcentOSの物理パス (例) $ vagrant box add centOS /Users/myPc/centos65-x86_64-20140116.box # 2.仮想マシンの作成 次に仮想マシンを作成します。仮想マシンは一つのディレクトリに一つしか作成できません。 $ mkdir DirNAME $ cd DirNAME $ vagrant init NAME DirNAME -> 任意のディレクトリ名 NAME -> vagrantにBOXを追加した時の名前。上記例ではcentOS (例) $ mkdir centOSDir $ cd cnetOSDir $ vagrant init centOS ディレクトリの中にVagrantfileというファイルがあれば成功です。 # 3.ネットワークの設定 次にVagrantfileを編集してネットワークの設定を行います。 $ vi Vagrantfile 大体25行目あたりの # config.vm.network "private_network", ip: "192.168.33.10" この行のコメントアウトを外します。 # 4.仮想マシンの起動 いよいよ仮想マシンの起動です。 $ vagrant up で起動。 $ vagrant ssh で仮想マシンにログインできます。 $ exit で仮想マシンからログアウトできます。 ただし、Vagrantfileがあるディレクトリからでしかログインができません。 そこで、どこからでも仮想マシンにログインできるように設定します。 Vagrantfileがあるディレクトリで以下のコマンドを叩きます。 $ vagrant ssh-config --host NAME >> ~/.ssh/config $ ssh NAME NAME -> 任意の名前 これでどこからでも仮想マシンにssh NAMEでログインができます。 (例) $ vagrant ssh-config --host centOSssh >> ~/.ssh/config $ ssh centOSssh # 5.Apache,PHPのインストール centOSにログインしたら次にApacheとPHPをインストールします。 $ sudo yum install php $ sudo yum install httpd これでインストールできます。 # 6.ブラウザからのアクセス 次に実際に自身が作ったページにブラウザからアクセスしてみましょう。 Apacheは/var/www/にあるhtmlというディレクトリを見に行きます。 まずはPHPではなくhtmlファイルから。 $ cd /var/www/html $ sudo vi index.html ```index.html Hello World ``` index.htmlを作成したらコメントアウトをした行のipアドレスにブラウザからアクセスします。 # config.vm.network "private_network", ip: "192.168.33.10" この例だと192.168.33.10にアクセスしましす。 Hello Wolrdと表示されたら成功です。 次にPHPで表示させてみます。まずApacheにPHPを対応させます。 $ sudo vi /etc/httpd/conf/httpd.conf でhttpd.confを開いてAddTypeタイプで検索してください 自分の場合は760行目あたりにありました。 その下にある # If the AddEncoding directives above are commented-out, then you # probably should define those extensions to indicate media types: # AddType application/x-compress .Z AddType application/x-gzip .gz .tgz この下に下記2行を追加してください。 AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 追加した結果は # If the AddEncoding directives above are commented-out, then you # probably should define those extensions to indicate media types: # AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps となります。これで拡張子がPHPのファイルをPHPプログラムとして処理をしてくれます。 ではindex.htmlを作ったディレクトリでPHPファイルを作ってみましょう。 $ sudo vi test.php ```test.php ``` そして、先ほどアクセスしたアドレス(自分の例では192.168.33.10)に/test.phpとつけてアクセスしてみましょう。 (例) 192.168.33.10/test.php Hello PHPと表示されたら成功です。 # 7.Macとのファイル同期 これで仮想マシン上のファイルにブラウザから見れるようになりましたが、 編集するたび仮想マシンにログインしてはお気に入りのエディタで編集できなかったりして めんどくさいのでMac上でファイルを同期したいと思います。 といっても特に設定する必要はなく、Mac上のVagrantfileがあるディレクトリにあるファイル は仮想マシンに自動的に同期されます。仮想マシンの同期先は/vagrantになります。 試しにMac上のVagrantfileがあるディレクトリにsampleという名前のディレクトリを作って、 中にsample.txtを作って同期されるか確認してみましょう。 Vagrantfileがあるディレクトリで $ mkdir sample $ cd sample $ vi sample.txt ```sample.txt サンプル ``` 上記のコマンドを叩いたら、仮想マシンにログインし確認してみましょう。 ログインしたら $ cd /vagrant $ ls $ cd sample $ cat sample.txt でsampleディレクトリがあるのを確認し、sample.txtがあるか確認して、サンプルと表示されたら成功です。 # 8.シンボリックリンクの作成 これで、仮想マシンのファイルをブラウザから見れるようになり、Mac上で編集したファイルを仮想マシンと同期をとることができました。 しかし、仮想マシンのApacheが見にいくディレクトリはは/var/www/htmlですが 同期されるディレクトリは/vagrantです。 せっかく同期されているのにこのままではブラウザから同期したファイルを見れません。 そこでシンボリックリンクを作成して、ブラウザから同期したファイルを見れるようにします。 まず、仮想マシンにログインして/var/www/にあるhtmlディレクトリを削除します。 $ cd /var/www $ sudo rm -r html すると $ rm: remove directory `html'? と聞かれるのでyesと打ってエンターを押します。 $ rm: remove directory `html'?yes これでhtmlディレクトリを削除しました。 つぎに/vagrantにhtmlディレクトリを作ります。Mac上でVagrantfileがあるディレクトリでhtmlディレクトリを作成します。 $ mkdir html これで同期されるため仮想マシンの/vagrantにhtmlディレクトリができました。次にシンボリックリンクを作成します。仮想マシンにログインして $ sudo ln -s /vagrant/html /var/www/html これでシンボリックリンクを作成しました。 シンボリックリンクはショートカットのようなもので、Apacheは/var/www/htmlを見にいくと /var/www/にあるhtmlはシンボリックリンクのため、/vagrantにあるhtmlディレクトリを見にいくように なります。 つまり、Mac上で編集したファイルは自動で仮想マシンと同期され、ブラウザで見れるようになります。 # 9.Macで編集したファイルをブラウザで確認 最後にMacでファイルを作成し、自動的に仮想マシンに同期して、ブラウザから確認します。 Mac上でVagrantfileがあるディレクトリに作成したhtmlディレクトリの中にファイルを作成します。 $ vi last.php ```last.php ``` 作成して、test.phpにアクセスしたのと同じようにブラウザからアクセスしてみましょう。 (例) 192.168.33.10/last.php last phpと表示されたら成功です。 # 終わりに これでvagrantを用いたPHPの環境構築は終わりです。 今回は手動で環境構築を行いましたが、chef等を利用して自動で環境構築を行うことも可能です(chefは勉強中)。 [次回](http://qiita.com/tiwu_offical/items/5ff3fa38611de058704a)はcentOSにmysqlをインストールしたいと思います。