CakePHPをCentOSに導入する

導入するもの

CentOS 6.9に以下をインストールし、CakePHPやMySQLの初期設定を行います。

  • Apache
  • PHP 5.6 (+mysqlnd, pdo)
  • CakePHP 2
  • MySQL 5.7

インストール

Apache

$ sudo yum -y install httpd

PHP

remiリポジトリ
Remi's RPM repository

PHP(と、PHPがMySQLを使用するために必要なmysqlndとpdo)をインストールします。
CentOSの標準リポジトリはPHP5.3と古いので、外部のremiリポジトリを追加し、そこからインストールします。
remiリポジトリはepel-releaseという別のリポジトリをイントールする必要がありますが、yum localinstallは自動でepelもインストールしてくれます。
CentOSのバージョンが7の場合は、remi-release-6.rpmの数字を7に変えてください。
yum installはリポジトリのパッケージ名を指定、yum localinstallはローカルやネット上のrpmファイルを指定します。

$ sudo yum -y localinstall http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

--enablerepoオプションでremiとremi-php56を指定して、PHPをインストールします。
バージョンを揃えるため、ここでmysqlndも一緒にインストールします。mysqlndと一緒にpdoも自動でインストールされます。
remi-php56は何だろうと思われるかもしれませんが、これもremi追加時に追加されたリポジトリです。
yum repolist allコマンドで、追加された全てのリポジトリを確認できます。
また、例えばremi-php56の数字を72に変えれば、バージョン7.2のPHPをインストールできます。

$ sudo yum -y install --enablerepo=remi,remi-php56 php php-mysqlnd

MySQL

MySQLリポジトリ
MySQL :: Download MySQL Yum Repository

MySQLもPHPと同じく、バージョンを選択するためMySQL公式の外部リポジトリを追加してインストールします。

$ sudo yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el6-1.noarch.rpm

remiリポジトリはデフォルトで使用しない設定になっていましたから、--enablerepoオプションで明示的に指定しました。
MySQLリポジトリはデフォルトでバージョン8のリポジトリを使用する、と設定されてしまうようです。なので--disablerepoオプションで無効化し、--enablerepoオプションでバージョン5.7を指定します。

$ sudo yum -y install --disablerepo=mysql80-community --enablerepo=mysql57-community mysql-community-server

CakePHP

Tags · cakephp/cakephp · GitHubからバージョンを選択、ダウンロードし、中身を全てドキュメントルート(var/www/html)に配置します。

初期設定

以下下書き。

CakePHP

  • app/tmpの権限を設定
$ chmod -R 777 app/tmp

vagrantの共有フォルダに置いている場合Vagrantfileで書かないといけない

config.vm.synced_folder "./html", "/var/www/html", :mount_options => ['dmode=777', 'fmode=777']
  • .htaccessでの設定上書きを有効に
    /etc/httpd/conf/httpd.confでallowOverride Allにする
  • データベース設定
    app/Config/database.php
  • core.php
    saltを変更, timezoneをAsia/Tokyoにする
  • debugKit
    CakePHP 2.x – DebugKitの導入方法 – SOAR CODE

MySQL

$ sudo service mysqld start

$ grep -e 'A temporary password is generated for root@localhost' /var/log/mysqld.log

$ mysql -u root -p

mysql> SET PASSWORD = PASSWORD('some password');

mysql> CREATE DATABASE cake_study;