‘zencart’ カテゴリーのアーカイブ

Zen Cart

2009年1月3日 土曜日

Zen Cartは、オープンソースの統合型ECサイト構築システムです。

Windows Web Server 2008 + IIS7.0へのZen Cart(日本語版)のインストール手順を以下に示します。

  1. PHPのインストール
    PHPがインストールされていない場合は、本サイトのPHPページを参照して、PHPをインストールする。
  2. データベースの設定
    Zen CartはデータベースにMySQL が利用できる。
    phpMyAdminでの設定方法を示す。

    1. MySQLの管理者ユーザー(rootなど)でphpMyAdminにログインする。
    2. 「新規データベースを作成する」にZen Cart用のデータベース名(ex. zencart)を記入して「作成」をクリックする。zencart-db01
    3. 一度トップページに戻ってから、上部のメニューで「特権」ページを選択し、「新しいユーザーを追加する」をクリックする。
      zencart-db02
    4. ユーザー情報の入力
      Zen Cartデータベースを所有するデータベースユーザーの情報を入力し、画面下の方の「実行する」をクリックする。

      ユーザー名 テキストフィールドの値を利用する Zen Cartデータベースを所有するユーザー名
      ex.) zencart
      ホスト ローカル localhost
      パスワード テキストフィールドの値を利用する パスワード(生成しても良い)

      eccube-db03

    5. 表示された画面で下の方にスクロールし、データベースに固有の特権エリアでZen Cart用データベース(ex. zencart)に対して特権を追加する。
      zencart-db04
    6. データベースに固有の特権のうち「管理-GRANT」以外のすべてにチェックし、「実行する」をクリックする。
      zencart-db05

    データベースの設定は以上

  3. Zen Cartのダウンロード
    http://zen-cart.jp/62.htmlからZen Cart日本語版をダウンロードする。
  4. ダウンロードしたファイルを任意のインストールしたいフォルダに解凍する。
    ex.) C:¥WebApplications¥zencart
    以降、「ZENCART_HOME」と記述する。
  5. php.iniの設定
    phpをインストールしたフォルダにあるphp.iniに対し、PHPのインストール時に設定したこのブログに書いてあるPHPアプリケーションのすべてに共通する設定に加え、以下を設定する。

    extension=php_mysql.dll
    extension=php_gd2.dll
    extension=php_mcrypt.dll
    extension=php_curl.dll

    設定後、IISを再起動する。

  6. 設定ファイルを作成する。
    ZENCART_HOME¥includes¥dist-configure.phpをZENCART_HOME¥includes¥configure.phpにコピーする。
    ZENCART_HOME¥admin¥includes¥dist-configure.phpをZENCART_HOME¥admin¥includes¥configure.phpにコピーする。
    このファイルには、データベースへの接続情報などが書かれている。
  7. フォルダのアクセス権の設定
    以下のファイルまたはフォルダ以下は、IUSRグループが書き込み可能にする。

    • ZENCART_HOME¥includes¥configure.php
    • ZENCART_HOME¥admin¥includes¥configure.php
    • ZENCART_HOME¥cache
    • ZENCART_HOME¥images
    • ZENCART_HOME¥includes¥languages¥english¥html_includes
    • ZENCART_HOME¥media
    • ZENCART_HOME¥pub
    • ZENCART_HOME¥admin¥backups
    • ZENCART_HOME¥admin¥images¥graphs
  8. IIS仮想ディレクトリの設定
    「IIS仮想ディレクトリの作成」を参照して、IISの仮想ディレクトリを追加する。
    物理パスにはZENCART_HOME¥html(ex. C:¥WebApplications¥zencart¥html)を指定する。
  9. データ投入スクリプトの修正
    C:¥WebApplications¥zencart¥zc_install¥mysql_zencart.sql
    BLOB型、TEXT型の列に対してdefaultが設定されているのを修正する。
    Version 1.3.0.2-l10n-jp-4では978, 1564-1566行目

    products_options_values BLOB NOT NULL ,

    query_builderテーブルへのINSERTに対して、query_keys_listに空文字列を指定する。
    Version 1.3.0.2-l10n-jp-4では3266-3271行目

    INSERT INTO query_builder ( query_id , query_category , query_name , query_description , query_string , query_keys_list) VALUES ( '1', 'email', 'All Customers', 'Returns all customers name and email address for sending mass emails (ie: for newsletters, coupons, GV's, messages, etc).', 'select customers_email_address, customers_firstname, customers_lastname from TABLE_CUSTOMERS order by customers_lastname, customers_firstname, customers_email_address', '');
    INSERT INTO query_builder ( query_id , query_category , query_name , query_description , query_string , query_keys_list) VALUES ( '2', 'email,newsletters', 'All Newsletter Subscribers', 'Returns name and email address of newsletter subscribers', 'select customers_firstname, customers_lastname, customers_email_address from TABLE_CUSTOMERS where customers_newsletter = '1'', '');
    INSERT INTO query_builder ( query_id , query_category , query_name , query_description , query_string , query_keys_list) VALUES ( '3', 'email,newsletters', 'Dormant Customers (>3months) (Subscribers)', 'Subscribers who HAVE purchased something, but have NOT purchased for at least three months.', 'select c.customers_email_address, c.customers_lastname, c.customers_firstname from TABLE_CUSTOMERS c, TABLE_ORDERS o where c.customers_newsletter = '1' AND c.customers_id = o.customers_id and o.date_purchased < subdate(now(),INTERVAL 3 MONTH) GROUP BY c.customers_email_address order by c.customers_lastname, c.customers_firstname ASC', '');
    INSERT INTO query_builder ( query_id , query_category , query_name , query_description , query_string , query_keys_list) VALUES ( '4', 'email,newsletters', 'Active customers in past 3 months (Subscribers)', 'Newsletter subscribers who are also active customers (purchased something) in last 3 months.', 'select c.customers_email_address, c.customers_lastname, c.customers_firstname from TABLE_CUSTOMERS c, TABLE_ORDERS o where c.customers_newsletter = '1' AND c.customers_id = o.customers_id and o.date_purchased > subdate(now(),INTERVAL 3 MONTH) GROUP BY c.customers_email_address order by c.customers_lastname, c.customers_firstname ASC', '');
    INSERT INTO query_builder ( query_id , query_category , query_name , query_description , query_string , query_keys_list) VALUES ( '5', 'email,newsletters', 'Active customers in past 3 months (Regardless of subscription status)', 'All active customers (purchased something) in last 3 months, ignoring newsletter-subscription status.', 'select c.customers_email_address, c.customers_lastname, c.customers_firstname from TABLE_CUSTOMERS c, TABLE_ORDERS o WHERE c.customers_id = o.customers_id and o.date_purchased > subdate(now(),INTERVAL 3 MONTH) GROUP BY c.customers_email_address order by c.customers_lastname, c.customers_firstname ASC', '');
    INSERT INTO query_builder ( query_id , query_category , query_name , query_description , query_string , query_keys_list) VALUES ( '6', 'email,newsletters', 'Administrator', 'Just the email account of the current administrator', 'select 'ADMIN' as customers_firstname, admin_name as customers_lastname, admin_email as customers_email_address from TABLE_ADMIN where admin_id = $SESSION:admin_id', '');

    ZENCART_HOME¥zc_install¥demo¥mysql_demo.sql
    adress_bookテーブルのentry_telephone列に適当な値を入れるようにする。(デモデータインストール時のエラー対策:1364 Field 'entry_telephone' doesn't have a default value)
    Version 1.3.0.2-l10n-jp-4では10行目

    INSERT INTO address_book (address_book_id, customers_id, entry_gender, entry_company, entry_firstname, entry_lastname, entry_street_address, entry_suburb, entry_postcode, entry_city, entry_state, entry_country_id, entry_zone_id, entry_telephone) VALUES (NULL, 1, 'm', 'JustaDemo', 'Bill', 'Smith', '123 Any Avenue', '', '12345', 'Here', '', 223, 12, '000-000-0000');
  10. Zen Cartのセットアップを行う。
    1. セットアップURL(http://{あなたのURI}/{IIS仮想ディレクトリ}/zc_install)にアクセスする。
      ex.) http://www.yourdomain.com/zencart/zc_install
      zencart-setup01

    1. 「ライセンス規約」ページでライセンス規約を確認し、「上記を確認したうえでこれに同意します。」を選択する。
      zencart-setup02
    2. 「システム検査」ページでその結果を確認する。
      zencart-setup03
      「PHP APIモード = cgi-fcgi」「MySQLのバージョン=不明」となる場合があるが、問題ない。
    3. 「システム設定」ページで必要情報を入力する。
      zencart-setup04
      「仮想HTTPパス」にはIISで設定するパス(http://{あなたのURI}/{IIS仮想ディレクトリ}など)を記入する。
      ex.) http://itmx.kids-beads.com/zencart
      現時点ではSSLは無効にしておく。
    4. 「phpBB設定」ページ
      phpBBと連携する場合は、このページで必要事項を入力する。
      zencart-setup05
    5. 「データベース設定」ページ
      データベースの設定を入力する。
      「(1)データベースの設定」で設定したDBユーザー名などを記入する。
      MySQLの受信ポートを変更している場合は「データベースホスト名」に{ホスト名}:{受信ポート番号}(ex. localhost:3306)と記述する。
      zencart-setup06
    6. 「店舗設定」ページ
      店舗の情報を入力する。
      このページでデモ用のカテゴリ、商品データを入れることもできる。
      zencart-setup07
    7. 「管理者設定」ページ
      管理者のログインIDなどの情報を入力する。
      zencart-setup08
    8. 「完了」ページ
      これでZen Cartのインストールは完了。
      zencart-setup09
  11. セキュリティの向上
    1. ZENCART_HOME¥zc_installフォルダを削除する。
    2. 以下のファイルに対してIUSRグループが書き込み不可能にする。
      • ZENCART_HOME¥includes¥configure.php
      • ZENCART_HOME¥admin¥includes¥configure.php

      WindowsのPHP5.2では、is_writable()が正しい値を返さないため、ショッピングページから「警告 :設定ファイルが書き込み可能になっています ~/includes/configure.php. セキュリティ上危険なので、このファイルに正しいユーザー権限を設定して下さい。」というメッセージが消えない。
      それを回避するため、ZENCART_HOME¥includes¥init_includes¥init_header.phpの書き込みチェック部分を無効にする。(24行目)

      define('WARN_CONFIG_WRITEABLE', 'false');
    3. /adminフォルダの名称を変更する。
      ZENCART_HOME¥admin/includes/configure.phpを修正する。

      • DIR_WS_ADMIN
      • DIR_WS_HTTPS_ADMIN
      • DIR_FS_ADMIN

      38, 40, 57行目
      ex.)

      define('DIR_WS_ADMIN', '/zencart/admin-xxx/');
      define('DIR_WS_HTTPS_ADMIN', '/zencart/admin-xxx/');
      define('DIR_FS_ADMIN', 'C:/WebApplications/zencart/admin-xxx/');
  12. 管理画面(http://{あなたのURI}/{IIS仮想ディレクトリ}/{(10)-(3)で指定したフォルダ名})にアクセスし、(9)-(7)で設定した管理者ユーザーでログインする。
    ex.) http://www.yourdomain.com/zencart/admin/
    管理画面にログインすると以下のような画面になる。
    この管理画面で、デザインの変更や商品の登録などが行える。
    メールの設定で、「メール送信 - 接続方法」という項目がありデフォルトでは「sendmail」に設定されている。
    これを、Windows上のPHPなので「smtp」に変更したくなるが、「sendmail」のままにすること。
    zencart-setup11
  13. ショッピングサイトを表示してみよう。

    http://{あなたのURI}/{IIS仮想ディレクトリ/

    (ex. http://www.yourdomain.com/zencart/)
    がショッピングサイトのトップページだ。
    zencart-shop

以上

[参考書籍]