Posted at

CakePHPの構築方法 (PHP7, MariaDB, CentOS7 on Vagrant)


概要

CakePHP勉強中です。

現在はDockerを用いて構築中ですが、学習初期においてはVagrant内で環境を構築する方が分かりやすかったため、その時の構築方法を整理しました。


構成


  • CentOS (on Vagrant)

  • PHP 7

  • MariaDB


TL;DR

作業ディレクトリにVagrantfilesetup.shを作成します。


Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

Vagrant.configure("2") do |config|
config.vm.box = "bento/centos-7.6"
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder ".", "/home/vagrant/workdir"
config.vm.provision "shell", path: "setup.sh"
if Vagrant.has_plugin?("vagrant-vbguest")
config.vbguest.auto_update = false
end
end



setup.sh

sudo yum update -y

sudo yum install -y httpd git unzip

# add EPEL repository
sudo yum install -y epel-release
# add Remi repository
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

# install PHP and package
sudo yum install -y --enablerepo=remi,remi-php70 php php-mbstring php-intl php-pdo php-mysql php-xml

# install MariaDB
cat <<EOF | sudo tee /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
EOF

sudo yum install -y MariaDB-server MairaDB-client
sudo systemctl enable mysqld

# get composer
curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer



仮想マシンの起動

$ vagrant up

仮想マシンを起動し、必要なパッケージがインストールされます。

$ vagrant ssh

仮想マシン内に接続します。


CakePHPのインストール

[vagrant]$ cd workdir

workdirに移動します。

workdirはホスト側のVagrantfileがある場所と同期しています。

[vagrant]$ composer create-project --prefer-dist cakephp/app myapp

composerを使って、CakePHPのプロジェクトを作成します。

Set Folder Permissions ? (Default to Y) [Y,n]?

途中フォルダのパーミッションを設定するか聞かれるのでYを入力し、許可します。

myappディレクトリが作成され、その中に必要ファイルが展開されます。


動作確認

[vagrant]$ cd myapp

[vagrant]$ bin/cake server -H 192.168.33.10 -p 8080

作成されたmyappディレクトリに移動し、サーバーを起動します。

http://192.168.33.10:8080/にアクセスし、CakePHPの画面が表示されていれば成功です。


説明


Vagrantfile

  config.vm.box = "bento/centos-7.6"

boxにはCentOS7.6を使用します。

  config.vm.network "private_network", ip: "192.168.33.10"

ゲスト側の192.168.33.10にホストからアクセス出来るようにします。

  config.vm.synced_folder ".", "/home/vagrant/workdir"

ホスト側のルート (Vagrantfileのある位置) とゲスト側の/home/vagrant/workdirを同期します。

  config.vm.provision "shell", path: "setup.sh"

初回vagrant up時にsetup.shをゲスト内で実行します


setup.sh

sudo yum update -y

sudo yum install -y httpd git unzip

パッケージのアップデートし、基本的なパッケージをインストールします。

# add EPEL repository

sudo yum install -y epel-release
# add Remi repository
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

初期状態のyumでインストールされるPHPはバージョンが古く、CakePHPの必須要件を満たせません。

PHP7をインストールするために、EPELとRemiリポジトリを追加します。

# install MariaDB

cat <<EOF | sudo tee /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
EOF

初期状態のyumでインストールされるMariaDBはバージョンが古いため、

MariaDB Foundation公式のリポジトリを追加します。

/etc/yum.repos.d/MariaDB.repoに下記を追記します。


MariaDB.repo

[mariadb]

name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

sudo yum install -y MariaDB-server MairaDB-client

MariaDBをインストールします。

# get composer

curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

composer.pharをダウンロードし、グローバルで実行できるよう移動します。