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

環境

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

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

cmoposerインストール

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

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

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

PHPのアップデート

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

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

1# rpm -qa | grep php
2
3php-common-5.3.3-46.el6_6.x86_64
4php-mbstring-5.3.3-46.el6_6.x86_64
5php-5.3.3-46.el6_6.x86_64
6php-pear-1.9.4-4.el6.noarch
7php-fpm-5.3.3-46.el6_6.x86_64
8

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

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

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

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

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

1/etc/php.ini
23/etc/php.ini.rpmsave
1/etc/php-fpm.d/www.conf.rpmsave
23/etc/php-fpm.d/www.conf.rpmsave

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

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

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

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

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

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

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

 1# yum --enablerepo=remi install ¥
 2php ¥
 3php-cli ¥
 4php-common ¥
 5php-fpm ¥
 6php-mbstring ¥
 7php-mysql ¥
 8php-pdo ¥
 9php-pear ¥
10php-pecl-memcache ¥
11php-xml ¥
12php-tokenizer ¥
13php-openssl ¥
14php-mcrypt

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

 1# rpm -qa | grep php
 2
 3php-cli-5.4.45-2.el6.remi.x86_64
 4php-pear-1.10.1-1.el6.remi.noarch
 5php-mysql-5.4.45-2.el6.remi.x86_64
 6php-fpm-5.4.45-2.el6.remi.x86_64
 7php-common-5.4.45-2.el6.remi.x86_64
 8php-pdo-5.4.45-2.el6.remi.x86_64
 9php-pecl-memcache-3.0.8-2.el6.remi.5.4.x86_64
10php-5.4.45-2.el6.remi.x86_64
11php-mbstring-5.4.45-2.el6.remi.x86_64
12php-ldap-5.4.45-2.el6.remi.x86_64
13php-xml-5.4.45-2.el6.remi.x86_64
14php-mcrypt-5.4.45-2.el6.remi.x86_64
15:

4.PHP設定

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

1# vi /etc/php.ini
2
3date.timezone = "Asia/Tokyo"

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

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

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

1/etc/init.d/php-fpm start

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

1# 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しました。

1$ git clone repo_address projectDir

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

nginx設定

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

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

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

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

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

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

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

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

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

 1# vi /etc/nginx/conf.d/default.conf
 2
 3location ~ ^/laraveltest((/)?(.+))?$ {
 4    root /var/www/nginx/laraveltest/public;
 5    try_files $1 /laraveltest/index.php?$query_string;
 6
 7     location ~ ^/laraveltest/index.php$ {
 8        include                  fastcgi_params;
 9        fastcgi_param            SCRIPT_FILENAME $document_root/index.php;
10        fastcgi_param            PATHINFO        $fastcgi_path_info;
11        fastcgi_param            PATH_TRANSLATED $document_root$fastcgi_path_info;
12        fastcgi_split_path_info  ^(.+¥.php)(/.+)$;
13        fastcgi_pass             127.0.0.1:9000;
14        fastcgi_index            index.php;
15    }
16}

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

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


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

nginx実践ガイド (impress top gear)

渡辺高志
出版社:インプレス  発売日:2017-02-16

Amazonで詳細を見る

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応

竹澤 有貴,栗生 和明,新原 雅司,大村 創太郎
出版社:ソシム  発売日:2018-09-26

Amazonで詳細を見る

PHPフレームワーク Laravel入門

掌田津耶乃
出版社:秀和システム  発売日:2017-09-16

Amazonで詳細を見る