EC-CUBEをコアサーバー(coreserver)にインストールする際の手順等

ちょいと所要で、EC-CUBEをインストールする作業があったので、備忘録としてメモ。Wordpressと違って、インストールから動作確認までの敷居が高いEC-CUBEですが、手順を追って一つずつ作業すれば、なんとかなります。が、今回はコアサーバーでの運用。セーフモードで運用されているサーバーなので、ちょいと手順が複雑でもあります。以下メモと参考にさせていただいたサイト様をご紹介しておきます。

EC-CUBEをcoreserverにインストールする
http://mage8.com/eccube.html

xreaにsshでシェルログイン
http://mage8.com/ssh.html

上記のサイト様でも書かれていますが、EC-CUBEを通常通り解凍して、そのままFTPでアップロードすると、膨大な量のパーミッションの変更が必要になります。そこで、SSHでシェルログインを行い、サーバー上で直接ファイルを解凍して、その手間を省こうというものです。

複雑な手順ではありますが、ひとつずつ確実に見ていけばインストールは可能です。注意点に関しては以下のサイトも参考になります。

xrea、CORESERVERへのEC-CUBEインストール注意点
http://sunpatic.blog82.fc2.com/blog-entry-1.html

以下引用にて。

EC-CUBE * XreaへEC-CUBEをインストールする際の注意点

XREAではセーフモード(SAFE MODE)がオフになっているため、動的にページを生成する事ができないため、PHPをCGIで動かすための記述をします。
CORESERVERへEC-CUBEのインストールを行う。

ダウンロードしたEC-CUBEを軍をCORESERVERへアップロード。ディレクトリ構成を変更する。 htmlディレクトリの中身を丸ごとドメイン直下へ。 dataディレクトリはディレクトリごとドメイン直下へ。 /define.phpを以下のように修正。

/** HTMLディレクトリからのDATAディレクトリの相対パス */ define(”HTML2DATA_DIR”, “/data/”);
/** DATA ディレクトリから HTML ディレクトリの相対パス */ define(”DATA_DIR2HTML”, “../html/”);

モジュール版PHPだとインストール時にパーミッションエラーが大量に出るので、 CGI版PHPとする。 .htaccessに以下を追加。

AddHandler application/x-httpd-php5cgi .php

このままだと管理画面でパラメータ更新時などにバックスラッシュが入るので、
/admin/bases/ /admin/contents/ /admin/design/ /admin/products/ の各ディレクトリへ以下の内容でphp.iniを追加。

magic_quotes_gpc = off

DBを作成し、http://サイトアドレス/install/ でインストール開始。

【補足】.htaccess記述例

php_value mbstring.language Japanese
php_value output_handler mb_output_handler
php_flag mbstring.encoding_translation 1
php_flag magic_quotes_gpc 0
php_flag session.use_cookies 0
php_flag session.use_trans_sid 1

php_value mbstring.internal_encoding UTF-8

php_value upload_max_filesize 5M

AddHandler application/x-httpd-php5cgi .php

【補足】php.ini記述例

AddHandler application/x-httpd-php5cgi .php
mbstring.language Japanese
output_handler mb_output_handler
mbstring.encoding_translation 1
magic_quotes_gpc = off
#php_flag session.use_cookies 0
#php_flag session.use_trans_sid 1

mbstring.internal_encoding UTF-8

upload_max_filesize 5M

配置場所は

.htaccessは
/html 直下
/data 直下

php.iniは
/html/admin/ 以下のフォルダ全部
/data 直下(念のため)

こちらも参考になります。

CORESERVER(コアサーバー)にEC-CUBEをインストールする方法
http://www.kami.cc/sk/contents/content0036.html

▼CORESERVER
PostgresSQLでデータベース作成。(文字コード:UNICODE)
「ホスト情報登録」の「SSH登録」ボタンをクリック。

▼FTP
ドメイン直下にファイルをアップロード。
ドメイン/eccube-2.4.2.tar.gz

▼TeraTerm(SSH)
・ディレクトリ移動
cd /virtual/ID/public_html/ドメイン

・ファイル解凍
tar zxvfp eccube-2.4.2.tar.gz
これでドメイン直下(eccube-2.4.2.tar.gzと同じ階層)にeccube-2.4.2ができた。
(zxvfpのpが圧縮したときのパーミッションの設定を再現してくれるのでパーミッションの変更は不要となる)

▼サーバー
eccube-2.4.2/html内のファイルをドメイン直下に展開。
eccube-2.4.2/dataフォルダをドメイン直下に移動。
eccube-2.4.2フォルダ以下、eccube-2.4.2.tar.gzは不要となるので削除。

パーミッションの変更。(SSHを使わない場合)
以下のフォルダは「777」
html/install/temp
html/cp
html/upload
html/user_data
data/cache
data/class
data/Smarty
data/downloads
data/downlaods/update
data/logs

このファイルは「666」
data/install.php

▼ファイル操作
・大量のパーミッション変更(SSHを使わない場合)とエラー回避
ドメイン直下の.htaccessの最初にこの1行を追加。
AddHandler application/x-httpd-phpcgi .php
(AddHandler application/x-httpd-php5cgi .phpこれも例としてあり)

上記を追加してインストールするとパーミッションの変更不要。
これがなければ、1000ファイルほどのパーミッションを変更しなければならない。
(SSHを使わない場合)

SSHでもこの一行がなければ、インストール時の必要なファイルのコピーページで以下のエラーが出る。
Warning: Invalid argument supplied for foreach() in /virtual/ID/public_html/ドメイン/data/class/util/SC_Utils.php on line 1448

【注意】
このままにしておくと商品登録時にエラーが出るのでインストールが終わったら削除。また、PHPをCGIで動かすということなので、サーバーの負担にもなる。

そうすると商品登録時に商品画像のアップロードができないので、ドメイン/upload/以下のフォルダのパーミッションを777に変更する。
他にも「デザイン管理>ヘッダーフッター修正」などでエラーが出るがパーミッション変更でクリアできるはず。
(SSHを使わない場合)

・ドメイン直下にインストールするため
html/define.phpを次のように変更する。
define(“HTML2DATA_DIR”, “/../data/”);
define(“DATA_DIR2HTML”, “/../html/”);

define(“HTML2DATA_DIR”, “/data/”);
define(“DATA_DIR2HTML”, “/../”);

data/install.phpにも上記ファイルと全く同じ内容を書く。

【注意】
アクセス権限のチェック画面で以下のエラーが出て、パーミッションが変更できない場合は、「CORESERVERの管理画面>ツール>ファイル所有者の修正」をクリックするとできた。
>> ×:/virtual/ID/public_html/ドメイン/data/cache/mtb_constants.php(644)
ユーザ書込み権限(666, 606等)を付与して下さい。

インストール時に以下のエラーが出た場合も同じく、「CORESERVERの管理画面>ツール>ファイル所有者の修正」をクリックするとできるようだ。
Warning: mkdir() [function.mkdir]: SAFE MODE Restriction in effect. The script whose uid is ・・・

▼ブラウザ
http://ドメイン/install/にアクセス。

次へを3回くらいクリックして進む。

ECサイトの設定は必要事項を入力。
WEBサーバの設定ではURL(セキュア)に以下の共用SSLのURLを入力すると、「URLに異なる階層を指定することはできません。」というエラーが出る。
仕方がないのでURL(通常)と同じまま次へ。
(調べた結果、階層が違うと無理なので専用SSLを使うしかない)

【参考】CORESERVERの共用SSL
https://ss1.coressl.jp/ドメイン/

データベースの設定
DBの種類 PostgresSQL
DBサーバ localhost
ポート 空白
DB名 ID_abc
DBユーザ ID_abc(DB名と同じ)
DBパスワード 設定したパスワード

そして、次へを3回くらいクリックして進むと「EC CUBE インストールが完了しました。」

/install/index.phpを削除。

そのまま管理画面にログイン。
「基本情報設定>郵便番号DB登録」をクリックすると別ウィンドウが開き、郵便番号登録が始まる。
これには長ければ数分かかるので、しばらく待つ。
ウィンドウが真っ白でもステータスバーが完了になるまで待つ。

インジケーターが100%にならずに止まったら、そのウィンドウを閉じて再度、郵便番号DB登録をクリックし、100%になるまでこれを繰り返す。(環境によるが2回くらいでできるはず)

【参考】
日本郵便のホームページから「全国一括」をダウンロード。
http://www.post.japanpost.jp/zipcode/dl/kogaki.html
phpPgAdminにてtb_zipを空にする。
文字コードをUTF-8にしてdata/downloads/KEN_ALL.CSVに上書きして「郵便番号DB登録」をすると、すべてのデータが最新データに更新されるらしい。

これでインストールは完了!!

FTPとMySQLでは手間が非常にかかる上、予期せぬトラブルが起こる可能性があるらしい。FTPではパーミッションの変更が必要だし、.htaccessで回避できたとしてもどこかで問題がある。
MySQLは郵便番号登録がうまくできない。なぜか文字化けした状態で登録されるし、PhpMyAdminで直接郵便番号データを登録しても、なぜか入力フォームでは反映されない。
他のサイトを見ても、そもそもMySQLで作られたプログラムじゃないので、テンプレート変更時などにエラーが出るらしい。

SSHとPostgresSQLでは、上記に比べて全く問題なくインストールから商品登録などができた。
これは非常に大きな違いである。

CORESERVERはセーフモードで動いているので、いろいろなエラーが出るらしい。
PostgresSQLでは、そういったエラーは出ないはず?

今回はあくまでコアサーバーへのインストールの際の情報となりますので、他のサーバーでも同様の方法でインストールができるかどうかはわかりませんが、基本的には同じ工程となります。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク

コメント