「既にPHPアプリケーションが稼働中」という少々厄介な環境に、Laravelで実装したアプリケーションを追加した作業ログです。

環境

  • CentOS
  • nginx
  • PHP 5.3 (PHP-FPM)

こちらにPHP 5.4をインストールし、Laravel 5.0.0で実装したプロジェクトを設置します

cmoposerインストール

$ which cmoposerしても応答がなかったため、Composerをインストールします。 これは、いつもの手順ですね。

# curl -sS https://getcomposer.org/installer | php
# mv composer.phar /usr/local/bin/composer
$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.0-dev (1c525b76f81123af180743d31c208c29351cf931) 2015-12-09 15:47:26
:

インストール時に「PHP5.3使っているけど、5.4以上が推奨だよ」と教えてくれましたので、PHPもバージョンアップします。

PHPのアップデート

1.イントール物のチェック

現在インストールされているPHPバージョン、ライブラリをチェックします。

# rpm -qa | grep php

php-common-5.3.3-46.el6_6.x86_64
php-mbstring-5.3.3-46.el6_6.x86_64
php-5.3.3-46.el6_6.x86_64
php-pear-1.9.4-4.el6.noarch
php-fpm-5.3.3-46.el6_6.x86_64
:

2.古いバージョンの削除

次に古いバージョンのPHP一式を削除します。

# rpm -e php-common php-mbstring php php-fpm --nodeps

割愛していますが、手順1でリストアップされたものはすべて削除してくださいね。

また、削除を実行すると、RPM側で設定ファイルをリネーム保存してくれます。
親切。

/etc/php.ini
↓
/etc/php.ini.rpmsave
/etc/php-fpm.d/www.conf.rpmsave
↓
/etc/php-fpm.d/www.conf.rpmsave

3.PHP5.4をインストール

ローカルの開発環境に合わせて、PHP5.4をインストールします。

PHP-FPMのインストールにはリポジトリを追加が必要ということで、まずこちらを実行します。

# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/$(uname -i)/epel-release-6-8.noarch.rpm
# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

Laravelシステム要件は以下の通りです。

PHP バージョン5.4以上
Mcrypt PHP拡張
OpenSSL PHP拡張
Mbstring PHP拡張
Tokenizer PHP拡張

PHPインストール時にこれらもインストールしておきます。

# yum --enablerepo=remi install ¥
php ¥
php-cli ¥
php-common ¥
php-fpm ¥
php-mbstring ¥
php-mysql ¥
php-pdo ¥
php-pear ¥
php-pecl-memcache ¥
php-xml ¥
php-tokenizer ¥
php-openssl ¥
php-mcrypt

インストール後、ライブラリを確認します。

# rpm -qa | grep php

php-cli-5.4.45-2.el6.remi.x86_64
php-pear-1.10.1-1.el6.remi.noarch
php-mysql-5.4.45-2.el6.remi.x86_64
php-fpm-5.4.45-2.el6.remi.x86_64
php-common-5.4.45-2.el6.remi.x86_64
php-pdo-5.4.45-2.el6.remi.x86_64
php-pecl-memcache-3.0.8-2.el6.remi.5.4.x86_64
php-5.4.45-2.el6.remi.x86_64
php-mbstring-5.4.45-2.el6.remi.x86_64
php-ldap-5.4.45-2.el6.remi.x86_64
php-xml-5.4.45-2.el6.remi.x86_64
php-mcrypt-5.4.45-2.el6.remi.x86_64
:

4.PHP設定

インストールしたPHP5.4の設定を行います。
とりあえずphp.iniはTimeZoneを変更するくらいでしょうか。

# vi /etc/php.ini

date.timezone = "Asia/Tokyo"

PHP-FPMは、rpmが残してくれたバックアップに戻します。

cp -p /etc/php-fpm.d/www.conf.rpmsave /etc/php-fpm.d/www.conf

最後に、PHP-FPMを起動します。

/etc/init.d/php-fpm start

必要に応じて、PHP-FPMの自動起動を設定してください。

# chkconfig php-fpm on

PHPバージョンアップは以下を参考にいたしました。
ありがとうございました。

よしまさのブログ
CentOS 6.5:nginx,php-fpm,MySQL環境のPHPを「5.4」に変更する
http://blog.offline-net.com/2014/10/12/centos-65-nginx-php-fp%EF%BD%8D-mysql-upgrade/

プロジェクトの設置

今回ローカルで作成したプロジェクトをLinixにcloneしました。

$ git clone repo_address projectDir

clone後は、忘れずにstorage以下の書き込み権限を設定してください。

nginx設定

冒頭に記した通り、既存のWebアプリケーションはnginxからPHP-FPMにプロキシしておりましたので、追加するLaravelプロジェクトも同様の形とします。

ドメイン直下にLaravelプロジェクトを設置する場合は、公式を参考に、次のように設定します。

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

Laravel 5.0.0 インストール
http://readouble.com/laravel/5/0/0/ja/installation.html

しかしながら、今回利用するサーバはドメインをあてておらず、サブドメインを切ることができません。
URLでいうとhttp://192.xxx.xxx.xxx/laravel/が追加するプロジェクトのルートです。

この場合、とてもnginx.conf定義が複雑でした。

困った時はqiitateratailを調べます。

「まさしくこれ」というものがありましたので、以下に倣って設定を変更します。

Laravelをサブディレクトリで動かす
http://qiita.com/saba1024/items/2d50fb8284d699924360

# vi /etc/nginx/conf.d/default.conf

location ~ ^/laraveltest((/)?(.+))?$ {
    root /var/www/nginx/laraveltest/public;
    try_files $1 /laraveltest/index.php?$query_string;

     location ~ ^/laraveltest/index.php$ {
        include                  fastcgi_params;
        fastcgi_param            SCRIPT_FILENAME $document_root/index.php;
        fastcgi_param            PATHINFO        $fastcgi_path_info;
        fastcgi_param            PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_split_path_info  ^(.+¥.php)(/.+)$;
        fastcgi_pass             127.0.0.1:9000;
        fastcgi_index            index.php;
    }
}

上記の設定を追加で期待通りに動作するようになりました。

nginx -s reloadして設定ファイルを再読み込みします。
不勉強で、毎回service nginx restartしなければならないと思っていました。


Laravelは使いやすいフレームワークです。
返り値の型や静的型付けになればもっと良いのですが、それではもうPHPではありませんねw

この記事はtomita@atuwebがお届けしました。