VAW(Vagrant Ansible WordPress) で NetBeans を使いリモートデバッグ!

Vagrant を使った WordPress の開発環境を vccw から VAW(Vagrant Ansible WordPress)に変更したので、VAWで NetBeans を使ってリモートデバッグする為の環境を構築してみたいと思います

VAWは、仮想マシンに WordPress の 開発/テスト環境を構築する Ansible playbook です。Apache や Nginx サーバー、MySQL や Mariadb, percona データベース、 php バージョンの切り替え等を簡単に行えるので、いろいろな環境を試してみたいという場合にお勧めのです

内容は、vccw で Netbeans からリモートデバッグした時とほとんど同じですが、一部接続情報の設定が異なるのでそこだけ注意です

Vagrant vccw で NetBeans からリモートデバッグをやってみる
Vagrant vccw で WordPressのプラグインやテーマを NetBeans を使ってリモートデバッグする方法を紹介します (^^)

VAW

VirtulBox, Vagrant 等は既にインストールされているものとして説明していきます

インストール

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

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

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

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

修正内容は、前回の記事で紹介してますので参照して下さい

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

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

NetBeans

インストール

NetBeans のインストールは、ちょっと古い記事ですが、PHPの開発環境を構築する記事を以前書いていますので、これを参考に行って下さい

この記事は、NetBeans 7.3 を使った手順を紹介していますが、手順に変わりはありませんので最新版を使って構築するのがお勧めです。

NetBeans 7.3でPHP開発環境を構築
PHPの開発ツールとして、NetBeans 7.3 をインストールしてみました。第一印象はかなり良い感じです。&

この記事は、XAMPP環境でのxdebugを紹介していますが、PHPプロジェクトごとに xampp 環境や VAW 環境を使い分けることが出来ますので、両方の環境を構築しておいて使い分けるのがお勧めです

とりあえずここでは最新版の NetBeans がインストール出来ていればOKです

xdebug

VAW 側の設定

VAWでは、PHP や xdebug は、既にインストール済みなので xdebug.ini ファイルに設定を記述するだけで xdebug が使えるようになります

リモートデバッグを行うには、通常は、リモート側(仮想マシン)とホスト側(今回は Windows)でデバッグするプログラムソースコードを同期させる必要があります。

通常は、FTPを使ったり、Git 等のバージョン管理システム等を使ってコードを同期させますが、VAW では、Vagrantの同期フォルダーにより仮想マシンのドキュメントルートと同期フォルダーの vaw/wordpress が同期しているので、リモート側とホスト側のソースコードは自動的に同期します

従って、ホスト側のソースコードをエディタやIDEで修正するとリモート側のソースコードも自動的に更新されているということになり、今までXAMPP等でデバッグしていたのと同じような感覚で作業を行うことが可能です

それでは vaw/wordpress に  phpinfo.php ファイルを作りPHP情報を確認してみます

<?php
	phpinfo();
?>

phpinfo() 関数を呼び出しているだけのプログラムです

ブラウザで vaw.local/phpinfo.php へアクセスするとPHP情報が表示されます

VAW-phpinfo

インストールされている PHP が Ver5.6.12 で設定ファイルが /home/vagrant/.phpenv/versions/5.6.12/etc/php.ini と追加設定ファイルが /home/vagrant/.phpenv/versions/5.6.12/etc/conf.d 以下にあることが分かります

※VAWは phpenv でPHPのバージョン切り替えに対応しているので、デフォルトバージョンは 5.6.12 ですが、異なるバージョンを指定して構築した場合はそのバージョン番号以下の設定ファイルが対象となります

但し xdebug の設定ファイル /home/vagrant/.phpenv/versions/5.6.12/etc/conf.d/xdebug.ini には、リモートデバッグ用設定がまだ記述されていませんのでに書き加える必要があります

vagrant ssh で vaw にアクセスして下記コマンドで vi エディタを使って編集します

$ sudo vi /home/vagrant/.phpenv/versions/5.6.12/etc/conf.d/xdebug.ini

zend_extension="/home/vagrant/.phpenv/versions/5.6.12/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"
html_errors=on

; see http://xdebug.org/docs/all_settings
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host="192.168.46.1"
xdebug.remote_port=9000
;xdebug.profiler_enable=1
;xdebug.profiler_output_dir="/tmp"
;xdebug.profiler_output_name="vaw.%t-%s"
;xdebug.max_nesting_level=1000
xdebug.idekey="netbeans-xdebug"
xdebug.remote_handler=dbgp

vi エディタを使用したことがない方は、ちょっと戸惑うかもしれませんが、ここだけなので使い方を調べながら頑張って編集してみてください

自分も普段は使っていないので苦手です(^_^;)

この設定は、vawをデフォルトのまま使っている場合の例ですので、変更されている方はご自身の設定に合わせて記述して下さい

ちなみに remoto_host で指定しているIPアドレス 192.168.46.1 は、PHP情報の Apache Enviroment の REMOTE_ADDR を見れば確認することが出来ます

また、remote_port の 9000 と idekey の netbeans-xdebug は、Netbeans でのデバッグ用のデフォルト設定値です。変更する場合は、Netbeans 側も合わせて変更する必要があるので注意して下さい

設定が済んだらWebサーバーを再起動させます

$ sudo service httpd restart

これで仮想マシン側の準備は完了です

NetBeans 側の設定

メニューからツール→オプションを選択して、デバッグタブをクリックします

Netbeans-デバッグ設定

リモート側の xdebug.ini の設定とあっていることを確認します

  • デバッガポート : 9000
  • セッションID  : netbeans-xdebug

プロジェクト作成

vaw 内の wordpress コードをプロジェクトとして登録します

NetBeans を起動して、メニューのファイル→新規プロジェクトから 既存のソースを使用するPHPアプリケーション を選択します

Netbeans-プロジェクト作成1

次にプロジェクトのソースフォルダを指定します

Netbeans-VAWプロジェクト作成2

ソースフォルダ横の参照ボタンをクリックして vaw の同期フォルダー内の wordpress フォルダーをプロジェクトフォルダーとして選択します

Netbeans-VAWプロジェクト作成3

プロジェクト名に判りやすい名前を付けます。私の場合は既に xampp 環境の wordpress という名称のプロジェクトが登録済みでしたので、ここは vaw-wordpress という名称にしておきました

次に実行構成を設定します

Netbeans-VAWプロジェクト作成4

実行方法 リモートWebサイト
プロジェクトURL http://vaw.local/
ファイルアップロード 手動

※プログラムコードは、Vagrantの同期フォルダーで自動的に同期されるようになっているのでファイルのアップロードは手動にしておきます

リモート接続の管理ボタンをクリックします

Netbeans-VAWリモート接続

ここはリモート側とのソースコードを FTP/SFTP で同期させる為の設定です。

ホスト名 vaw.local
ポート 22
ユーザー名 vagrant
秘密鍵ファイル private_key.ppk
初期ディレクトリ /var/www/html

秘密鍵ファイル

VAWのキーファイルは、BOXイメージのフォルダーにあるので、それを ppkファイル形式に変換して使用します

秘密鍵ファイルに関しては、前回の記事でも説明してます。既に作成した ppkファイルがあればそれを指定すればOKです。

ない場合は以下の手順で作成して下さい

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 ファイルを秘密鍵ファイルとして設定します

 

以上の設定が出来たら、接続をテスト をクリックして接続できればOKです

これで、Netbeans に vaw-wordpress プロジェクトとして、wordpress フォルダー下のファイルが全て登録されます

登録された vaw-wordpress プロジェクトを右クリックしてプロパティーを表示させると、今設定したプロジェクトの各種設定を変更することが出来ます

また、ブラウザカテゴリからデバッグ時に使用するブラウザを選択出来ますので、Chrome ブラウザを選択しました

 

デバッグ実行

Netbeansでwordpress の wp-settings.php ファイルを開き適当な位置にブレークポイントを設定してみます

プロジェクトをデバッグ ボタン(ctrl F5)をクリックするとデバッグ開始です

設定したブレイクポイントで停止したでしょうか (^^)

Netbeans-VAW-xdebug

ステップ実行や変数、呼び出しスタックの確認等も簡単に行うことができます

デバッガの詳しい使い方は、NetBeans IDEでのPHPソース・コードのデバッグ に紹介されているので参照してみて下さい

同期フォルダーの vaw/wordpress/wp-content 下の plugins や themes フォルダーにプラグインやテーマを作成すれば簡単にデバッガを使った開発が出来るようになります

デバッガを使うことで、自分の作成したプログラムだけでなく WordPress のコアのコードを調べてその動作を追うことも簡単に出来ます

コアのコードを追うことで、コーディングのヒントやアイデアを得る場合も多々あります

うまくいかない場合

リモート側に接続出来た場合は、Netbeans のセッションを確認するとこんな感じの表示になっていると思います

Netbeans-デバッグ時セッション

netbeans-xdebug しか表示されなくて、いつまでも接続が出来ない場合には、リモートアドレス、ポード番号、セッションID等が合っているか確認して下さい

また、ファイヤーウオール等でブロックされていないかも確認して下さい

デバッグ終了時の注意

デバッガセッションを終了 ボタン(Shift F5)を押さずにデバッグ中のブラウザのタブを閉じた時に起きたと思うのですが(毎回と言うわけではない)、Netbeansがポート9000をクローズ出来ずにポートが使われたままの状態となることがあります

こうなるともう一度デバッグを行おうとしても、既にポート9000が使われているのでデバッグできなくなります(netstat コマンドでポートがクローズされていないことが確認出来ます)

いろいろ調べたのですが、強制的にポートを解放する方法はわかりませんでしたので、こうなってしまった場合は NetBeans を再起動して下さい。ポートが解放されて、再度デバッグが可能となります。

※再起動は時間もかかり精神的にもよろしくないので、デバッガセッションを終了ボタンできちんと終了させれるよう注意して下さい

まとめ

Vagrant vaw 仮想マシンのドキュメントルートとホスト側の vaw/wordpress フォルダーの同期フォルダー機能のおかげで、仮想マシンのことをそれほど意識せずにXAMPP等でデバッグしていたのと同じような感覚で作業ができます

Git等のバージョン管理も Windows側の同期フォルダー下のプラグインやテーマファイル単位で今までと同じように出来るのでとてもやりやすいです

ちなみに NetBeans での Gitの使い方に興味がある方は下記を参照して下さい

Git入門(NetBeans からの使い方)
NetBeans での Git バージョン管理の使い方を紹介します。使いにくい部分もあるので SourceTree と併用して使用するのがお勧めです

以上

VAWで Netbeans からリモートデバッグする為の手順を紹介いたしました

 

 


まとめ記事紹介

search star user home refresh tag chevron-left chevron-right exclamation-triangle calendar comment folder thumb-tack navicon angle-double-up angle-double-down angle-up angle-down quote-left googleplus facebook instagram twitter rss