[ECCUBE] GCPでECCUBE4事始め

ECCUBE4が正式リリースされたのが2018年10月。今が2019年6月なのでもう半年以上経ちました
まだ実際の案件として話は出てきてないんだけど、そろそろどんなものなのか触っておこうかと思いました

開発ドキュメントをざっとみたところ3.0よりも随分カスタマイズしやすくなってる予感!

GCPでLAMP環境立ち上げ

昔の印象が強いのか、どうしてもECCUBEはMySQLはダメでPostgreSQL推奨な気がしてしまいます
4系がどうなってるのかわからないけども、とりあえずは昔の印象通りLAPP (Linux+Apache+PostgreSQL+PHP) で構築してみます

初出ではLAPPで環境作成していましたが、後ほどカスタマイズする際にdoctrine:schema:updateでエラーを吐くため、LAMP(PostgreSQLではなくMySQL)で環境をつくるように変更しました
昔と違って今のECCUBEはMySQLのほうがよく検証されているのかな

Marketplaceにちょうどいいものがありましたのでこれを採用
LAPP Certified by Bitnami
LAMP Certified by Bitnami

さっそくデプロイ

ECCUBE4のインストールと設定

環境ができあがったら早速SSHログインしてみます
これ、最初からcomposerまで入ってる!
ほんとに手間なくていいなあ
次のステップとして初期パスワードを変えろとか静的IPにしたらとか出てるけど、ECCUBEのお試しができたら捨てるつもりの環境なのでそれらは無視して進めます

なんとなくbitnamiの流儀に従って/opt/bitnami/appsにECCUBEをインストールします

$ sudo chmod 777 /opt/bitnami/apps
$ cd /opt/bitnami/apps
$ sudo composer self-update
$ composer create-project ec-cube/ec-cube ec-cube "4.0.x-dev" --keep-vcs

composerをログインユーザで進めるとcacheを作る権限がないよと警告が出ていますが今は気にしない
暫く待つとインストール完了します

続いてECCUBEの動作設定をします
bitnamiの標準ではMySQLのrootユーザのパスワードはサーバ管理者と同じになっているそうです
管理者パスワードはGCPでデプロイしたときに表示されてるやつですね
本番ならrootユーザで運用なんてしないけど、今回はお試しなので手っ取り早く別ユーザー作らずにrootでいきましょう
データベース名はわかりやすく”eccube”で
Databaseの項目以外はデフォルトのまま設定を進めます

$ cd ec-cube
$ bin/console eccube:install
Database Url [sqlite:///var/eccube.db]:
> mysql://root:<管理者パスワード>@localhost/eccube
Database Server version [auto]:
>
Mailer Url [null://localhost]:
>
Auth Magic [9Vst7fuQkJUTZo8o]:
>

!                                                                                                                      
! [CAUTION] Execute the installation process. All data is initialized.                                                 
!                                                                                                                      

Is it OK? (yes/no) [yes]:
>

開発ドキュメントで書き込み権限が必要と書かれているディレクトリ・ファイルのパーミッションを変更しておきます

$ sudo chmod 777 .
$ sudo chmod 777 app
$ sudo chmod 777 app/Plugin
$ sudo chmod 777 app/PluginData
$ sudo chmod 777 app/proxy
$ sudo chmod 777 app/template
$ sudo chmod 777 html
$ sudo chmod 777 var
$ sudo chmod 777 vendor
$ sudo chmod 666 composer.json
$ sudo chmod 666 composer.lock
$ sudo chmod 666 .env
$ sudo chmod 666 .htaccess

Apacheの設定

ECCUBEの準備もできたのであとはapache設定

$ sudo sed -i -e 's/\/opt\/bitnami\/apache2\/htdocs/\/opt\/bitnami\/apps\/ec-cube/g' /opt/bitnami/apache2/conf/bitnami/bitnami.conf
$ sudo apachectl restart

これで http://<GCPのIPアドレス> でサイトが表示されました!

管理画面は http://<GCPのIPアドレス>/admin ですね
ID: admin PW: password
仮運用とはいえこれは単純すぎるのでログイン後に変更しておかないと

ここまで、なにもないゼロからECCUBE立ち上げまであっという間。
良い世の中になったもんです。

ですが今回インストールが目的じゃないのです。
明日以降カスタマイズ方法を学んでみます。
ECCUBE4をカスタマイズしてみる

[WordPress] GCP(Google Cloud Platform)でこのブログサイトを簡単構築

このブログはそもそも、以下の記事に刺激されて作りました。

「WordPressを簡単に、てっとり早くベストプラクティスな環境を作りたい!」
そんな方に、私が日頃行っていて、最強だと思っている方法をご紹介します。

1時間で出来る!最強のWordPress環境構築(永久無料)

無料で!簡単に!こんないいことないよね!

ここで書かれている肝は

  • GCP(Google Cloud Platform)のCompute Engineはf1-microなら無料で使える ※always freeになるのはリージョンが限られている(us-east4以外の米国)のには注意
  • Marketplaceを使えば簡単に数クリックで環境構築も終わる。それもWordPress with NGINX and SSL Certified by Bitnamiなら高パフォーマンスでSSLにも対応済み
  • f1-microでストレージが小さいのはcloud storageで対応
  • SSL化もcloudflareを使えば個人サイト規模なら無料だしCDNの恩恵も受けられる

GCP使えば無料でできるという知識はもとからあったけど、こんなに簡単にできるということを再認識させてもらいました。
ただいくつか詰まった点があるので補記したいと思います。

Nginx設定

「wordpress with nginx and ssl certified by bitnami」をデプロイしたままだとpostサイズの制限が厳しく、ちょっとでも大きな画像をアップロードすると失敗します。
なのでpostサイズの制限を変更します。

ターミナルなどで /opt/bitnami/nginx/conf/nginx.conf を編集してclient_max_body_sizeを設定

~略~
http {
    include       mime.types;
    default_type  application/octet-stream;
    client_body_temp_path  "/opt/bitnami/nginx/tmp/client_body" 1 2;
    client_max_body_size 50M; // この行を追加
    proxy_temp_path "/opt/bitnami/nginx/tmp/proxy" 1 2;
    fastcgi_temp_path "/opt/bitnami/nginx/tmp/fastcgi" 1 2;
    scgi_temp_path "/opt/bitnami/nginx/tmp/scgi" 1 2;
    uwsgi_temp_path "/opt/bitnami/nginx/tmp/uwsgi" 1 2;
~略~

編集後はnginx再起動

$ sudo /opt/bitnami/ctlscript.sh restart nginx

Cerber Securityの導入

元記事では「SiteGuard WP Plugin」を勧めているけど、こちらはnginxでの動作に難ありです。
なので同様に管理画面URLを変更できる「Cerber Security, Antispam & Malware Scan」を使用。
reCAPTCHAもこのプラグインで導入できます。

参考
SiteGuard WP PluginがNginxに対応していないのでWP Cerberを使ってみた

※ 6/13追記 Cerber Securityは自分の使い方に合わなかったのでプラグイン変更しました

サイトアドレスをhttpsに設定

こうやって作成したwordpressサイトを運用しようと本気の設定をしていると、いつのまにか記事の投稿に失敗するようになっていました。

いろいろ調べた結果、wordpress 設定 > 一般 の一般設定にて、「WordPress アドレス (URL)」「サイトアドレス (URL)」がhttp://のままでいるために、httpsで利用していると撥ねられていた模様。
いつのまにかと思ったのは、http://<IPアドレス>で接続しているうちは問題なかったのが、cloudflareを使ってhttps接続になるとダメになっていた、ということでしょうか。

ただ、一般設定画面ではこちらの項目を修正したいのですが、表示がグレーアウトになっていて変更不可。
そのためwp-config.phpをいじって対応しました。

/opt/bitnami/apps/wordpress/htdocs/wp-config.php に以下を追記

define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST'] . '/');
define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST'] . '/');