VirtualBox + CentOS7 + PHP7 + MySQL5.6でローカル開発環境を構築する[MacOS]

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/

手順としては、まず検索窓から「centos」で検索します。

すると検索結果一覧に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」ファイルを作成し、下記リンクの内容でプロジェクトフォルダ内に保存してください。

VirtualBox Vagrant CentOS7 PHP mySQL5.6 CakePHPのセットアップ方法

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

ではWebサーバを立ち上げてみます。

ブラウザで「http://192.168.33.10:8000」にアクセスして、index.htmlの内容が表示されれば成功です。

4.データベースの準備

次にMySQLのrootパスワードを設定します。

[email protected] ~$ 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でログインします。

[email protected] ~$ mysql -u root -p

新規でデータベースを作成し、ユーザーと紐付けていきます。ユーザー名とパスワードは任意の値に書き換えてください。

mysql> create database test_db;
mysql> grant all on test_db.* to [email protected] 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;


諸々確認出来たらexitでデータベスを抜けます。

5.EC-CUBE4のダウンロード

公式サイトからEC-CUBE4をダウンロードしてプロジェクトフォルダに持ってきます。
https://www.ec-cube.net/download/

本当はここで展開したいのですが、vagrantの共有フォルダで展開するとその後がどうも上手くインストールできません。

仕方ないので/home/vagrantフォルダ内で展開しました。

[email protected] ~$ cd /vagrant
[email protected] ~$ cp eccube-4.0.3.zip /home/vagrant/eccube-4.0.3.zip
[email protected] ~$ cd /home/vagrant/
[email protected] ~$ unzip eccube-4.0.3.zip

展開が終わったらwebサーバを起動してeccubeにアクセス

[email protected] ~$ php -S 192.168.33.10:8000
ブラウザURL - http://192.168.33.10:8000/eccube-4.0.3/index.php

インストール画面が出てくるのであとは画面の案内に従ってフォームに記入していけばOKです。

EC-CUBE4のインストール方法と具体的な手順

共有フォルダでの展開がどうしても上手く行かないので、原因分かる方いたら教えて欲しいです。

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA