さくらインターネットのレンタルサーバにCakePHP3をインストールする方法について

f:id:moshimore:20180710165922j:plain
さくらインターネットのレンタルサーバ(スタンダードプラン)へCakePHP3をインストールする方法を説明します。

※with-php-configで、コントロールパネルのPHPのバージョン選択に合わせないと正しくintl.soが作成されない。
作成されても動作しないものが完成する。

intlの存在確認

phoinfoを表示して、intlの存在確認をします。
もし、存在していれば、そのままCakephp3をインストールできます。

<?php phpinfo(); ?>

シェルにログイン

Tera Termなどでシェルにログインします。

インストールディレクトリの作成

ホームディレクトリにインストール用のディレクトリを作成します。

$ cd ~/
$ mkdir local
$ mkdir local/src

icuライブラリのインストール

先ほど作成したディレクトリにicuライブラリをインストールします。

$ cd ~/local/src
$ wget http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz
$ tar zxvf icu4c-57_1-src.tgz
$ cd icu/source
$ ./configure --prefix=$HOME/local
$ gmake
$ gmake install

intlのインストール

続いて、intlもインストールします。

$ cd ~/local/src
$ wget http://pecl.php.net/get/intl-3.0.0.tgz
$ tar zxvf intl-3.0.0.tgz
$ cd intl-3.0.0
$ phpize
$ ./configure --prefix=$HOME/local --with-icu-dir=$HOME/local --with-php-config=/usr/local/php/default/bin/php-config
$ make

with-php-configで指定しているパスは、コントロールパネルのPHPのバージョン選択に合わせる必要があります。
例えば、5.3の場合は、/usr/local/php/5.3/bin/php-config になります。
コントロールパネルで、新しいバージョンを推奨に設定すると現在のバージョンがdefaultとなります。
新しいバージョンを推奨に設定してからconfigureすると良いと思います。

モジュールのコピー

作成したモジュールをコピーしていきます。

$ cd ~/
$ mkdir modules
$ mkdir modules/php
$ mkdir modules/php/extensions
$ cd modules/php/extensions
$ cp ~/local/src/intl-3.0.0/modules/intl.so .
$ ln -s /usr/local/php/default/lib/php/extensions/no-debug-non-zts-20131226/* .

php.iniの設定

コントロールパネルにあるphp.iniの設定などから変更します。

extension_dir = /home/USERNAME/modules/php/extensions
extension = intl.so

.cshrcの設定

.cshrcに設定を加えます。

$ cd ~/
$ vi .cshrc

最終行に以下を追加して、シェルを立ち上げ直します。

alias php php -c /home/USERNAME/www/php.ini

composerのインストール

ここでようやく、composerのインストールです。

$ cd ~/
$ mkdir composer
$ cd composer
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"

CakePHPプロジェクトを作成

ようやく、CakePHPプロジェクトを作成できるようになりました。

$ cd ~/
$ mkdir project
$ cd project
$ cp ~/composer/composer.phar .
$ php composer.phar create-project --prefer-dist cakephp/app PROJECTNAME

動作確認を取る

さくらインターネットで、独自ドメイン設定などをしていると動かないことがあります。
webrootにある.htaccessに以下を追加するなど、配置場所の調整を取ると直ります。

RewriteBase /

CakePHP3本体と公開用ディレクトリの切り分け

CakePHP3本体を公開用ディレクトリ(www)配下に置くのはセキュリティ上、好ましくありません。
webrootの中身を/home/USERNAME/www/DOMAINに置いて、本体は別のところに置いた方が良いです。
DOMAINは、コントロールパネルで設定したパスの位置になります。

例えば、webroot/index.phpを以下のように変更するなどの方法があります。

require dirname(__DIR__) . '/config/bootstrap.php';
↓
require '/home/USERNAME/project/PROJECTNAME/' . '/config/bootstrap.php';

config/paths.phpは、以下のようになります。

define('WWW_ROOT', ROOT . DS . 'webroot' . DS);
↓
define('WWW_ROOT', '/home/USERNAME/www/DOMAIN');

アップデート方法

最後にCakePHP3のアップデート方法です。

$ cd ~/
$ cd project/PROJECTNAME
$ cp ~/composer/composer.phar .
php composer.phar update

以上、さくらインターネットのレンタルサーバにCakePHP3をインストールする方法についてでした。