VirtualBox + Vagrant + CentOS7 + PHP7 + MySQL5.6のローカル開発環境構築の手順について共有します。
最後にEC-CUBE4のインストールする所までやります。
使用環境
PC | Mac |
---|---|
仮想マシン | VirtualBox |
OS | CentOS7.6 |
サーバー | Apache, PHP7, MySQL5.6 |
1.Vagrantfileの初期化
仮想マシンVirtualBoxをインストールします、Webサーバを入れる箱のイメージです。
下記サイトからダウンロード出来ます。
VirtualBox
https://www.virtualbox.org/wiki/Downloads
次にVagrantをインストールします、仮想マシン構築・管理の手順を簡易なものにしてくれるツールです。
下記サイトからダウンロード出来ます。
Vagrant
https://www.vagrantup.com/
ローカルに仮想環境用のプロジェクトフォルダSatoshiDemizuを用意しました。
demi314$ cd
demi314$ cd MyVagrant
demi314$ mkdir SatoshiDemizu
demi314$ cd SatoshiDemizu
他にも仮想環境を用意する時は、MyVagrant内に別のプロジェクトフォルダを作成しています。
プロジェクトフォルダに移動したらVagrantの設定ファイルVagrantfileを初期化します、その際に導入するCentOSも指定してあげます。
今回はVagrantCoudで検索しました。
https://app.vagrantup.com/boxes/search/
すると検索結果一覧にcentos7の提供元が表示されるので「centos/7」をクリック。
コードが書かれたタブ「vagrantfile」「New」の2つが表示されるので、「New」に切り替えて1行目「vagrant init centos/7」をコピーします。
初期化が成功したらプロジェクトフォルダにVagrantfileが作成されるので、調整します。
# -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure("2") do |config| # The most common configuration options are documented and commented below. # For a complete reference, please see the online documentation at # https://docs.vagrantup.com. # Every Vagrant development environment requires a box. You can search for # boxes at https://vagrantcloud.com/search. config.vm.box = "centos/7" // 35行目辺り、コメントを外す # config.vm.network "private_network", ip: "192.168.33.10" config.vm.network "private_network", ip: "192.168.33.10" // 47行目辺り、共有フォルダに関する設定、下記を追記 # config.vm.synced_folder "../data", "/vagrant_data" config.vm.synced_folder "./", "/vagrant", type: 'virtualbox', :mount_options => ["dmode=777", "fmode=666"] // 68行目辺り、provisionに関する設定、下記を追記 # config.vm.provision "shell", inline: <<-SHELL config.vm.provision :shell, :path => "provision.sh"
config.vm.provisionの箇所で、vagrantの初回立ち上げついでにprovision.shというファイルを処理してくれる様になります。
このファイルにWebサーバ、php、MySQLなどのインストール文を記載しておけば、もし「vagrant destroy」で仮想環境を破棄する事があってその後再構築する時でも「vagrant up」だけで諸々の環境を再構築できるという仕組みになっています。
ここでは、他のブログでprovision.shファイルの設定を共有してくれてる方がいたので、それを使わせてもらいます。新規で「provision.sh」ファイルを作成し、下記リンクの内容でプロジェクトフォルダ内に保存してください。
provision.shファイルの設定が終わったら、vagrantを起動します。
demi314$ vagrant up
これで仮想マシン起動ついでにwebサーバーのインストール等も実施してくれます。
2.provision.hs読み込みのタイミングについて
provision.shが読み込まれるのは以下のタイミングです。
- 最初に「vagrant up」 で起動されるタイミング
以前に起動されており、休止や停止状態から再度 「vagrant up」を起動しても実行されない。但し、「vagrant up –provision」とすれば実行される。 - 「vagrant provision」を実行した時
- 「vagrant reload –provision」を実行した時
3.リモート接続と共有フォルダの確認
仮想マシンが起動したら、sshで接続します。
demi314$ vagrant ssh
まず共有フォルダが正しく設定されているか確認します。vagrantではデフォルトで「/vagrant」がローカルのプロジェクトフォルダと共有される様になっていて、Vagrantfileでも設定変更できます。
config.vm.synced_folder "./", "/vagrant", type: 'virtualbox', :mount_options => ["dmode=777", "fmode=666"]
以下のようにリモートで作成したindex.htmlがローカルのプロジェクトフォルダに出てきたら成功です。
最初はここでうまく共有できずにハマりました、結果として「type: 'virtualbox'
」を記述したら上手く共有できる様です。
参考
https://stackoverflow.com/questions/46230783/vagrant-synced-folder-without-reload
また、provision.shで「/vagrant 」を「 /var/www/html」に紐づけていたので「/var/www/html」に移動してもindex.htmlが確認できるはずです。
# Vagrantの共有フォルダにパスを設定
sudo rm -rf /var/www/html
sudo ln -fs /vagrant /var/www/html
ブラウザで「http://192.168.33.10:8000」にアクセスして、index.htmlの内容が表示されれば成功です。
4.データベースの準備
次にMySQLのrootパスワードを設定します。
vagrant@localhost ~$ mysql_secure_installation
最初の質問は何も押さずにEnterして進みます。
Enter current password for root (enter for none): //Enter
Change the root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Reload privilege tables now? [Y/n] Y
設定が完了したらrootでログインします。
vagrant@localhost ~$ mysql -u root -p
新規でデータベースを作成し、ユーザーと紐付けていきます。ユーザー名とパスワードは任意の値に書き換えてください。
mysql> create database test_db;
mysql> grant all on test_db.* to dbuser@localhost identified by 'testtest';
// grant all on test_db.* to [ユーザー名]@localhost identified by 'パスワード'
データベースが出来ているか確認
mysql> show databases
ユーザーが作成されているか確認
mysql> SELECT Host, User FROM mysql.user;
データベースユーザーの紐付けについて確認
mysql> SELECT user, host, db FROM mysql.db;
5.EC-CUBE4のダウンロード
公式サイトからEC-CUBE4をダウンロードしてプロジェクトフォルダに持ってきます。
https://www.ec-cube.net/download/
本当はここで展開したいのですが、vagrantの共有フォルダで展開するとその後がどうも上手くインストールできません。
仕方ないので/home/vagrantフォルダ内で展開しました。
vagrant@localhost ~$ cd /vagrant
vagrant@localhost ~$ cp eccube-4.0.3.zip /home/vagrant/eccube-4.0.3.zip
vagrant@localhost ~$ cd /home/vagrant/
vagrant@localhost ~$ unzip eccube-4.0.3.zip
展開が終わったらwebサーバを起動してeccubeにアクセス
vagrant@localhost ~$ php -S 192.168.33.10:8000
ブラウザURL - http://192.168.33.10:8000/eccube-4.0.3/index.php
インストール画面が出てくるのであとは画面の案内に従ってフォームに記入していけばOKです。
共有フォルダでの展開がどうしても上手く行かないので、原因分かる方いたら教えて欲しいです。