サーバー設定手順 4. CakePHPの設定

何かとCakePHPを利用することは多い + サーバーの設定が正しく出来ているかの確認が出来るため、 空のCakePHPのプロジェクトを設置する。

php7.2をインストール

CakePHPではphpバージョン7.2を利用する。 phpの最新は7.3だが、CakePHPでサポートされているわけではない。(2018/08/24現在)

phpがまだインストールされていないか確認

# php -v
-bash: php: command not found

インストール可能なphpの検索

# yum list available | grep php

これではphp7系は見つからないかもしれない。

# yum install epel-release
# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# yum list available | grep php

たくさん種類が出てくると思う。

php7.2のインストール

# yum install php72 php72-php php72-php-intl php72-php-mbstring php72-php-pdo php72-php-mysqlnd

それぞれ説明

  • php72: php7.2の本体
  • php72-php: httpdphpを繋ぐ役割を果たす
  • php72-php-intl: cakephp3で必要な拡張
  • php72-php-mbstring: 日本語の文字列処理で必要な拡張
  • php72-php-pdo: データベース接続クラス(PHP Data Objectというらしい)
  • php72-php-mysqlnd: mysql専用の接続の拡張

php」でphp72を利用できるようにする

現状だと$ php72で利用できるが、$ phpで利用できるようにしたい。

# module load php72

確認

$ php -v
PHP 7.2.9 (cli) (built: Aug 15 2018 08:05:45) ( NTS )

.htaccessを有効化する(httpd)

CakePHPなどのフレームワークでは、どのURLからアクセスしてもルートにあるindex.phpにリライトしてリクエストしないといけない。 リライトするにはmod_rewrite.soというapacheの拡張が必要。

mod_reqrite.soが有効か確認

(httpd.confでconf.modules.dの一式がインポートされている前提)

cd /etc/httpd/conf.modules.d
ls | xargs cat | grep mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so

mod_rewrite.soはロードされている。

.htaccessを有効化

<Directory "/var/www/html">
#   Options Indexes FollowSymLinks
    Options FollowSymLinks


#   AllowOverride None
    AllowOverride All

    Require all granted
</Directory>

cakephpで利用するデータベースの設定

cakephp用のユーザーの作成と権限の確認

# mysql -u root -p
mysql> create user 'cakephp_test'@'localhost' identified by 'password';
mysql> show grants for 'cakephp_test'@'localhost';
+--------------------------------------------------+
| Grants for cakephp_test@localhost                |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `cakephp_test`@`localhost` |
+--------------------------------------------------+
1 row in set (0.00 sec)

上記は、cakephp_testユーザーには何も権限がない状態を示している

cakephp用のデータベースの作成と確認

mysql> create database cakephp_test;
grant all on cakephp_test.* to 'cakephp_test'@'localhost';
mysql> show grants for 'cakephp_test'@'localhost';
mysql> show grants for 'cakephp_test'@'localhost';
+------------------------------------------------------------------------+
| Grants for cakephp_test@localhost                                      |
+------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `cakephp_test`@`localhost`                       |
| GRANT ALL PRIVILEGES ON `cakephp_test`.* TO `cakephp_test`@`localhost` |
+------------------------------------------------------------------------+
2 rows in set (0.00 sec)

上記は、cakephp_testユーザーはcakephp_testデータベースの全ての権限を持っている

空のプロジェクトの配置

ローカルで空のプロジェクトの作成

$ composer create-project --prefer-dist cakephp/app cakephp_test

作成されたファイルのconfig/app.phpを編集(変更箇所のみ抜粋)

'Datasources' => [
    'default' => [
        'username' => 'cakephp_test',
        'password' => 'password',
        'database' => 'cakephp_test',

アップロード

cyberduck等を用いて上記プロジェクトファイルを/var/www/html以下にアップロード

パーミッションの変更

ローカルで作成したファイルはパーミッションがローカルのユーザー名などになっている可能性があるので変更

# chown -R root:webdev /var/www/html
# chmod -R 775 /var/www/html

上記設定後、ブラウザからアクセスすると、Welcome的なページが表示されるはずである

  • webroot/以下が読み込まれず、cssなどが読み込まれない場合
    • .htaccessが有効になっているか確認
  • ファイルにアクセス出来ないなどのエラーがたくさん出る
    • パーミッションの設定を正しく行ってもログファイルの書き込み権限などがない場合はSELinuxの問題かもしれない。