Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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をダウンロードし、グローバルで実行できるよう移動します。

tewi_r
受託開発で Rails / iOS / Android / Flutter 等をやっています。 趣味で xR 系。学生時代はC++/ Intel RealSense / Point Cloud Library を用いた点群処理やCG描画システムの開発
http://tewir.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした