プログラミング

Magento ウェブサイトの切り替え

今やろうとしているのは、Magentoのサンプルのウェブサイトはアパレル業的なサンプルになっているので、これはこれで置いておいて、別の飲食業的なサイトを作ることです。 Magento ホームページカスタマイズへの道 まず、とっかかりの部分を作りました。 MagentoのSQL解析 商品の登録のされ方を分析し、商品属性、特に在庫状況が重要だと知りました。 続いて、ウェブサイトを分けてみたいと思います。 1.Magentoの商品のカテゴリ分け そもそもなぜ、このタイミングでウェブサイトを分けるかというと、商品登録の正しさが確認できないからです。 サンプルとして登録されているアパレル商品とは別に、ピザを登録し、それをピザ用のページに出したいと思います。が、これがまた難しい。 最初にやったように、ウェブサイト、店舗、ストアビューは作っておきます。 そして、店舗でルートカテゴリを選択するので、ルートカテゴリ(カタログ>カテゴリ)を作ります。 で、例えば、この店舗用のWhat’sNewを作ります。そして、サンプルのWhat’sNewに表示される商品はどのようなものか見てみると、 SELECT mg_url_rewrite.* FROM mg_url_rewrite WHERE (request_path IN (‘what-is-new.html’, ‘what-is-new.html/’)) AND (store_id IN (‘1’)) というようなSQLが実行されていることが分かります。 そして、表示したいページをIN句を変えて見てみると表示されませんので、最後のAND条件を外してみてみると、store_idが1以外で登録されていることが分かります。 では、どのようにstore_idを変えるのだという話になります。 2.Magentoにおける複数店舗(というかウェブサイト)の登録方法 ところが、多くの情報ではウェブサイト、店舗、ストアビューを登録できる、という話で終わってしまって、なかなか複数店舗を実際にどのような設定で表示させるのか、という情報が見つかりません。 と言いつつ、割と初期の段階で、公式情報のドメインを分けるみたいな話は出てくるのですが、いや、そこまでやらなくてよいから引数透とかで分けられるんじゃないの??みたいなところでもがきます。 例えば「___store」を使うみたいな話です。 しかし、結論でいえば、それは無理で、おそらく簡単なのは、ディレクトリ自体を分ける方法です。 例えば、サンプルのウェブサイトをhttp://example.com/magento/ で作っていたら、http://example.com/aaa/ のようにするということです。 参考はこちらとこちら。 https://docs.nexcess.net/article/how-to-configure-magento-2-storefronts.html https://magento.dekirumonn.com/forums/topic/multi-store-%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/ apache素人なのでちょっとビビっていたのですが、これについて言えばそんなに難しくはなく、index.phpと.htaccessをコピーして、index.phpを一部書き換えましょう、ということ(書き換えサンプルは実はindex.phpの一番先頭に書いてあります)。 そして、app、lib、pub、varへのシンボリックリンクを、元インストールしたディレクトリの方に張っておきましょう、ということです。 bitnami環境だと、 ln -s /opt/bitnami/apache2/htdocs/xxx/app/ app ln -s /opt/bitnami/apache2/htdocs/xxx/lib/ lib ln -s /opt/bitnami/apache2/htdocs/xxx/pub/ pub ln -s /opt/bitnami/apache2/htdocs/xxx/var/ var

MagentoのSQL解析

自分で作成したページ・ウィジェット・ブロックに思うように商品が表示されない。 ならば、どのようなSQLが流れていて、何が引っかかって表示されないのか調べてみよう、という活動です。 1.環境整備 (1)SSH接続用ターミナルソフト Tera TermでもPuttyでも、お好きなものをどうぞ。 ではあるのですが、AWS内bitnamiで構築した環境のMy SQLに接続する、という観点で。 Puttyでは、Host Nameにユーザ名@xxxを記載しますが、bitnamiで構築した場合は、 ubuntu@xx.us-east-2.compute.amazonaws.com というようになります。 そして、Connection>SSH>Auth でPrivate keyにppkファイルを登録します。 この接続状態をそのまま保存しておいて、次回からはSaved Sessionから呼び出すだけなので、現在は基本的にはPuttyを使用しています。 Tera Termでは、ホスト欄にxx.us-east-2.compute.amazonaws.comを入力しOK、ユーザ名にubuntu、「RSA/DSA/ECDSA/ED25519鍵を使う」で、ppkファイルではなくpemファイルを指定する、という形になり、ホスト名以外は次回に覚えてくれていないので、ちょっと面倒だなと思っています。ターミナル上での見た目はTeraの方がきれいなので好きなのですが。 (2)WinSCP ファイルのアップ・ダウンロード用にはこちら。 SFTPで、ホスト名はxx.us-east-2.compute.amazonaws.com、ユーザ名はubuntu、設定>SSH>認証の秘密鍵にppkファイルを指定します。 これも、保存しておけば、次回以降の接続はリストから選択するだけなので、よいです。 (3)A5 : SQL Mk-2 これが本日のポイント。 https://a5m2.mmatsubara.com/ DB接続ツールは色々ありますけど、個人的にはこれが最強だと思っています。 特に、最強なのがSQL整形機能。今回のように、ログからSQLを取り出して解析しようと思う時に、Ctrl-Q一発でSQLを見やすくしてくれるのは、非常に助かるので、普段の会社の仕事でも使っております。 これの接続は、ちょっとばかり難しいです。トンネリングでの接続になります。 A5 : SQL の接続を作成する際にはMySQL/MariaDBを選択できます。その中の設定で、SSH2トンネルの指定ができます。 「SSH2トンネル」タブのSSH2ホスト名をxx.us-east-2.compute.amazonaws.com、ユーザーIDをubuntuにして、秘密鍵ファイルにpemファイルを指定します。 その上で、「基本」タブのサーバー名にはSSH2サーバーから見たサーバー名を指定するので、初期の状態ならlocalhostを指定します。Magento用に作成したユーザーID、パスワードを指定しますが、 grant select on . to home; が必要だったように思います(記録し忘れている)。 ということで、この3点セットがそろうと、割と自由にDBもいじれるかと思います。 2.MySQLのクエリトレース 普段はSQL Serverが主戦場なので、トレース取得はProfilerを便利に使用させていただいています。 ではMySQLはどうかということで、こちらを参考にさせていただきました。 http://blog.szmake.net/archives/496 my.cnfはどこにあるかというと、これはbitnami特有で、/opt/bitnami/mysql/ にあります。 また、my.confを編集した後、MySQLをリスタートするのですが、これもbitnami特有で sudo /opt/bitnami/ctlscript.sh restart mysql となります。 bitnamiでは、/opt/bitnami 配下に色々なものが存在する、ということを認識しておくだけでもいろいろはかどるかと思います。 3.Magentoで実行されるSQL で、トレースを取ってみた結果です。 例えば、 SELECT mg_store_website.* FROM mg_store_website ↓ website_id code name sort_order default_group_id is_default

Magento ホームページカスタマイズへの道

Magentoのサンプルのホームページはアパレル業的なサンプルになっていますが、これを飲食業的なサンプルにしたいと思っています。しかし、なかなか思うようにいきません・・・ 1.やろうとしていること サンプルのトップページにあたる http://example.com/magento/ (magentoはインストール時に指定) これが、通常ベースURLになります。そして、ここに表示されているのは、アパレル業的なサンプルデータです。 今後の勉強用にこれはこれで残しておきたいのですが、できれば、アパレルサンプルはベースURLではなく別のURLにして、ベースURLで表示される内容を飲食業向けにしたいと思っています。 ただ、このベースURLで表示される内容のカスタマイズすら、どこから行うか分かりませんので、それは置いておき、まずは、とにかく飲食業向けホームページを作ることを目標とします。 2.ウェブサイト、店舗、ストアビューを作る 最初の基本は、ウェブサイト>店舗>ストアビュー の構成です。 https://docs.magento.com/m2/ce/user_guide/stores/websites-stores-views.html https://www.programmers-office.ml/magento-open-source-user-guide/getting-started/configuration_configuration-basic/stores_websites-stores-views/ 今イメージしているのは、この飲食業向けに、標準のウェブサイトとは別のウェブサイトを作ります。 その下に、店舗を複数作ります。ストアビューは、通常複数言語対応用に使用されるようですので、これは各店舗1ストアビューとします。 https://docs.magento.com/m2/ce/user_guide/configuration/scope.html https://www.programmers-office.ml/magento-open-source-user-guide/getting-started/configuration_configuration-basic/stores_websites-stores-views/configuration_scope/ 3.商品を作る 次に商品を作ろうとしますが、いくつか、前提知識が必要です。 まず、最初に選択する必要がある、属性セットというものがあります。 これを選択することにより、商品として登録する属性の内容が切り替わります。 例えば、服にはサイズという属性があるが、カバンにはサイズという属性はない、というような形です。 そして、サンプルとして登録されている属性セットはアパレル用のものなので、料理用の属性セットを作成します。 例えば、ピザという属性セットを作成します。 しかし、実は、それよりも前に把握しておくべき内容があります。それは、商品には商品タイプというものがある、ということです。 https://docs.magento.com/m2/ce/user_guide/catalog/product-types.html https://www.programmers-office.ml/magento-open-source-user-guide/catalog/catalog_product-create/catalog_product-types/ 例えば、ピザの場合は、一種類のメニューに対して、サイズという考え方があると思います。 そのような複数バリエーションを持つ場合は、Configurable Productを指定して、新規商品の追加を行います。 商品タイプは見えるようになっておらず、そのまま新規商品画面に遷移できるので、最初は分かりませんでした。 4.ページを作る では、いよいよ、コンテンツ>ページ から、この飲食業ウェブサイト用のページを作ります。 ページのタイトル等を入力して、デザインを決めて、コンテンツを作成します。 で、ここが今日の本題なのですが、なかなか思うように表示がされないのです。 コンテンツのエディタとしては、ビジュアルに色々できます。 一番基本は、ウィジェットの追加という方式かと思います。 例えば、静的ブロックの挿入ということができ、そこで、サンプルとして用意されているブロックを挿入することは簡単です。 しかし、それではアパレルの商品が表示されてしまうので、ピザを表示させようと思います。 例えば、商品一覧というウィジェットタイプがあるので、それを選び、商品の条件として、属性セットがピザと等しいもの、という指定をします。 しかし、表示されません。 何が悪いのやら、となります。 5.SQL解析を始める ここで、ユーザガイドを丁寧に読み始めるというのが王道かと思い、だからこそユーザガイドの和訳を始めたわけですが、そう簡単に把握はできなそうです。 むしろ、実行されるSQLを解析した方が、原因にたどり着くのは早いのではないかと思い、そちらからのアプローチに切り替えました。 その話は明日に続けたいと思います。 関連記事 Magento(マジェント)始めました

Magento(マジェント)始めました

現在作ろうとしているサービスの基盤として、Magento(マジェント)がよいのでは、と思い、Magento(マジェント)を使い始めました。 いろいろ苦労していますが、やったことを片っ端から忘れてしまうので、ちょっとずつ記録を残していきたいと思います。 1.インストール先、方法について (1)AWS Lightsail 一番小規模の構成だと1か月無料で使用できます。 簡単に起動できるのは感動です。ただ、これだとパワー不足です。サンプルデータを入れようとすると途中で失敗するので、いったんメモリを増やしたりする必要があります。 今改めて試してみたらまた感じ方も違うかもしれませんが、。 (2)AWS Bitnami こちらはEC2のインスタンス作成に、AWS Marketplaceで提供されているBitnamiのAMI(Amazon マシンイメージ)を使用するという方法です。 こちらもサンプルデータを入れようとするとエラーになるのですが、その理由はシステム構成をバージョンアップしなければならないということでしたが、どうやってもPHPを7.1に上げられず、断念しました。BitnamiがMagento2.2環境を提供してくれるようになると、これはかなり有望な選択肢になると思います。

(3)GCP Bitnami では、ということで、いったんAWSではなく、GCPの方に立てようとしてみたのですが、AWS Bitnamiとほぼ同じ結果でした。 Bitnamiのイメージではなく、通常構成でインストールしようともしてみましたが、それも失敗(理由はもう忘れてしまいました)。 (4)AWS クイックスタート もういちど、AWSに戻り、やはり手順書見ながらやらないとね、ということで、こちらを参照。 AWS クラウドでの Magento: クイックスタートリファレンスデプロイ サンプルデータ付きでインストール完了。 しかし、翌日、請求警告メール。改めて見てみると、これはものすごいリッチな構成で環境ができています。 (転載)

慌てて環境削除しました。 (5)AWS LAMP with PHP 7.1 Certified by Bitnami 最終的に現在使用している環境はこれ。Magento入りのAMIではなく、LAMP環境まで入っているAMIにMagento2.2.5をインストールしました。 こんな素人状態で大丈夫かなと思いつつ、AWSの勉強もしながらMagentoも勉強していきます。 2.現状の問題 問題もいろいろあるのですが、ありすぎて、とりあえず役立ちそうなところから勉強していく感じです。 (1)bin/magento setup:upgrade等をすると500エラーになる この問題のために、当初はサンプルデータを入れられず悩んでいました。 ところが、サンプルデータはインストール後にsetup:upgradeしなくてもちゃんと入っていましたので、それでしばらく動かしていました。 ただ、管理画面を日本語化しようとして、 composer require mageplaza/magento-2-japanese-language-pack:dev-master php bin/magento setup:static-content:deploy -f ja_JP php bin/magento cache:flush とやったら、また500エラーになってしまいました。 そうなった場合、 bin/magento deploy:mode:set developer とすると一応は動きます。しかしなぁ・・・ (2)Cronを動かせていない もしかしたら、これが(3)の原因だと悲しいのですが、これもなかなか手順が分からず・・・ (3)ホームページのカスタマイズができない サンプルのホームページは一応残しておいて、特定のストアビューのホームページを作って、ウィジェット等を配置したいのですが、うまくいっていません。


CORSを乗り越えて

さくらレンタルサーバの共有SSL(続き) さくらにテストサイトを立てて、データもコピーします。 あまり作りこんでいない段階でしたら、普通に、DB新規作成→WordPressをインストール→データエクスポート・インポートでやっても大した手間ではありません。 そして、共有SSLの設定は簡単です。 https://help.sakura.ad.jp/hc/ja/articles/206054862&amp;#8211;%E5%85%B1%E6%9C%89SSL-%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95 これにより、「the content must be served over HTTPS.」のエラーは解消します。 MonacaアプリがさくらサーバからJSON取得する場合のCORS対応 次は、予想通りではありますが、「No ‘Access-Control-Allow-Origin’ header is present on the requested resource.」エラーになります。 ※ちなみに、この辺のエラーは、Chromeデベロッパーツール(F12キー)で確認します。 個人的には、これの対応についての情報も分かりにくかったです。 これは、ブラウザ側の制約だ、ということで、それを回避するのは、クライアント側アプリだと考えました。 しかし、config.xmlには既にの記述があるので、これで回避できていないとおかしいのでは、とかなり悩みました。 結論としては、データを提供する側で回避用のヘッダを付けます。自分が提供するデータを勝手に取られるのはまずいが、データ提供側で許可しているならブラウザも安心して取得する、という感じでしょうか。 ですので、サーバアプリ側でヘッダを追加します。 PHP・WordPress記述なので、こんな感じです。($wpdb->get_results が好き) $rows = $wpdb->get_results($sql); if ($rows) { $json_data = json_encode($rows); } header(‘Access-Control-Allow-Origin: *’); header( ‘Content-Type: application/json; charset=utf-8’ ); echo $json_data; これにより、CORS制約も回避されました。 Monaca(Vue)でのJSON取得処理 これで、データが取得されましたので、あとは画面で使うように加工します。 ここも、まあまあ苦労しましたが、 var data = []; ・・・ axios.get(‘[https://xxx’)][1] .then(function (response) { for(var i = 0; i < response.

GCEの開発環境にSSL証明書を入れようと思ったが

<環境の復習> サーバサイドの開発をAWS Cloud9で行います。 なるべく無料範囲で、ということで、EC2を使用せず、GCP上のGCEに接続します。 ですので、サーバ側開発環境はGCEに立っています。 クライアント側開発は、クロスプラットフォーム開発を行うためにMonacaを使用しています。 ですので、開発中は、MonacaからGCEに接続して、JSONを取得しよう、と考えています。 本番環境は、さくらレンタルサーバにサーバアプリを構築し、Monacaでビルドしたモバイルアプリから接続します。 ここまで、GCE上でWordPressを動作させており、Monacaでデザインの概要を作成しました。 次は、MonacaからJSON取得をしようとしています。 Let’s Encrypt さて、MonacaからGCEに接続してJSONを取得しようとしたところ、 The page at ‘https://ide.monaca.mobi/’ was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ‘http://xxx/’. This request has been blocked; the content must be served over HTTPS. というエラーになりました。 これは、ここまでの調査の中で予期されたエラーなので、では、SSL証明書を導入しましょう、ということになります。 こちら https://nozomi-hiragi.com/gcd_wp_ssl_support/

を参考に、Let’s Encryptを入れようと思いました。 SSL証明書も無料の時代、すごいなと思います。 ところが。やはり、ところが。 ConfigurationError: Requested name xxx.xxx.xxx.xxx is an IP address. The Let’s Encrypt certificate authority will not issue certificates for a bare IP address.


Monaca Onsen UI V2 Vueで外部JSON取得

フロント側画面デザイン作成 ↓ サーバ側WordPress構築 ↓ ということで、再度フロント側に戻り、WordPressのデータを参照します。 いやー、あきらめそうになりましたが、かろうじて持ちこたえました。 $http.getの使用 サンプルを探し始めてすぐに見つかったのが、こちら。 Monaca Onsen UI V2 Vue Navigation 上でサーバサイドから取得したjsonが画面に反映されない この中で使用されているthis.$http.getを使用したいのですが、そのままこの記述を使わせていただくと、 Cannot read property ‘get’ of undefined となります。このエラーメッセージも分かりにくいですが、ただ、比較的すぐに、this.$httpが参照できていないということが分かります。 では$httpは何なのかというと、これもvue-resoureぽいな、ということが分かり、Axiosにとって代わられそうだということも分かります。 が、これらをどう参照したらよいのかが分からず、苦労しました。 先に結論を書くと、monacaのターミナルで、npm install axiosを叩きます。 Vue.js 単一ファイルコンポーネント 結論にたどり着くまでに時間がかかった一つの理由が、多くのサンプルが、単一ファイルコンポーネントの構成を前提にしていないことです。 未だに理解しきっていませんが、単一ファイルコンポーネントの場合は、srcの中で.vueファイルに記述をしていき、Monacaの場合は、保存すると、Webpackが動いてwwwにファイルが作成される、ということのようです。 ですから、src側に外部ライブラリをセットしなければいけないのでは、と考え、しかし、Monacaで用意されている「JS/CSS コンポーネントの追加と削除」では反映されているように見えないし、と悩みました。 CDNで参照したらどうだろう、なども試しましたがダメでした。 (逆に、CDNで参照する方法は取れないの?という疑問は残ります・・・) また、Monacaのターミナル機能は最近の追加機能だと思いますが、それまではどうしていたの??という疑問も・・・ とりあえずは先に進めるようにはなりましたが、axoss.getでの参照はSSLでの接続が要求されているので、それをどうするか(接続先のWordPressはGCE上に構築しており、無償範囲での利用にトライしているため)、またアプリがMonacaでJSON取得先がGCEの場合に、クロスドメイン制約に引っかかるだろう、など乗り越えるべき壁はまだまだありそうです・・・ 浮気 もうダメだと思って、ちょっと浮気も考えました。クロスプラットフォーム開発の基盤として、まずUnity。 ゲーム以外にでも使えるだろうとは思うのですが、はてさて。。。 次に考えたのはXamarin。iOS用のビルドにMac端末が必要とのことで、もうしばらく様子見。 浮気せずにすんだのは、良かったのかな・・・   速習webpack 速習シリーズ posted with カエレバ 山田祥寛 WINGSプロジェクト 2018-04-27 関連記事 VSUG DAY 2013 Summer とりあえずxamarinチュートリアル中(初心者の超入門編)

GCE(Google Compute Engine)上のMariaDBに外部から接続

GCPのファイアウォール GCEにインストールしたMariaDBに、その中のWordPressから接続できていますが、ここにプラグイン用のテーブルを追加したり、データをいじったりしたい。 その際に、全てコマンドベースでやるのもつらいし、さらにphpMyAdminをインストールするのもはまりそうな匂いがプンプン。 ということで、ローカルのツールから接続することにします。 まずは、GCPのファイアウォールルール追加です。 場所は、VPCネットワークの中にあります。 設定するのは、上りで、tcp:3306を許可します。 しかし、これだけではつながりません。 リスナー追加 netstat -tlpn を叩くと、 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN – と表示されます。 これだと、ローカルからしか接続できないわけです。 これを変更するためには、bind-addressの記述をコメントアウトする、という情報が見つかります。 問題は、この記述がどこにあるかです。 結論としては、 /etc/mysql/mariadb.conf.d/50-server.cnf にありました。 これを修正して、sudo /etc/init.d/mysql restart すると、 tcp6 0 0 :::3306 :::* LISTEN – となってくれました。 しかし、実はこれでもつながりませんでした。 select user, host from mysql.user;すると +—————+———–+ | user | host | +—————+———–+ | hoge | localhost | | xxxxxxxxxxxxx | localhost |

GCE(Google Compute Engine)へのWordPressインストール(2)

今回でWordPressインストールまでたどり着こう。 参考は、こちら。 https://qiita.com/yuichiyuichi447/items/4bb3b9dbb69ee5a693cf GCEへのApacheインストール これは sudo apt install apache2 だけ。 ただ、この時点でちゃんと動作を確認すべき・・・ GCEへのPHP7インストール sudo apt install -y php php-mysql libapache2-mod-php ここでも、動作確認すべき。 GCEへのWordpressインストール さらに、こちらを参考。 https://qiita.com/seijikohara/items/f34753b2a783e03d7db4 /etc/apache2/apache2.conf へのWPインストール先追記は、あえて自分のHOME配下に変更。 そして、そのディレクトリを作成しておく。 curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar こちらでは、curlを使用。wgetとはあまり差はないのですかね。趣味の範囲? wp core download –locale=ja –path=/var/www/html/wordpress –allow-root を叩くときに、apache2.confで指定したパスに変更。 また、wp-config.phpの修正で、AUTH_KEY等はコピペが必要です。 この際、AWS Cloud9でviに張り付ける場合は、右クリックコピーではダメで、必ずCtrl-C Ctrl-Vです。 また、いつも忘れますが、viで複数行削除は、 削除範囲の開始行で「ms」 削除範囲の終了行で「me」 「:’s,’ed」と入力し、Enter です。 さて、これで動くと思いきや、そうは問屋が卸さないのがいつものこと。 まず、手順を二つ参照したために、そもそもWP用のDBを作る作業が抜けていました。 これは CREATE DATABASE xxx DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; GRANT ALL ON xxx.* TO ‘xxx’@’localhost’; だけしておけばOK。 しかし、wp option get homeを叩くと

GCE(Google Compute Engine)へのWordPressインストール(1)

さて、環境を定めたら、WordPressをインストールします。 Cloud Launcherではない GCP・WordPressで検索すると、コンソールのCloud Launcherからインストールする方法が多数ヒットすると思います。 確かに、メニューから選択して簡単にインストールできそうです。

この流れは魅力的。 しかし、これは、WordPress用にインスタンスを立ち上げるサービスになります。 そうすると、結局二つ目のインスタンスになってしまい、Always Freeから外れてしまいます。 今回やりたいのは、既存のGCEインスタンスにWPをインストールするということです。 (完全に言葉が間違っていたので追記) GCP(Google Cloud Platform)はGoogleのクラウドの状のサービス諸々ですね。 ですから、GCP・WordPressで検索すれば当然GCP上にWordPressのサービスを立ち上げる方法がヒットするでしょう。 GCE(Google Compute Engine)は、GCPのサービスの中の一つで、IaaS環境を提供してくれているというものです。今やろうとしているのは、そのGCE環境の中にWordPressをインストールする、ということなので、GCE・WordPressで検索すべきです。そうすると、もう少し違う情報も出てきます。 GCEへのMySQLインストール さて、WordPressをインストールするとなると、必要なのがMySQLです。 方法としては、外部に接続する方法も「あり」かとは思います。 元々さくらレンタルサーバに環境作ろうとしたくらいですので、さくらのDBに繋ぎに行ってもよいわけです。 しかし、ここは、怖いもの見たさで、GCE内にMySQLもインストールします。 そして、ここでも、GCPコンソールから「SQL」という魅力的なアイコンが見えます。 これをクリックすると、簡単にMySQLがインストールできそうです。

しかし、これも、データベース用のインスタンス立ち上げサービスです。 あくまでも、既存のインスタンス内にインストールしたいので、これは使用しません。 MariaDB そこで、一番参考になりそうなのがこちら。 https://qiita.com/mekabuko/items/d0ef4492f60e40f84f84 そして、MariaDBという名前が気になりつつ、MySQL入っていないかなと思って、mysqlを叩いてみました。 $ mysql The program ‘mysql’ can be found in the following packages: mysql-client-core-5.7 mariadb-client-core-10.0 Ask your administrator to install one of them 出た、mariadb。MariaDBって何? 基本情報はググれば分かるとして、最近は利用が伸びていて、PL/SQLに対応し始めた、というのが趣深いですね。 ということで、Mariaをインストールすることにします。 上記では、yumでインストールしていますが、こちらの環境はUbuntuなので、sudo apt-get install mariadb-server。 インストール成功しましたが、こちらと同じ状態になっています。 https://jyn.jp/ubuntu-16-04-mariadb-password-bug/ 書いていただいている対応により、接続できるようになりました。  いったん休憩にします。