Vagrant を使った WordPress の開発環境を vccw から vaw に変更しました
VAW(Vagrant Ansible WordPress)の特徴は、Apache や Nginx サーバー、MySQL や Mariadb, percona データベース、 php バージョンの切り替えなどが簡単に出来るのでいろいろな環境を試してみたいという場合にお勧めです
vaw は、検索してもあまり情報が見つかりませんが、vccw を使っていた方なら同じような感覚で使用できます。私が試した範囲では、XAMPP や vccw と較べてもレスポンスが良いので、この点だけでも使う価値があると思いますので、一度試して見ることをお勧めします (^^)
Vagrantって何? と言う方は先ずはこの記事をお読み下さい
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で接続する
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 MySQL にしておきます
データベース情報設定
ネットワーク種別を MySQL (SSH tunnel) に設定して、MySQLデータベース接続情報のホスト名、ユーザー名、パスワードを設定します
ホスト名/IP | 127.0.0.1 |
ユーザー名 | admin |
パスワード | admin |
ポート | 3306 |
SSHトンネル設定
plink.exe プログラムのパス情報とSSHの接続情報を設定します
vccw の場合は、ユーザー名 vagrant パスワード vagrant で接続できたのですが、VAWではパスワードで接続出来なかったので秘密鍵ファイルの設定を行いました
vagrant ssh-config を実行してキーファイルを確認します
BOXファイルのところに vagrant_private_key ファイルがあるのが確認出来ました
これを puttygen プログラムで ppk ファイル形式にします
Load ボタンをクリックして、先ほどの IdentityFile の vagrant_private_key ファイルを選択します
うまくいけばこんな表示となります
Save Private key ボタンをクリックして、元の vagrant_private_key ファイルと同じフォルダーに private_key.ppk ファイルとして保存します
この private_key.ppk ファイルを秘密鍵ファイルとして設定します
SSHホスト | 127.0.0.1 |
SSHポート | 2222 |
ユーザー名 | vagrant |
秘密鍵ファイル | private_key.ppk |
ローカルポート | 3307 |
接続
設定が済んだら、開くをクリックして接続します
これで、HeidiSQLを使って VAWの MySQL データベースへ簡単にアクセスすることが出来るようになりました (^^)
注意
HeidiSQL を使うと簡単に様々な処理を行うことが出来てしまうので間違えてデータを削除してしまう等、 WordPress に重大な影響を与える可能性があります
SQL って何? と言う方は少し勉強してから扱うことをお勧めします
私も得意と言うわけではありませんが、HeidiSQL がないとデータベースを触ろうと言う気も起きないぐらいのお気に入りです
関連する記事もいくつか書いていますので、参考にどうぞ
- HeidiSQLでMySQLデータベースへ接続してみる
- WordPressに新規テーブル作成 – HeidiSQLでデータベースらくらく開発
- MySQLテーブル結合 – HeidiSQLでデータベースらくらく開発
- MySQLインデックス設定方法 – HeidiSQLでデータベースらくらく開発
- MySQLテーブルデータのエクスポート/インポート
- HeidiSQLでエックスサーバーのMySQLにSSHポートフォワード接続
ちなみにエックスサーバーのMySQLへ HeidiSQL から接続する方法も紹介していますので興味ある方は合わせて参照して下さい
HeidiSQLでエックスサーバーのMySQLにSSHポートフォワード接続