Linux
MySQL
Apache
Vagrant
cakephp3

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"は作成したディレクトリ名

alt

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


  • Vagrant環境の停止

# Vagrant環境を停止する

vagrant halt


9)まとめ

この構築をすることで、XAMPPに頼らず環境構築することができます。

次回からのvagrant upはさほど時間がかからずに起動します。

お疲れ様でした!