#目的と理由
- 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はさほど時間がかからずに起動します。
お疲れ様でした!