目次と概要
Cakephpを起動、DBと接続、Cakephpの開発開始できるまでを目標にします。
1. Vagrantのインストールと初期設定を実施します。
2. Vagrantの設定ファイル(provision.sh)に各プログラムのインストールと設定を記述していきます。こうすることで、Vagrant初期起動時に必要なプログラムがインストールされ、次の開発環境セットアップも楽になる。(Anaibleはまだ導入できていません(´;ω;`))
3. Vagrant起動後にCakephpのインストール、設定を行います。
4. MySQLの設定を行います。
5. ハマりポイント解説
6. 結びに
本編
1. Vagrantのインストールと初期設定
Vagrantのインストールと初期設定は下記サイトを参考に実施しました。
(私はCentOS Linux release 7.3.1611 を使用しました。)
https://qiita.com/Esfahan/items/41c4469f28f6011ab33b
Vagrantfile設定
Vagrantfile内の以下内容を編集します。
# provision.shファイルの起動設定
config.vm.box = "bento/centos-7.3"
config.vm.provision :shell, :path => "provision.sh" //足す
# VMのIPアドレスを設定
config.vm.network "private_network", ip: "192.168.33.111"
# パーミッションの設定 <超ハマりポイント>
# パーミッション設定しないと、Cakephp画面が表示されません。”777”ではなく、”755”でもOK。
config.vm.synced_folder "./", "/vagrant", :mount_options => ["dmode=777", "fmode=777"]
2. "provision.sh"ファイルに、各プログラムのインストール、設定を記述
Vagrantfileと同じフォルダに"provision.sh"を作成。
各プログラムのインストール、設定を"provision.sh"内に記述し、Vagrant起動と合わせて行います。
# Apache、git、unzipのインストール
sudo yum -y install httpd unzip git
# PHPのインストール。Epel, Remiリポジトリから行います。
sudo yum -y install epel-release
sudo yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo yum -y install --enablerepo=remi,remi-php71 php php-devel php-mbstring php-intl php-mysql php-xml
# MySQLのインストール
sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
sudo yum -y install mysql-community-server
# Cakephpコンポーザーのダウンロートとコンポーザーを/bin下に移動
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# ApcheをVagrant起動時に起動するように設定と起動
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
# Vagrantの共有フォルダにパスを設定
sudo rm -rf /var/www/html
sudo ln -fs /vagrant /var/www/html
#MySQLをVagrant起動時に起動するように設定と起動
sudo systemctl enable mysqld.service
sudo systemctl start mysqld.service
できましたら、Vagrantを起動してください。
vagrant up
ssh起動後、各プログラムが正しくインストールされているかは下記コマンドで確認してください。
vagrant ssh
php -v
httpd -version
mysql --version
3. Vagrant起動後に必要な設定を行なっていきます。
# ApacheのDocumentRootに移動
cd /var/www/html/
# Composerを用いて展開
composer create-project --prefer-dist cakephp/app myapp
myapp
フォルダが作成され、Cakephpファイルがインストールされます。
2.にてVagrant共有フォルダにパスを設定しているため、Vagrantfile
とprovision.sh
と同じフォルダからも確認できます。
それでは、1.にて設定したVMのIPアドレスにブラウザからアクセスしましょう。
→http://192.168.33.111/myapp/
なんか味気ない画像が表示されるかと思いますが、こちらはCSSファイルが適用されていません。
CSSファイル設定のためにApacheコンフィグの設定を行います。
ssh起動後、下記の設定を行なってください。
# コンフィグファイルの設定編集します。
sudo vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
~
Options FollowSymLinks
~
AllowOverride All ←NoneからAllにする
</Directory>
# 設定を反映させるために、Apcheの再起動を行います。
sudo systemctl restart httpd
もう一度アクセスすると、
このようにいい感じのページが表示されます。
4. MySQLの設定を行います。
MySQLのデータベース、ユーザー設定を行なった上で下記設定を行なってください。
~config/app.phpを開き、SQLのユーザー名、パスワード、データベース名を記述します。
'Datasources' => [
'default' => [
~
'username' => 'my_app', //編集する
'password' => 'secret', //編集する
'database' => 'my_app', //編集する
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
DBへのアクセスが成功すれば、Cakephpのトップ画面がこう変わります。
↓
5. ハマりポイント解説
パーミッション設定
この環境の場合、パーミッションの設定は通常のCakephpと同様にはできず、これがハマる原因になります。通常は、パーミッションの設定はCakephpのコンフィグファイルapp.php
で下記のようにできるですが…
'Cache' => [
'default' => [
'className' => 'File',
'path' => CACHE,
],
'_cake_core_' => [
'className' => 'File',
'prefix' => 'myapp_cake_core_',
'path' => CACHE . 'persistent/',
'serialize' => true,
'duration' => '+2 minutes',
'mask' => 0666,//666にする or 777
],
'_cake_model_' => [
'className' => 'File',
'prefix' => 'myapp_cake_model_',
'path' => CACHE . 'models/',
'serialize' => true,
'duration' => '+2 minutes',
'mask' => 0666,//666にする or 777
],
],
今回の環境では、Vagrantのため、この設定はできません。VagrantではVagrant上での設定を優先するため、書き換えたとしても、すぐにVagrantの設定にて自動で書き換えられてしまうようです。
そのため、Vagrantfile
にてパーミッションの設定を行う必要があります。
MySQLの選定
今回はバージョン5.6を採用しています。現在(2018/2)最新版は5.7ですが、こちらはルートパスワードの設定やら、初期設定がめんどいの人つ古いバージョンを使用しています。
6. 結びに
全部を書ききれてはないとは思いますが、私はこれだけあれば来月もセットアップできると思います。つまり、大体みんなできるだろうと。そもそもVagrantに手を出すなら、大体わかるんじゃないだろうか。私はVagrantとかは使ってたのに、SQLをほとんど触ったことがなく、SQL周りで苦労しました。この記事が、後から来る者の道を整えることができることを祈ります。