ラベル EC-CUBE3関連 の投稿を表示しています。 すべての投稿を表示
ラベル EC-CUBE3関連 の投稿を表示しています。 すべての投稿を表示

2017年8月10日木曜日

EC-CUBEの公式メルマガでプラグインを取り上げて頂きました

SYSTEM_KDです。

 

タイトルままですが、株式会社ロックオンさんが発行しているEC-CUBEの公式メールマガジンにて、私が作成したプラグインを紹介頂きましたー!!

 

キャプチャ

 

おーーーー!!ありがとうございます!!

 

EC-CUBE 3.0 プラグイン

2016年08月09日に発行されました、「EC-CUBE 3.0注目プラグインをご紹介!【管理機能編】」という公式メールマガジンにて、「管理サポートプラグイン【詳しい商品一覧】」、「会員データ移行プラグイン for EC-CUBE3」と「メンテンナスプラグイン」の計3プラグインが紹介されました。

 

そのうち、「管理サポートプラグイン【詳しい商品一覧】」と「メンテナンスプラグイン」は私が作成したプラグインになります。

(紹介3個中2個が私のプラグインとは!本当にありがとうございます。m(_ _)m )

 

なお、「会員データ移行プラグイン」は、のぶろぐさんが作成されている2系の会員データを3系に移すことが出来るプラグインになります。
(2系から3系にリプレースする場合は、データの移行は必須だと思いますので、重宝しそうですね)

 

以上、公式メルマガで取り上げて頂いた喜びの内容でした。

2017年7月29日土曜日

AzureのMySQLへEC-CUBEから接続

SYSTEM_KDです。
 
Nexus5Xが再起動ループに陥ったあたりからずっとブログを更新していなかったのですが、久々の投稿です。
 
Azuren にある開発者のための管理されたMySQLデーターベース(Azure Database for MySQL)にEC-CUBE3 から接続する方法になります。
 
 

まずはMySQLを用意する

 
ということで、早速。
まずは、Azure 環境に MySQL を用意します。
Azure のコンソールに入ったら、メニューの一番下にある「More services >」を選択します。
 
 
すると、サービスの一覧が表示されますので、検索ボックスに「mysql」と入力します。
mysql という文言で、絞込検索が行われるので、「MySQLサーバー向けの・・・」を選択します。
 
 
 
選択すると、MySQL サーバー向けの Azure データーベース 画面が表示されますので、「+追加」をクリックして MySQL サーバーを作成します。
 
 
 
 
下記の情報を入力または選択して、作成ボタンにて作成します。
・サーバー名
・リソースグループ
・サーバー管理者ログイン名
・パスワード
・パスワードの確認
・場所
・バージョン
・価格レベル
 
気をつける部分としましては、「バージョン」と「価格レベル」になるかと思います。
 
バージョンは、デフォルトで 5.7 が選択されていますが、色々と難しいので 5.6 を選択するのが無難かと思います。
(※完全に個人的意見です)
 
価格レベルは、Basic がデフォルとで選択されている(というか、プレビュー版なのでBasicしか選択できない)のですが、コンピューティングユニットが 100 の全力設定になっているので、ミニマムの 50 に変更を行います。
(※価格的な問題です)
 
その他は、思いのままで大丈夫かと思います ^^;
 
 
 

EC-CUBEから接続(のための準備)

 
それでは、EC-CUBEから接続・・・と言いたいところですが、事前準備を行っておきます。
 
Azure のコンソールにて、作成した MySQL サーバーを選択します。
 
メニューが表示されたら、「接続のセキュリティ」をクリックします。
 
 
 
 
SSL規則とファイヤーウォール規則の設定が表示されますので、ひとまず「SSL接続を矯正する」を「無効」にします。
 
次に、自分のIPからの接続を許可するように、「自分のIPを追加」をクリックします。
ファイヤーウォール規則の部分へ自動で設定が挿入されますので、画面上部の「保存」ボタンをクリックします。
 
※ローカル開発環境からの接続を想定しておりますが、EC-CUBEが別の場所にある場合は、その場所のグローバルIPアドレスを設定します。
 
 
 
 
ここまで設定ができたら、MySQL用のクライアントソフトを利用して、作成した MySQL サーバーに接続が行えるようになっているかと思います。
 
接続を行って、ついでに新規でDBを作成しておきます。
 
ちなみに、接続情報は先程のメニューの「接続文字列」の情報を確認するか、「概要」部分に記載されている、サーバー名(ホスト名)・サーバー管理者ログイン名(ユーザー名)・指定したパスワードになります。
 
 
 

EC-CUBEから接続

 
設定ができましたので、今度こそ EC-CUBE から接続を行います。
 
といっても、普通にEC-CUBEをインストールするだけです。
 
接続情報は先程クライアントソフトで利用したものと同じです。
(データーベースも先程作成したものを指定すればOKです)
 
※インストールには結構な時間がかかりますので気長に待ちましょう!!
(クライアントソフトで接続して、マイグレーションテーブルがどこまで進んでいるか更新ボタンを連打しながら待ちました(笑))
 
 
実際、EC-CUBE側の画面は真っ白になると思いますので、マイグレーションがどこまで進んでいるかでみるのが良い気がします。
具体的には、「doctrine_migration_versions」テーブルの中身を確認します。
 
バージョン 3.0.15 ですと、20170225120000 のデータが登録されたらOKとなります。
 
ちなみに私の環境では、「dtb_base_info」が空のまま&config.yml にインストール完了が更新されない状態になってしまったので、それぞれ下記の方法にて対応しました ^^;
 
dtb_base_info は手動でレコード追加
config.yml  はいったん設定ファイルを削除して、データーベースを初期化しないチェックを入れて再度インストール
 
 
完了後、トップページにアクセスして表示できれば接続OKです!
 
 
 
 
はい。接続できました。と、言いたいところですが本番はここからです(笑)
 
現在、MySQL サーバーに接続する際に、SSLの規則でSSLでの接続強制を無効化しておりますが、セキュリティ的には有効(強制)のが良いですよね。ということでSSLで接続をおこないたいと思います。
 
ということで、Azureのコンソールにて、SSL強制を無効にした部分を「有効」に戻しておきます。
 
 
 

EC-CUBEから接続(SSL強制で接続)

 
SSLで接続を行うには、こちらのページを参考に、証明書を用意します。
 
指示通り実行して、pem ファイルが用意できたら、そのファイルをEC-CUBEに配置します。
 
特にここに配置するというのは無いのですが、config.yml と同じ場所、 app/config/eccube/ に配置しました。
 
次に database.yml の変更を行います
( app/config/eccube/ にあります)
 
 
どう変更するかというと、、・・・どう変更するのだろう・・・^^;
 
 
 ということで、調べてみるとオプション値としてpem ファイルを追加してやると良いということでした。
 
defaultTableOptions に設定を追加します。
 
  
    driverOptions:
1012 : ‘/var/www/app/config/eccube/MyServerCACert.pem'
※pem ファイルへのパスは読み替えて下さい。
 
 
設定を変更したので、ページを表示。

 

An exception occured in driver: SQLSTATE[HY000] [2001] SSL connection is required. Please specify SSL options and retry.

 
エラーが出ました。。
 
何かが違うようです。
 
再度調べてみると、PHPバージョンによって違うとかなんとか、、
 
私の環境(PHP7.0) では、こっちが正解
 
    driverOptions:
1009 : ‘/var/www/app/config/eccube/MyServerCACert.pem'
 
 
というのも、この 1009 は定数(PDO::MYSQL_ATTR_SSL_CA)から持ってくるのが正しいようです。
 
では、TOPページを表示。
 
 
 

PDO::__construct(): Peer certificate CN=

 
はい。エラーが出ました ^^;
 
 
さらに調べてみると、sqlmode の指定によって動作が違うから・・と本家に書いてあるようで、、
 
現在、サービスへの mysql.exe 接続で "--ssl-mode=VERIFY_IDENTITY" オプションを使用した場合に、接続が次のエラーで失敗するという既知の問題が確認されています。ERROR 2026 (HY000): SSL connection error: SSL certificate validation failure Downgrade to "--ssl-mode=VERIFY_CA" or lesser SSL modes (エラー 2026 (HY000): SSL 接続エラー: SSL 証明書の検証エラー "--ssl-mode=VERIFY_CA" または以前の SSL モードにダウングレードしてください)。 "--ssl-mode=VERIFY_IDENTITY" を使用する必要がある場合は、この問題が解決するまで、リージョン サーバー名を使用してください。 サーバー名 (westeurope1-a.control.database.windows.net など) を ping してリージョン サーバーを確認し、確認したリージョン サーバー名を接続で使用してください。 この制限は、今後削除する予定です。
 
 
ということで、その支持に従って、
 
ping xxx..mysql.database.azure.com
 
を実行して、でてきたリージョンサーバーのドメインを、database.yml の host に設定します。
 
ようやくSSL強制にて接続できました。
 
 
 
 
 
 

まとめ

 
始めは簡単だと思っていたのですが、ひっかかりまくってしまいました ^^;
 
(そんなこともあって、記事のターゲットが謎な状態に・・・)
 
 
今回は、database.yml に設定を記述しましたが、database.php を作成してそれを読み込むようにした方が良さそうです。
(EC-CUBE3 は php ファイルがあるとそちらを先に読み込んでくれるので)
 
 
<php

$database = array(
'driver' => 'pdo_mysql',
'host' => 'pingで確認したホスト名',
'dbname' => 'データーベース名',
'port' => '',
'user' => 'ユーザー名',
'password' => 'パスワード',
'charset' => 'utf8',
'defaultTableOptions' => array('collate' => 'utf8_general_ci'),
'driverOptions' => array(PDO::MYSQL_ATTR_SSL_CA => 'pemファイル')
);

return array('database' => $database);
 
こんな感じ、database.php を作成して同じ場所へ配置してやれば行けるんじゃないかと思います。
(疲れたので、未確認です ^^;
 
 
 
以上、AzureのMySQLへEC-CUBEから接続でした
 

2017年3月5日日曜日

EC-CUBE3.1a が公開されました。

SYSTEM_KDです。

EC-CUBE3の次期アップデートバージョン、EC-CUBE3.1 の評価版である、3.1a が公開されました。

https://www.ec-cube.net/press/detail.php?press_id=227

EC-CUBE3は、現在3.0.x としてバグフィックス等のマイナーバージョンアップが進んでおり、現在バージョン「3.0.13」が最新となっておりますが、3.1a は今後予定されている大型バージョンアップの評価版(第一弾)となっているようです。

EC-CUBE3.1 について


主な変更点としましては、以下が行われるようです。
(GitHub の EC-CUBE3.1.0 リリース計画より抜粋)

コアの機構見直し
・機能カスタマイズ性の向上に向けた機構改善
・フロントのデザインテンプレートでのフォームヘルパーの利用の見直し・分解
・Eccube-Upgrade-Fixerの開発
・プラグインの依存関係を解決する機構を実装
・EC-CUBEスタイルガイドラインの作成
・データベースのデータ型とカラム名の変更(for 3.1)

機能改善
・受注・配送データの改善
・デバイス毎にデザインテンプレートやレイアウトを設定する機能

その他
・初期インストール時のデータ投入をCSVファイルに変更


いやーガッツリと変わりますね。
(今、公開済みのプラグインを対応させるのに結構かかりそうだな・・)


ということで、ソースコードも合わせて確認してみましたが、たしかに色々と変わってますねー

まぁ、利用するフレームワークのバージョン自体が上がってますし、コアの機構に見直しが入ってこともありで、そりゃそうですが ^^;

まだ、3.1a なので作り込みとしては、これからだと思いますが、カスタマイズ性向上部分についても、こんな感じになるというイメージを確認することができますので、ソースを落としてきて見てみるのも良いかと思います。
(って、どの対象向けの発言なんだこれw)


なお、デザイン部分の改善については、今回の3.1a には含まれていないので、今後公開されていくようです。
(そっちはそっちでどの位変更が入るのか気になるところです)


ちなみに、今後のマイルストーンとしては、EC-CUBE 3.1.0a2 が2017年5月公開となっているようです。

その中に「機能カスタマイズ性の向上に関する機構改善のフィードバック反映」が含まれているのですが、そのフィードバックできる会が、下記で開催されるようです。

2017年3月15日(水) 株式会社ロックオン本社

2017年3月16日(木) 株式会社ロックオン東京支社


ちょっと気になるし、行ってみようかなー。


以上、EC-CUBE3.1a が公開されました でした。




2016年11月5日土曜日

EC-CUBE3向けプラグイン タイムセールpro をリリース

SYSTEM_KDです。

久々の新作プラグインとなります、EC-CUBE3向けのプラグイン「タイムセールpro」をリリースしました。

icon_2

 

タイムセールPro

どんなプラグインかと言いますと、EC-CUBE3へタイムセール機能を追加するプラグインとなります。

(はい。そのままです。)

 

スライド1

 

タイムセールプラグインですので、指定した「期間」に本来とは別の価格を設定することが可能となります。

セールを行いたい商品へタイムセール開始日と終了日、その間の価格を設定すれば、自動的に指定期間内だけ、特別価格で販売を行うといったことができます。

 

スライド2

 

また、期間の指定は、日付だけでなく時間単位で細かく設定することができます。

このため、90分限定セールといったことも簡単に行うことができます。

 

スライド3

 

さらに、指定した期間中、常にセールを行うだけではなく、「時間」「曜日」を絞ったセールを行うことができます。

このため、来月は1ヶ月間「土日限定」のセールを行いたいといった場合や、「火曜日の17時から30分間だけ」セールを行いたいといったことも、実現することができます。

 

スライド6

 

上記の設定は、商品ごとに行えるのですが、同様の設定を複数の商品に行う場合は、設定時間が手間となっていまします。

ですが、当プラグインでは、これを回避しスムーズにタイムセールの設定を行えるようにするため、「共通設定」を作成できるようになっています。

 

image

共通設定でも、タイムセールの開始・終了の期間(日時)、時間・曜日の設定は変わることなく行え、価格についても、割引率を設定することが可能となっています。

 

共通設定設定の反映は、商品ごとでの選択・一覧からの一括設定にて行うことができ、複数の商品へも簡単に反映できるようになっています。

また、価格について割引率を設定できるようになっていると書きましたが、一部の商品は指定の割引率を利用せず、別の価格を設定したいという場合もあるかと思います。

そんな時のため、商品ごとのタイムセール設定にて「割引率」を利用せず「任意の価格」を利用するといった設定が行えるようになっております。

 

blog用

 

まとめ

タイムセールを実施する際に、利用できるものを色々と実装してみましたので、プラグインの名称を「タイムセールpro」と名付けてみました。

これから、年末年始に向けてECサイト(EC-CUBE3の)にて、タイムセールの実施をお考えでしたら、いかがでしょうか?

EC-CUBE3 向けプラグイン「タイムセールpro」

 

また、「あータイムセールプラグインにこの機能が付いていたら導入したんだけど」といった意見がございましたら、お気軽に申し付け下さい(笑)。もしかしたら、実装するかもです。

 

以上、EC-CUBE3向けプラグイン「タイムセールpro」のご紹介でした。

2016年9月3日土曜日

AzureのAppServiceで MySQL In App (プレビュー)なるものを見つけたので、EC-CUBE3を構築してみた

SYSTEM_KDです。

久々に、AzureのAppServiceで作ったEC-CUBE3環境(非公開)のコンソールを開いてたら、「MySQL In App (プレビュー)」なるものを発見したので、EC-CUBE3の環境を構築してみようと思います。

(試して書く方式ではなく、今試しながら作っていくのでゴールできるか分かりません!)

 

Web + MySQL 環境を作成

では早速。

「+新規」から、「すべて表示」を選択。

image

 

表示されたら、「Web + モバイル」を選択。

image

 

フィルターへ「mysql」とかを入力して、「Web App + MySQL」を探す。

image

 

「作成」を押して、必要情報を入力。

その際、「データベース プロバイダー」は、「MySQL In App (プレビュー)」を選択します。

※ちなみにプランは、無料プランです

image

 

入力できたら、作成。

 

PHPMyAdminへアクセス

環境が作成できたので、メニューの中の「MySQL In App (プレビュー)」を選択してみます。

image

 

上部にある「管理」ボタンを押すと、PHPMyAdmin へアクセスできました。

 

image

 

おぉー

 

・・・

・・・

 

IDとパスワード何ですか??

 

・・・

ググってみた結果、DB名は「azuredb」だということが判明しましたが、肝心のIDとパスワードが何なのかよくわからんです。

(デプロイ用の情報とかを入れてみたけどダメでした)

 

・・・・

・・・・

 

あ、よくみたら、先程の MySQL In App (プレビュー) ページに、接続文字列の環境変数というものがありました。

image

 

ここへ入ってるかもしれないので、確認してみます。

(って、どうやって見るんだこれ)

 

MySQL への接続情報を取り出す

ググってみたら、それっぽいページを見つけたので、参考にしてみます。

https://blogs.msdn.microsoft.com/appserviceteam/2016/08/18/announcing-mysql-in-app-preview-for-web-apps/#mysqlconnect

 

接続情報を取り出している部分だけ、お借りして。

以下のように、xxx.php 処理を作成。

<?php

$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';

foreach ($_SERVER as $key => $value) {
if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
    continue;
}

$connectstr_dbhost = preg_replace("/^.*Data Source=(.+?);.*$/", "\\1", $value);
$connectstr_dbname = preg_replace("/^.*Database=(.+?);.*$/", "\\1", $value);
$connectstr_dbusername = preg_replace("/^.*User Id=(.+?);.*$/", "\\1", $value);
$connectstr_dbpassword = preg_replace("/^.*Password=(.+?)$/", "\\1", $value);
}

print_r("connectstr_dbhost = " . $connectstr_dbhost . "<br>");
print_r("connectstr_dbname = " . $connectstr_dbname . "<br>");
print_r("connectstr_dbusername = " . $connectstr_dbusername . "<br>");
print_r("connectstr_dbpassword = " . $connectstr_dbpassword . "<br>");

 

FTPでアップして、上記のページアクセス!

とれたー!!

 

って、

https://blogs.msdn.microsoft.com/appserviceteam/2016/08/18/announcing-mysql-in-app-preview-for-web-apps/#mysqlconnect

にのってるIDとパスワードじゃないか・・・。

image

 

ということで、このIDとパスワードを利用して、phpMyAdmin へアクセスできました。

 

EC-CUBE3をインストール

MySQLへの接続情報をゲットできましたので、EC-CUBE3をインストールしてみます。

まずは、ソースを配置します。

 

AzureへEC-CUBE3を設置する際、展開したファイルをアップする方法を行っていたのですが、「vendor」のファイル数が多いのもありうちの貧弱ネット環境だと、結構時間がかかるし、かといって圧縮した状態でアップ後に展開してもタイムアウトして上手く展開できなかったりするので、バシッと行くのがないんですよね。。

ということで、今回はローカルGitからアップします。

(それなりに、時間はかかりますが、他の方法より早いし、後々の管理も楽です)

 

まぁ、好きな方法でファイルをアップします。

ちなみに、今回インストールする、EC-CUBEのバージョンは 3.0.10 です。

 

ファイルがアップできたので、インストールしていきます。

 

save image

次へ進む。

 

save image

 

おっと、権限チェックにひっかかりました。

Azure は自動でディレクトリ作れない仕様だったはずですので、手動で指定されたディレクトリを作成します。

save image

 

ディレクトリを作成すれば、次へ進めるようになるので、次は「サイトの設定」を入力します。

(まぁ説明不要ですね)

 

次はいよいよ、データベースの設定です。

save image

 

取得したMySQLの接続情報を設定します。

(ポート番号含め、全部設定)

 

save image

 

おぉ!!あっさり接続できました!!

 

あとは、テーブルの作成が上手くいくか・・・。

(ClearDBの無料枠は、同時接続数に阻まれて簡単には作成させてもらえないんですよね。。)

 

・・・・

save image

 

完了!!!!

 

まとめ

Azureの無料枠というか無料に踊らされて、何回かEC-CUBE3をインストールしましたが、今回はかなりさくっとインストールできました。

しかも、(PHP7にしている恩恵もあるかもしれませんが)無料枠でもそれなりのレスポンスで動作してくれる気がします。

私の感覚としては、SQLiteで動作させたときよりもレスポンスよさ気です。

 

ということで、ちょっと整えたらプラグインのデモ環境用に公開したいと思います!!

 

以上、AzureのApp Service で MySQL In App (プレビュー)なるものを見つけたので、EC-CUBE3を構築してみた でした。