Azure仮想マシン(KUSANAGI for Microsoft Azure)内のMySQL接続に苦戦していますが、
KUSANAGIはPHP、MySQLベースのソフトウェアであれば、スクラッチでもフレームワークでもWordPress以外のCMSでも高速に動作させることが可能です。
・超高速WordPress仮想マシン「KUSANAGI」に学ぶ、PHP+MySQLアプリチューニングの秘訣 (1/4):CodeZine(コードジン)
となっているので、MySQLに絞って調べていますがなかなか解決できません。
「KUSANAGI」の構成
そもそも「KUSANAGI」で仮想マシンを作成した場合、デフォルトでは
仮想マシン構成
- WordPress 最新版(KUSANAGI 専用プラグイン同梱)
- CentOS 7
- Nginx 1.11
- Apache 2.4
- HHVM 3.15
- PHP 7.0(php-fpm, Cli)
- PHP 5.6(php-fpm, Cli)
- MariaDB Galera Server 10.0
※PHP7.0の利用は、WordPress4.4以上、および対応プラグインが必須です。
となるようです。
HipHop Virtual Machine(ヒップホップ・バーチャル・マシン、HHVM)
実行時コンパイラ(JIT)方式でPHP: Hypertext Preprocessor(PHP)およびHackといったプログラミング言語を実行する、仮想機械型の処理系である。
HHVMで実行する場合、PHPやHackのコードは、JITコンパイルの過程でまず中間言語のHipHopバイトコード (HHBC) に変換され、さらに動的にx64の機械語へとコンパイル・最適化を行った上で実行される。
これに対し、公式のPHP実装であるZend Engineでは、PHPのコードを中間表現に変換した上で、中間表現をそのまま実行している。
HHVMはFacebook社が開発しており、Github上にあるソースコードはPHP LicenseとZend License(英語版)のもと公開されている。
CentOS7を使っているということは、「KUSANAGI for Microsoft Azure」の仮想マシンイメージを使ってAzureで作成された仮想マシンは、Linux系の仮想マシンということが言えると思います。
ということで、MySQL を Linux VM にセットアップする | Microsoft Docs でLinux を実行している Azure 仮想マシンに MySQL をインストールして構成する方法が説明されていたので見てみることに。
MySQL起動はしている
MySQL を Linux VM にセットアップする | Microsoft Docs によると、
仮想マシンに MySQL をインストールする
メモ
このチュートリアルを実行するには、Linux を実行する Microsoft Azure Virtual Machine が既に存在している必要があります。 続行する前に、 を見て、VM 名を mysqlnode
、ユーザー名を azureuser
として、Linux VM を作成およびセットアップしてください。
この例では、MySQL ポートとしてポート 3306 を使用します。
となっていて、仮想マシンはKUSANAGIで作成済みなので、Tera Termで仮想マシンに接続し、MySQLの状態を確認してみました。
MySQL サーバーのサービスの状態を確認する
service mysqld status
MySQL Server の既定のポートが実行されているかどうかを確認する
netstat –tunlp|grep 3306
結果としては、MySQLは問題なくインストールもされているし、MySQL ポートとしてポート 3306を使っているようです。
MySQLサーバーも存在し、起動もしているとなれば、あとはもう接続するだけですが、接続の仕方が分からんですたい、ということでもう少し調べてみました。
MySQLはデフォルトでは外部ホストからの接続を許可しない
どうやら、MySQLは外部ホストからの接続を許可しないようになっているらしく、いままでローカル(Windows10のXAMPPのMySQLで作業することが多く)でほとんど済ませてきたので気づかなかったのですが、 今回は、Azureの仮想マシン内のMySQLに、ローカルからアクセスするわけです。
同一ホスト内アクセスの例
外部ホストへのアクセスの例
・MySQLに外部ホストから接続できるように設定する | WEBサービス創造記
ということで、Tera Termで仮想マシンにログインし、MySQLにアクセス。
アクセス先(MySQL)の情報は、デフォルトだとDocumentRootのwp-config.phpに記載されています。
※セキュリティのためにwp-config.phpの場所は変更したほうが良いようです。
・はじめてのKUSANAGI | KUSANAGI MAGAZINE
ユーザー名でアクセスできない場合は、ユーザー名rootで行ってみましょう。
mysql -u root -p
・MySQLのユーザー作成でハマったこと解決策メモ。 - 感謝のプログラミング 10000時間
で、見てみると、hostが『localhost』はAzureで作成した仮想マシン(KUSANAGI for Microsoft Azure)のこととして、『127.〇〇〇.〇〇.〇 』の部分は自分のパソコンIPアドレスなので、自分のパソコンから仮想マシンのMySQLにアクセスできるということみたいですね。
そうじゃないんです、自分のパソコンのブラウザからphpmyadminでAzureの仮想マシン(KUSANAGI for Microsoft Azure)のMySQLにアクセスしたいんです!
KUSANGIにphpMyAdminは入っていない!?
そもそも、KUSANAGI for Microsoft AzureにはphpMyAdminが入っていないみたいです。(phpMyAdminはMySQLにはセットでついてるもんだと思い込んでいたので、これは衝撃でした。考えてみればphpMyAdminはGUIツールでMySQLを操作するためのものなので、コマンドでがりがりSQL操作ができる人には必要ないということですね、自分はphpMyAdmin欲しいですがセキュリティ的に難ありみたいです。)
phpMyAdminですが、脆弱性を利用したハッキングが目立つため、特別理由がない限り最新バージョンをインストールするか、使わないのであればアンインストールするのが良いようです。
MySQLのバージョンとの対応は下記サイトへ
・KUSANAGI(超高速WordPress仮想マシン)にphpMyAdminを導入する方法 | ryo.nagoya
mysql --version
php -v
たぶん、最新のphpMyAdminが使えそうということで、まずは、DocumentRootまで移動します。
cd /home/kusanagi/kusanagi_html/DocumentRoot
wgetコマンドでphpMyAdminのファイルをダウンロードします。
続いて、unzipコマンドで展開(解凍)します。
unzip phpMyAdmin-4.6.5.2-all-languages.zip
実行すると、「phpMyAdmin-4.6.5.2-all-languages」というファイル名のディレクトリが展開されました。
mvコマンドでフォルダ名を変更します。
mv phpMyAdmin-4.6.5.2-all-languages phpMyAdmin
フォルダ名が『phpMyAdmin』になりました。
ブラウザから、『仮想マシンのDNS名/phpMyAdmin/』 にアクセスするとお馴染みのログイン画面に。
phpMyAdminにアクセス制限
ログインしようとしたところ、『502 Bad Gateway』というエラーが!下記サイトさんが原因について説明してくれてます。
・502Bad Getewayの原因と意味について | ぷろめし|プログラミングよりも飯が好き
『Gatewayまたは、プロキシに問題が発生している』ということらしく、KUSANAGIはNginxで動いているので(初期)、Nginxの設定ファイルを変えることで対応できるようです。
VimエディターでNginxの設定ファイルを編集します。
vi /etc/nginx/conf.d/kusanagi_html_http.conf
「i」を押して、insartになったら編集できるモードになります。24行目ぐらいに
location /phpMyAdmin { allow 0.0.0.0/0; allow 自分のIP; deny all; }
を追加します。『自分のIP』はパソコンのIPアドレスでOKです。
ファイルの編集が済んだら「ESC」、「:wq」を入力して上書き保存します。
Nginxを再起動します。 KUSANAGIはCentOS7なので、
systemctl restart nginx
コマンドを実行します。
無事アクセスできました。
外部からアクセスできないか確認
aguse Gatewayから『仮想マシンのDNS名/phpMyAdmin』にアクセスしてみて『403エラー』になればOKのようです。自分の場合は時間切れになったのですが。
なんとか、phpMyAdminでアクセスできるようになりました。
ただ、脆弱性の問題が・・・、これは職場の先輩に教えていただいたMySQL Workbenchに移行していくのが良いのかもしれないと思う今日この頃です。
・phpMyAdmin 脆弱性 多数報告 : クロビス ブログ
・JVNDB-2016-003434 - JVN iPedia - 脆弱性対策情報データベース
今回はこのへんで。