デジタルドリームワークスから比嘉です。
今回はPleskが搭載されているサーバーへのEC-CUBEのインストールを行ってみました。
composerを利用したインストールもあるようですが、まだ深く理解出来ていないので今回はファイルをアップしてインストールを行いました。
さて、本題です。
Pleskは標準で搭載されているPHPのバージョンが低いため色々と大変です。
こちらの環境では以下のような作業を踏んでとりあえずインストールまでこぎつけました。
1. Pleskへ新しいバージョンのPHPをインストール
2. FastCGIによるセッションパスの変更
3. PDOモジュールを利用可能に設定
4. PHP タイムゾーンの修正
1. Pleskへ新しいバージョンのPHPをインストール
Plesk搭載サーバーはサーバー管理がとても便利でサイト運営しやすいのですが、その分自由度が落ちる部分もあります。
とくにネックとなるのがPHPのバージョンです。
標準のPHPバージョンが低いため動かないシステムもあります。
自力でPHPをバージョンアップするとPleskがエラーを起こすなど難しい部分がありました。
しかしPleskのバージョンも上がり、環境によってはPHPの高いバージョンがインストール出来たり、複数のPHPバージョンを入れることが出来る様になっているみたいです。
今回試してみた環境は、後者の複数のPHPバージョンのインストールが提供されていました。
Pleskバージョンにより違いはあると思いますが、以下の方法でEC-CUBEが動作するバージョンをインストール。
※ 参照 https://kb.plesk.com/jp/125146
色々と記述されていますが、やったことは
サーバー管理「ツールと設定」->Plesk項目「アップデートおよびアップグレード」->「コンポーネントを追加/削除」->「ウェブホスティング機能」よりEC-CUBEの動くバージョンのPHPをインストールするだけです。
これでホスティング設定よりPHPのバージョンを選択出来る様になります。
ただしインストールしたPHPはFastCGIでしか動作しません。
ここからが試行錯誤の始まりでした。
2. FastCGIによるセッションパスの変更
PHPのバージョンもクリアしたので早速EC-CUBE3系をサーバーへアップ、アクセス権を変更してインストール画面にアクセスします。
するとセッションディレクトリが書き込み&読み込み出来ませんとエラーが出ます。
RuntimeException in NativeFileSessionHandler.php line 52:
Session Storage was not able to create directory “/var/lib/php/session”
これはPHPをFastCGIで実行しているため、実行権限がFTPユーザーになるのが理由のようです。
そこでセッションのパス(session.save_path)を変更します。
まずセッションのディレクトリを作成
mkdir /var/www/vhost/domain.tld/private/php_sess
chown [ftpuser]:psacln /var/www/vhost/domain.tld/private/php_sess
chmod 0700 /var/www/vhost/domain.tld/private/php_sess
※ 参照 https://kb.plesk.com/jp/7056
次にセッションパスの変更
通常はphp.iniを修正しても良いのですが、複数ドメイン管理しているので、Plesk上のPHP設定から「session.save_path」を変更します。
apacheを再起動します。
3. PDOモジュールを利用可能に設定
さてセッションの問題もどうにか解決し、インストールステップを踏めるようになりました。
早速ステップを進めていきます。ところがSTEP3でストップ orz.
エラーの文章を読む感じではPDO部分でエラーが発生している様子でした。
そこでphp.iniを確認し、PDOモジュールを読み込み出来る様に設定します。
こちらもPlesk上で行えそうでしたが、他のドメインでも拡張しても問題ないと判断しphp.iniを修正
;extension=php_pdo.dll
↓
extension=php_pdo.dll
apacheを再起動して再度アクセスすると、すぐにSTEP3が表示されてステップが進めません。
どうもインストール時のキャッシュがどこかで保存されている模様です。
これがどうもよく分からず、今回は再度ファイルをアップし直して、最初からインストール手順を進めました。
4 PHP タイムゾーンの修正
さー、これで大丈夫かと思ったのですが、どうも最後のステップ5で動作が強制的に終了して真っ白な画面になります。
エラーログを見る感じ、FastCGIのリクエストが多いことが原因と思いましたが…
最終的には根本的な問題、タイムゾーンを修正していんトール完了!
date.timezone = Asia/Tokyo
さてー、記述してしまえばそこまで長い道のりではないですが試行錯誤をしたため数日を要しました。
管理画面へのログインやフロントページ等、特に問題は無さそうですがここまでの道のりを見ると、本番環境で利用するにはもう少し様子を見た方が良さそうです。
間違えている情報やこんなやると簡単など、情報があればぜひコメントをいただけると幸いです。
よろしくお願い致します。
またサーバーの環境により同じやり方でも上手くいかなかったり、設定変更によりサーバー全体に影響を及ぼしたりします。
みなさんバックアップ等、もしくは設定を元に戻せる状態の準備をして、自己責任で慎重に作業を行いましょう。
EC-CUBE3の情報がまだまだ少ないですが、問題解決の糸口になれば…