ECサイト構築

【参考URL】
http://wiki.ec-orange2.jp/index.php?%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%2F%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89-Linux%2FPHP
より

EC-CUBEはphp-{mbstring,pgsql,mysql,ldap,imap,pear}が必要となる。
-------------------------------------------------------------
●必要なパッケージがインストールされているか確認する。

# rpm -qa|grep php
 php-cli-5.3.0-2.el5.remi.2
 php-imap-5.3.0-2.el5.remi.2
 php-mcrypt-5.3.0-2.el5.remi.2
 php-gd-5.3.0-2.el5.remi.2
 php-pear-1.8.1-1.el5.remi
 php-common-5.3.0-2.el5.remi.2
 php-mbstring-5.3.0-2.el5.remi.2
 php-5.3.0-2.el5.remi.2
 php-pdo-5.3.0-2.el5.remi.2
 php-mysql-5.3.0-2.el5.remi.2


●必要なパッケージを検索

# yum --enablerepo=remi,epel,rpmforge search php-{ldap,imap}


●必要なパッケージをインストール

# yum install --enablerepo=remi,epel,rpmforge php-{ldap,imap}
# rpm -qa|grep php-{ldap,imap}
 php-ldap-5.3.0-2.el5.remi.2
 php-imap-5.3.0-2.el5.remi.2


●http://rpms.famillecollet.com/enterprise/5/olds/i386/より
下記wget等で以下のrpmパッケージを入手する。
 php-5.2.10-1.el5.remi.i386.rpm
 php-cli-5.2.10-1.el5.remi.i386.rpm
 php-common-5.2.10-1.el5.remi.i386.rpm
 php-gd-5.2.10-1.el5.remi.i386.rpm
 php-imap-5.2.10-1.el5.remi.i386.rpm
 php-ldap-5.2.10-1.el5.remi.i386.rpm
 php-mbstring-5.2.10-1.el5.remi.i386.rpm
 php-mcrypt-5.2.10-1.el5.remi.i386.rpm
 php-mysql-5.2.10-1.el5.remi.i386.rpm
 php-pdo-5.2.10-1.el5.remi.i386.rpm

●古いパッケージの削除

# rpm -e php-{cli,pdo,gd,mbstring,mysql,pear} php-5.2.9
# rpm -e php-{common,mcrypt}


●新パッケージのインストール

# rpm -ivh php-5.2.10-1.el5.remi.i386.rpm php-common-5.2.10-1.el5.remi.
  i386.rpm php-cli-5.2.10-1.el5.remi.i386.rpm
# rpm -ivh php-gd-5.2.10-1.el5.remi.i386.rpm php-mbstring-5.2.10-1.el5.
  remi.i386.rpm php-mcrypt-5.2.10-1.el5.remi.i386.rpm php-mysql-5.2.10-1
  .el5.remi.i386.rpm php-pdo-5.2.10-1.el5.remi.i386.rpm php-ldap-5.2.10-1
  .el5.remi.i386.rpm
# yum install  libc-client
# rpm -ivh php-imap-5.2.10-1.el5.remi.i386.rpm
# yum install php-pear


●php関連パッケージの確認

# rpm -qa|grep php
 php-mbstring-5.2.10-1.el5.remi
 php-5.2.10-1.el5.remi
 php-imap-5.2.10-1.el5.remi
 php-pdo-5.2.10-1.el5.remi
 php-mysql-5.2.10-1.el5.remi
 php-pear-1.4.9-4.el5.1
 php-common-5.2.10-1.el5.remi
 php-gd-5.2.10-1.el5.remi
 php-ldap-5.2.10-1.el5.remi
 php-cli-5.2.10-1.el5.remi
 php-mcrypt-5.2.10-1.el5.remi


-------------------------------------------------------------
●phpの追加設定

#vi /etc/php.ini
 [mbstring]
 mbstring.language = Japanese        ・・・OK
 mbstring.encoding_translation = On    ・・・OK
 mbstring.internal_encoding = UTF-8    ・・・OK
 output_handler = mb_output_handler    ・・・OK
 magic_quotes_gpc = 0ff        ・・・OK
 upload_max_filesize = 10M        ・・・OK
 memory_limit = 256M            ・・・OK
 display_errors = On
 以下はEC-CUBEのDBファイル容量が大きいため変更が必要!
 post_max_size = 30M            ・・・8Mから変更
 upload_max_filesize = 30M        ・・・10Mから変更
 [Date]
 date.timezone = Asia/Tokyo        ・・・★暫定処置!

 注)★PHP 5.1.0 以降(日付/時刻 関数が書き直されてから)、タイムゾーンを正しく設定せずに日付/時刻関数を
コールすると E_NOTICE  が発生し、またシステムの設定や TZ 環境変数を
 使用すると E_WARNING  が発生するようになった。
 php.iniに上記設定を追加すれば回避できる。
 【参考】http://us2.php.net/manual/ja/timezones.asia.php
-------------------------------------------------------------
●apacheの追加設定

#vi /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html/shop">
  Options Includes ExecCGI FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>


●Syntaxのチェック

# apachectl -t
# apachectl restart

-------------------------------------------------------------
●DBの作成
EC-CUBE専用のデータベースを作成します。

 # mysql -u root -p
# mysql>create database shop_hoge;


●ユーザの作成

 mysql> grant all on shop_hoge.* to hoge-admin@localhost identif
ied by 'パスワード';
 mysql> grant all on *.* to hoge-admin@localhost identified by 'パスワード'
 ;
 ※このコマンド「*.*」は全DBへのアクセス許可されたユーザ作成時
 mysql>flush privileges;

 ※ユーザ名に『_』や『-』を使用する場合、``でエスケープする事!
 パスワードは ' で括る・・・Shift+7

●ログアウト

 mysql> exit;


●EC-CUBE用ユーザでのDBアクセス+利用DBの切替

 # mysql -u hoge-admin -p
 mysql>use shop_hoge;


登録データベース確認

 mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| shop_hoge          |
+--------------------+


-------------------------------------------------------------
●EC-CUBEのインストール

# wget http://downloads.ec-cube.net/src/eccube-2.4.1.tar.gz
# tar xvzf eccube-2.4.1.tar.gz
# cp -Rp eccube-2.4.1 /var/www/.
※ファイルパーミッションを変更させないため「-p」オプションを使う!

# mv ./eccube-2.4.1 eccube
# ln -s /var/www/eccube2/shop /var/www/html/shop

※解凍してできるhtmlディレクト以下がショッピングサイトのルートディレクトリになるので、展開先には注意!
 /var/www/htdocs/がウェブサーバーのドキュメントルートで、 /var/www/htdocs/shop/にdataとhtmlを展開してしまうと、
本来公開ディレクトリに展開される事を想定していないdataまで公開
 されてしまい、セキュリティ上危険な場合があります。

●相対パスの変更

# vi  /var/www/html/shop/define.php
<?php
/** HTMLディレクトリからのDATAディレクトリの相対パス */
define("HTML2DATA_DIR", "/../data/");

/** DATA ディレクトリから HTML ディレクトリの相対パス */
define("DATA_DIR2HTML", "/../shop/");
?>


●プラウザで「http://shop/install」にアクセスする

■ECサイトの設定
 店名:hoge_ECshop
 管理者:メールアドレス:hoge@hoge.com
 管理者:ログインID:hoge-admin
 管理者:パスワード:?????

■WEBサーバの設定
 HTMLパス:/var/www/eccube2/shop/
 URL(通常):http://192.168.xxx.xxx/shop/
 URL(セキュア):https://192.168.xxx.xxx/shop/
 共通ドメイン:

■データベースの設定
 DBの種類:MySQL
 DBサーバ:127.0.0.1
 ポート:3306
 DB名:shop_hoge
 DBユーザ:hoge-admin
 DBパスワード:?????
 ※netstat -an | grep tcpで3306が解放されている事を確認する
 ※/etc/php.iniに「mysqli.default_port = 3306」の設定あり

■データベースの初期化
 データベースの初期化を開始します
 ※すでにテーブル等が作成されている場合は中断されます

 ○:追加テーブル(dtb_session)の作成に成功しました。
 ○:追加テーブル(dtb_module)の作成に成功しました。
 ○:追加テーブル(dtb_campaign_order)の作成に成功しました。
 ○:追加テーブル(dtb_mobile_kara_mail)の作成に成功しました。
 ○:追加テーブル(dtb_mobile_ext_session_id)の作成に成功しました。
 ○:追加テーブル(dtb_site_control)の作成に成功しました。
 ○:追加テーブル(dtb_trackback)の作成に成功しました。
 ○:テーブルの作成に成功しました。
 ○:初期データの作成に成功しました。
 ○:カラムコメントの書込みに成功しました。
 ○:テーブルコメントの書込みに成功しました。

■サイト情報について
 EC-CUBEのシステム向上及び、デバッグのため以下の情報のご提供をお願いいたします。
 - サイトURL:http://192.168.xxx.xxx/shop/
 - 店舗名:hoge_ECshop
- EC-CUBEバージョン:2.4.1
 - PHP情報:5.2.10
- DB情報:MySQL 5.1.34
 はい(推奨) いいえ

# cd /var/www/html/shop/install
# rm index.php


●プラウザで「http://192.168.xxx.xxx/shop/admin/」にアクセスする

-------------------------------------------------------------
【参考】phpの不用意なVerUpの防止!
  phpのphp5.3以降へのUpgradeはいろいろと問題があります。
  例.SilverStripeが2.x系が動作しなくなる
      EC-CUBEでエラー多発!

上記より、php関連パッケージインストール時にmysql等をUpgradeしない予防策を講じる。
●yum plugin「versionlock」のインストール

# yum -y install yum-versionlock

●バージョンロックファイルリストの作成

# touch /etc/yum/pluginconf.d/versionlock.list


【参考】php5.3以降でのエラー対策!
EC-CUBEではphp5.3以降を利用すると以下のエラー等が多数発生する。
Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/ec-data/module/DB.php on line 475

これは=& newが原因です。PHPデバグをオフにしても消せません。
●php.iniでE_DEPRECATEDが出ないように抑制する

# vi /etc/php.ini
 ;error_reporting  =  E_ALL
 error_reporting  =  E_ALL & ~E_USER_DEPRECATE

●この対策だけではダメかも?
-------------------------------------------------------------