VAW(Vagrant Ansible WordPress) のMySQLデータベースにHeidiSQLで接続する

Vagrant を使った WordPress の開発環境を vccw から vaw に変更しました

VAW(Vagrant Ansible WordPress)の特徴は、Apache や Nginx サーバー、MySQL や Mariadb, percona データベース、 php バージョンの切り替えなどが簡単に出来るのでいろいろな環境を試してみたいという場合にお勧めです

vaw は、検索してもあまり情報が見つかりませんが、vccw を使っていた方なら同じような感覚で使用できます。私が試した範囲では、XAMPP や vccw と較べてもレスポンスが良いので、この点だけでも使う価値があると思いますので、一度試して見ることをお勧めします (^^)

Vagrantって何? と言う方は先ずはこの記事をお読み下さい

Vagrant 仮想マシン入門 Getting Started をやってみる
Vagrant 入門として Getting Started をやってみました。使用環境の構築と基本的な使い方を紹介していますので、これから使ってみようという方の参考にどうぞ (^^)
Vagrant 仮想マシン入門 Getting Started をやってみる

VAW

インストール

GitHub thingsym/vaw に公開されているプロジェクトの readme-ja.md ファイルを見れば詳しく手順が書いてあります

適当なフォルダを作成(今回は c:\HashCorp\Project)して、ダウンロードした vaw-master.zip を解凍します。vaw-master フォルダー下に解凍されるので、フォルダー名を適当な名前(今回は vaw)に修正しておきます

Windowsユーザー用のエラー対策

Windows ユーザーの場合、そのまま vagrant up しても VAW起動途中でエラーとなってしまう(Version 0.3.1 現在)と思いますので、一部ファイルを修正します

修正ファイル c:\HashCorp\Project\vaw\roles\wordpress\tasks\install.yml

UTF-8 対応エディターでこのファイルを開いて、70-81 行目の部分を修正します

- name: set WP_DEBUG in wp-config.php
  replace: dest={{ WP_PATH }}/wp-config.php regexp='\n/\* That' replace="define( 'WP_DEBUG', {{ WP_DEBUG }} );\n\n/* That"
- name: set SAVEQUERIES in wp-config.php
  replace: dest={{ WP_PATH }}/wp-config.php regexp='\n/\* That' replace="define( 'SAVEQUERIES', {{ SAVEQUERIES }} );\n\n/* That"

- name: set SSL in wp-config.php
  replace: dest={{ WP_PATH }}/wp-config.php regexp='\n/\* That' replace="#define( 'FORCE_SSL_LOGIN', true );\ndefine( 'FORCE_SSL_ADMIN', true );\n\n/* That"
  when: ssl_admin == true

- name: set using a Reverse Proxy in wp-config.php
  replace: dest={{ WP_PATH }}/wp-config.php regexp='\n/\* That' replace="if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')\n       $_SERVER['HTTPS']='on';\n\n/* That"
  when: server_tuning == true and ssl_admin == true

これを以下のように修正します

- name: Move wp-config.php file
  command: "mv {{ WP_PATH }}/wp-config.php /tmp/wp-config.php"

- name: set WP_DEBUG in wp-config.php
  replace: dest=/tmp/wp-config.php regexp='\n/\* That' replace="define( 'WP_DEBUG', {{ WP_DEBUG }} );\n\n/* That"
  
- name: set SAVEQUERIES in wp-config.php
  replace: dest=/tmp/wp-config.php regexp='\n/\* That' replace="define( 'SAVEQUERIES', {{ SAVEQUERIES }} );\n\n/* That"

- name: set SSL in wp-config.php
  replace: dest=/tmp/wp-config.php regexp='\n/\* That' replace="#define( 'FORCE_SSL_LOGIN', true );\ndefine( 'FORCE_SSL_ADMIN', true );\n\n/* That"
  when: ssl_admin == true

- name: set using a Reverse Proxy in wp-config.php
  replace: dest=/tmp/wp-config.php regexp='\n/\* That' replace="if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')\n       $_SERVER['HTTPS']='on';\n\n/* That"
  when: server_tuning == true and ssl_admin == true

- name: Return wp-config.php file
  command: "mv /tmp/wp-config.php {{ WP_PATH }}/wp-config.php"

修正内容は、Vagrantの同期フォルダー中のファイルの書き換え等を行うと、Windows特有の問題(Linux 側と windows 側のファイルシステムの違いに起因するらしい)により、[Errno 26] Text file busy というエラーで処理が中断してしまうことへの対策です。

同期フォルダーにあるファイル書き換えを行わなければエラーを回避出来るようなので、書き換えたいファイル wp-config.php を /tmp に移して書き換えてから同期フォルダーへ戻しています

※一応、開発者の方にも報告してあるので、もしかしたら今後のバージョンで対応していただけるかも知れませんが、それまではローカルに修正して対応します

修正が終わったら vagrant up して VAW を起動させて下さい

 

ここからが本題で、VAWを WordPress の開発環境として使用するには、各自のお気に入りのツールが使えるかという問題があります

今回は、私のお気に入りのツール HeidiSQL をVAWで使用できるようにしたいと思います

VAWのMySQLデータベースに HeidiSQLで接続する

HeidiSQL のSSHトンネル(ポートフォワード)を使って、VAW の MySQL へ接続する方法を紹介します

Windowsを使っている人限定となりますが、HeidiSQL から MySQLデータベースの操作ができるようになるので、データベース処理の確認やデバッグが格段に便利になります

以前 vccw の MySQL へ HeidiSQL で接続したのとほとんど同じですが、一部接続情報の設定が異なるのでそこだけ注意です

Vagrant vccw のMySQLデータベースにHeidiSQLで接続する
HeidiSQLで Vagrant vccw のMySQLデータベースにSSHポートフォワード接続する手順を紹介します。 これでデータベース処理の確認やデバッグが格段に便利になります (^^)
Vagrant vccw のMySQLデータベースにHeidiSQLで接続する

plink

HeidiSQL でSSHポートフォワードを使うには plink.exe というプログラムが必要となります

plink.exe と言うのは、puTTY というオープンソースのターミナルエミュレータに含まれているコマンドラインプログラムでSSHポートフォワード接続機能をサポートしてるようです

puTTY

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

日本語版も有志の方によって配布されているようです

http://hp.vector.co.jp/authors/VA024651/PuTTYkj.html

今回は、この日本語版のZipファイルをダウンロードして任意のフォルダーに解凍して使用します

 

HeidiSQL

SSHトンネル(ポートフォワード)とは、ローカルの特定ポートへの送信をリモートサーバーの特定ポートへ転送できるというルーターのようなポート変換機能です

HeidiSQLで、この機能を使ってデータベースへ接続すると、まるでローカル環境のデータベースを操作しているような感覚で仮想マシンのデータベースを操作することが出来るようになります

※接続の方法は、デフォルトの設定のまま使用していることを前提に紹介します

接続情報

VAW の MySQL データベースへのデフォルトの接続情報

// ** MySQL settings ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'admin');

/** MySQL database password */
define('DB_PASSWORD', 'admin');

/** MySQL hostname */
define('DB_HOST', 'localhost');

この情報を使って wordpress データベースへ接続してみます

HeidiSQLに接続用セッション作成

HeidiSQLを起動してセッションを追加します

VAW-HeidiSQL-セッション

名前は vaw MySQL にしておきます

 

データベース情報設定

ネットワーク種別を MySQL (SSH tunnel) に設定して、MySQLデータベース接続情報のホスト名、ユーザー名、パスワードを設定します

VAW-HeidiSQL-設定

ホスト名/IP 127.0.0.1
ユーザー名 admin
パスワード admin
ポート 3306
SSHトンネル設定

plink.exe プログラムのパス情報とSSHの接続情報を設定します

vccw の場合は、ユーザー名 vagrant  パスワード vagrant で接続できたのですが、VAWではパスワードで接続出来なかったので秘密鍵ファイルの設定を行いました

vagrant ssh-config を実行してキーファイルを確認します

VAW-ssh-config

BOXファイルのところに vagrant_private_key ファイルがあるのが確認出来ました

これを puttygen プログラムで ppk ファイル形式にします

puttygen

Load ボタンをクリックして、先ほどの IdentityFile の vagrant_private_key ファイルを選択します

うまくいけばこんな表示となります

puttygen-dialog

Save Private key ボタンをクリックして、元の vagrant_private_key ファイルと同じフォルダーに private_key.ppk ファイルとして保存します

この private_key.ppk ファイルを秘密鍵ファイルとして設定します

VAW-HeidiSQL-SSHトンネル

SSHホスト 127.0.0.1
SSHポート 2222
ユーザー名 vagrant
秘密鍵ファイル private_key.ppk
ローカルポート 3307

 

接続

設定が済んだら、開くをクリックして接続します

VAW-HeidiSQL

 

これで、HeidiSQLを使って VAWの MySQL データベースへ簡単にアクセスすることが出来るようになりました (^^)

 

注意

HeidiSQL を使うと簡単に様々な処理を行うことが出来てしまうので間違えてデータを削除してしまう等、 WordPress に重大な影響を与える可能性があります

SQL って何? と言う方は少し勉強してから扱うことをお勧めします

私も得意と言うわけではありませんが、HeidiSQL がないとデータベースを触ろうと言う気も起きないぐらいのお気に入りです

 

関連する記事もいくつか書いていますので、参考にどうぞ

ちなみにエックスサーバーのMySQLへ HeidiSQL から接続する方法も紹介していますので興味ある方は合わせて参照して下さい

HeidiSQLでエックスサーバーのMySQLにSSHポートフォワード接続
HeidiSQLでエックスサーバーのMySQLデータベースにSSHポートフォワード接続する手順を紹介します。 これで phpMyAdmin を使わなくてすむかも知れません (^^)
HeidiSQLでエックスサーバーのMySQLにSSHポートフォワード接続

 

 


まとめ記事紹介

go-to-top