VagrantでLAMP環境構築 + Cakephp3.6


目的と理由

  • XAMPPを使用するのではなく、Vagrantを使って環境構築したい。
  • Linux,MySQL,cakephp3のインストールが面倒くさいから一気に整えてしまいたい。
  • Cakephp3でDBでユーザー作成・権限付与、Cakephp3との接続の方法が知りたい。

実際にVagrantのインストールから
DB設計に移行したところまでを記載します。
こちらの記事がちょっとした環境構築の手順書になれば幸いです。

目次

1)VirtualBox,Vagrantのインストール
2)Vagrantfileの作成・修正
3)MySQL,Apache,PHPインストールの下準備
4)Vagrant upとその後の確認事項
5)Cakephp3のインストール
6)Apacheのconfigファイルの編集
7)MySQLのユーザーの作成と権限付与
8)Cakephp3とMySQLの接続
9)まとめ

構築手順

1)VirtualBox,Vagrantのインストール

どちらもOSにあったものをダウンロードする
※私の場合はWindows10 64bit

VirtualBoxのダウンロードとインストール
https://www.virtualbox.org/wiki/Downloads
Vagrantのダウンロードとインストール
https://www.vagrantup.com/downloads.html

2)Vagrantfileの作成・修正

  • Vagrant fileの作成
# Vagrantfileを置きたいディレクトリの作成
mkdir vagrant

# srcを置きたいディレクトリの作成
mkdir src

# Vagrantfileの作成(Vagrant init)
cd vagrant

# 新しくディレクトリの作成をしたい場合はmkdir
vagrant init "bento/centos-7.4"

※vagrantディレクトリとsrcディレクトリは同じ階層で作成する
bentoはchef社が提供しているvagrant用のbox
こちらがbentoの一覧↓
https://app.vagrantup.com/bento

  • Vagrantfileの修正
# コメントアウト(#)を削除
config.vm.network "private_network", ip: "192.168.33.10"

# パーミッションの設定
# config.vm.synced_folderの記述を修正してコメントアウト(#)を削除
config.vm.synced_folder "../src", "/vagrant", mount_options:['dmode=777','fmode=777']

# config.vm.provisionの記述を修正
config.vm.provision "shell", :path => "provision.sh"

※パーミッション設定しないと、Cakephp3がうまくインストールされなかったので注意
dmode:ディレクトリ、fmode:ファイルのパーミッション設定
dmode,fmodeについて詳しく書かれている記事↓
https://teratail.com/questions/29027
config.vm.networkについて詳しく書かれている記事↓
https://qiita.com/ringo0321/items/aec4c543cce63e60a529

3)MySQL,Apache,PHPインストールの下準備

  • provision.shの作成
# ディレクトリ内の確認
ls

# Vagrantfileがある階層でprovision.shの作成
touch provision.sh

※provision.shを使用しないでも、
vagrant up後にそれぞれインストールすることもできるが、
provision.shに書けばvagrant up時に勝手にインストールなどやってくれるので便利

  • インストールなどの下準備

以下をすべてコピーして、作成したprovision.shにペースト↓

# Apache,unzip,gitのインストール
yum -y install httpd unzip git

# MySQLのインストール
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum -y install mysql-community-server

# PHPのインストール
yum -y install epel-release
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-intl php-mysql php-xml

# ApacheがVagrant up時に起動する設定
systemctl enable httpd.service
systemctl start httpd.service

# MySQLがVagrant up時に起動する設定
systemctl enable mysqld.service
systemctl start mysqld.service

# Vagrantの共有フォルダにパスを設定
rm -rf /var/www/html
ln -fs /vagrant /var/www/html

※共有フォルダのパス設定をすることによって、
Vagrant内の/var/www/htmlから下の階層をエクスプローラー(Mac:Finder)で確認できる
パッケージ管理ツール(rpm,yum,dnf)について↓
https://uxmilk.jp/9715
yumについての記事↓
http://www.atmarkit.co.jp/ait/articles/1608/29/news019.html
systemctlについての記事↓
https://qiita.com/sinsengumi/items/24d726ec6c761fc75cc9
rmコマンドの記事↓
https://wa3.i-3-i.info/word11170.html
lnコマンドの記事↓
https://wa3.i-3-i.info/word11183.html

4)Vagrant upとその後の確認事項

  • Vagrantの起動
# Vagrantfileがあるディレクトリまで移動
cd vagrant

# Vagrantfileがあるか確認
ls

# Vagrantを起動
vagrant up

※終わるまでに時間がかかるので、エラーがでなければ待つのみ

  • vagrant up後の確認
# Vagrant内にログイン
vagrant ssh

# Apacheバージョン確認
httpd -version

# MySQLバージョン確認
mysql --version

#PHPバージョン確認
php -v

※それぞれバージョンが確認できたら環境構築は完了
sshについての記事↓
https://wa3.i-3-i.info/word11722.html

5)Cakephp3のインストール

  • composer.phar,Cakephp3のインストール
# 共有フォルダに移動
cd /var/www/html

# composer.pharのインストール
curl -s https://getcomposer.org/installer | php

# Cakephp3のインストール
php composer.phar create-project --prefer-dist cakephp/app cms

※Cakephp3インストールの"cms"はディレクトリ名
※より詳しい内容はこちら(Cakephp book)↓
https://book.cakephp.org/3.0/ja/quickstart.html
composerについての記事↓
https://qiita.com/yando/items/7711be5116e5392c7c96

6)Apacheのconfigファイルの編集

  • httpd.confの修正
# Apacheのconfigファイルを参照
sudo vi /etc/httpd/conf/httpd.conf

# AllowOverride NoneをAllに変更
<Directory "/var/www/html">
    ...
    AllowOverride All
</Directory>

# Apcheの再起動
sudo systemctl restart httpd

※この作業をしないとCSSが反映されないので注意

7)MySQLのユーザーの作成と権限付与

  • MySQLでユーザーの作成
# rootでMySQLにログイン
mysql -u root

# ユーザーの作成
create user {username}@localhost identified by {password};

※パスワードが必要なければ、identifiedからは記述しない

  • 作成したユーザーの確認
# DB'mysql'に移動
use mysql

# ユーザーの確認
select * from user\G;
  • 権限の付与
# 全DBの全権限を作成したユーザーに付与
grant all on *.* to {username}@localhost identified by {password};

※権限付与に制限を設けたい場合はgrant all on *を変更する必要あり
※パスワードが必要なければ、identifiedからは記述しない

  • ログインの確認
# 一度MySQLから出る
exit

# 作成したユーザーでMySQLにログイン
mysql -u {username} -p

※パスワードをなしにした場合はEnterでログインが可能

  • DBの作成
# DBの作成
create database {DBname} character set utf8mb4;

# DBを確認
show databases;

※DB作成のCHARACTER SET utf8mb4は適宜変更

8)Cakephp3とMySQLの接続

  • Cakephpのapp.phpの編集
# cms > config > app.phpを参照
# username,password,databaseを修正
'Datasources' => [
        'default' => [

            ...            

            'username' => '{username}',                  <--修正
            'password' => '{password}',                  <--修正
            'database' => '{DBname}',                    <--修正

            ...

※"cms"は作成したディレクトリ名
※パスワードをなしにした場合は''にする

  • ローカルサーバーにアクセス
# 作成したCakephpのディレクトリにアクセス
http://192.168.33.10/cms

※"cms"は作成したディレクトリ名

※DataBaseの欄のマークが緑になっていたら、接続成功

  • Vagrant環境の停止
# Vagrant環境を停止する
vagrant halt

9)まとめ

この構築をすることで、XAMPPに頼らず環境構築することができます。
次回からのvagrant upはさほど時間がかからずに起動します。
お疲れ様でした!