LoginSignup
11
16

More than 5 years have passed since last update.

Cakephp3 + CentOS7 + Vagrant + Apache + MySQL 環境セットアップ

Last updated at Posted at 2018-02-14

目次と概要

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共有フォルダにパスを設定しているため、Vagrantfileprovision.shと同じフォルダからも確認できます。
それでは、1.にて設定したVMのIPアドレスにブラウザからアクセスしましょう。
http://192.168.33.111/myapp/

CakePHP  the rapid development PHP framework.png

なんか味気ない画像が表示されるかと思いますが、こちらは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

もう一度アクセスすると、

CakePHP  the rapid development PHP framework.png

このようにいい感じのページが表示されます。

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のトップ画面がこう変わります。
CakePHP  the rapid development PHP framework.png
   ↓
CakePHP  the rapid development PHP framework(1).png

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周りで苦労しました。この記事が、後から来る者の道を整えることができることを祈ります。

11
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16