#はじめに
この辺の準備が整ってきたので、いよいよリモートから開発できる環境を整えていきます。
#環境
ローカル側
Windows10 Pro x64
Core i5-6300U 2.40GHz
メモリ16.0GB
Vagrant 1.9.3
VirtualBox 5.1.18 r114002
VM側
CentOS Linux release 7.3.1611 64bit
httpd(Apache)
PHP 5.6.30
Xdebug 2.5.3
#設定手順
##Virtual Machineを立ち上げる
###起動する
設定手順・起動方法などについてはこちらを参照のこと。
##CentOS側の設定
以下の手順に沿って設定を行っていく。
- httpdサービスの起動とfirewalldサービスの停止を行う
- シンボリックリンクの設定を行う
- サービスのインストールをする
- 設定ファイルの書き換えを行う
なお、ID/PASS:vagrant - vagrantでログイン時に以下のコマンドを投入しておくとラク。
$ sudo su - # ルートユーザーに切り替える
###httpdサービスの起動とfirewalldサービスの停止を行う
コマンドライン上から下記コマンドを投入する。
$ systemctl stop firewalld # ファイアーウォールを止める
$ systemctl start httpd # Apacheを起動する
# 念のため現在の状態を確認する
$ systemctl status firewalld
$ systemctl status httpd
# 次回以降、起動時に自動で設定するためのコマンド
$ systemctl enable httpd.service
$ systemctl disable firewalld.sercive
# そんなサービスねーよって言われたときの対応
$ yum -y install httpd
念のため、ローカル環境からVagrantfileに設定したIPを叩いて、サービスが起動していることを確認する。
###シンボリックリンクの設定を行う
シンボリックリンクとは?
シンボリックリンクとは、OSのファイルシステムの機能の一つで、特定のファイルやディレクトリを指し示す別のファイルを作成し、それを通じて本体を参照できるようにする仕組み。リンクは本体と同じディレクトリに置いても良いが、通常は別の場所から参照できるようにするために作成される。UNIX系OSでよく用いられるもので、Windowsでも利用することができる。
ということで、本来はショートカット的な意味合いを持つものらしい。
やりたいことはローカルのディレクトリをVM側のドキュメントルートに設定すると言うものだが、シンボリックリンクを利用することで一発らしい。ステキ。
なお、ドキュメントルートはVagrantfileがあるディレクトリ直下(以下、便宜上ローカルドキュメントルートと呼称)となる。
$ rm -rf /var/www/html # 現在のドキュメントルートを削除
$ ln -fs /vagrant /var/www/html # ローカルディレクトリをドキュメントルートとしてリンク
こちらもテスト的なことを行う。
ローカルディレクトリにinfo.htmlを作成し、表示されることを確認する。
###サービスのインストールをする
必要なサービスをインストールしていく。
今回新たにインストールするサービスは、PHPとXdebug。
PHPにはZend Engineなるものが利用されているようです。時間があるときに調べようと思います。
#リポジトリのインストール
$ yum install -y epel-release
$ yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# php-mycryptインストール
$ yum --enablerepo=epel install -y libmcrypt
# PHP+Xdebugインストール
$ yum --enablerepo=remi,remi-php56 install -y php php-mysqlnd php-opcache php-mbstring php-gd php-mcrypt php-xml php-pear php-devel php-xmlrpc php-pecl-apcu php-pecl-xdebug
# remi-php56の部分を書き換えれば別バージョンのPHPも入れられると思う。
# 例によってインストール確認
$ php -v
うまくいっていればwith Xdebug v2.5.3の文字が目に入ることと思う。
###設定ファイルの書き換えを行う
インストール直後は設定ファイルがアレなので、修正していきます。
主に修正するのは次の2つ。
- php.ini
- 15-xdebug.ini
他の文献ではxdebug.iniとしか記述されていませんでしたが、こちらの環境では15-xdebug.iniとして作成されていました。これを書き換えたところ、正常に動作。
####/etc/php.ini
zend_extension="/lib64/php/modules/xdebug.so"
;xdebug.soファイルのフルパス
xdebug.remote_enable=On
xdebug.remote_connect_back=On
xdebug.remote_autostart=On
xdebug.remote_host=192.168.33.10
;Vagrantfilesに記述したIPアドレス
xdebug.remote_port=9000
xdebug.max_nesting_level=1000
xdebug.idekey="SAMPLE"
xdebug.soの場所が分からずに詰みかけました。微妙に文献と違うんだよなぁ...。
####/etc/php.d/15-xdebug.ini
;extension=xdebug.so
;これをコメントアウトして
zend_extension=/usr/lib64/php/modules/xdebug.so
;xdebug.soファイルへのフルパスに書き換える
xdebug.default_enable = 1
xdebug.remote_enable = on
$ systemctl restart httpd # 念のためApacheを再起動
またまた念のためローカルドキュメントルートにphpファイルを追加し、phpinfoを出力させる。
<?php
phpinfo();
この辺からXdebugが有効化してることを確認する。
##NetBeans側の設定
いよいよNetBeansからリモートデバッグできるように設定をしていく。
###プロジェクトの初期設定を行う
ファイル → 新規プロジェクトを選択し、プロジェクト作成ダイアログを開く。
ソース・フォルダ横の参照ボタンをクリックし、ローカルドキュメントルートの場所を指定する。
実行方法は変更せず、プロジェクトURLをVMのIPアドレスに設定する。
終了をクリックする。
###実行してみる
テキトーなところにブレークポイント打ってデバッグボタン横プルダウンからプロジェクトをデバッグを選択。
デバッグURLを聞かれるので、間違いなければOKをクリック。
#所感
一度通ればなんてことはないのだけど...設定を通すまでがね...。
今後はmySQLやらphpMyAdminやらを整えた上でいよいよフレームワークやらユニットテストやらの設定に入ることになるのでしょうか。
Vagrantイイ。スゴクイイ。設定がうまくいってるところでboxファイル化しといて、しくじったらその時点にロールバックすればいいし。
あっ、NetBeansとGitとの連携とかも色々とあったなそういえば...。
#参考文献