FreeBSDでVCCWを使ってWordPressプラグインの開発[追記あり]

2017年6月24日FreeBSD,WordPress,パソコン・インターネット

サーバーが復活して、やりたいことがやっとやれるようになりました。その一つが、サーバー(FreeBSD)にWordPressプラグインの開発環境を作る事です。

WordPressの開発環境は、Vagrant上のVCCWを使うのが楽ですし、確実です。次の手順で立ち上げます。

  1. VirtualBoxのインストール
  2. Vagrantのインストール
  3. VCCWのインストール
  4. hostsの設定
  5. vagrant up
  6. 起動確認

1. VirtualBoxのインストール

VirtualBoxは、パッケージとして用意されています。

# pkg install virtualbox-ose

/boot/loader.confに次の設定記入します。

vboxdrv_load="YES"

/etc/rc.confにも設定を追加します。

# -- VirtualBox # Sun May 18 17:04:35 2017
vboxnet_enable="YES" 
devfs_system_ruleset="system" 

FreeBSDの場合、次の設定をしないと、vagrant upの時に、ネットワーク設定でエラーになります。

  1. VirtualBoxのグループに自分自身を追加
  2. /dev/vboxnetctlのパーミションを設定
  3. パーミションの固定化

次のウェブページに記載されています。

1.1 VirtualBoxのグループに自分自身を追加

次のコマンドで、自分自身(下の例ではyourusername)を追加します。

# pw groupmod vboxusers -m yourusername

1.2 /dev/vboxnetctlのパーミションを設定

# chown root:vboxusers /dev/vboxnetctl
# chmod 0660 /dev/vboxnetctl

1.3 パーミションの固定化

再起動しても/dev/vboxnetctlのパーミションを正しく設定するためと、USBデバイスを使うために、/etc/devfs.confに次の設定をします。

[system=10]
add path 'usb/*' mode 0660 group operator

own     vboxnetctl root:vboxusers
perm    vboxnetctl 0660

2. Vagrantのインストール

Vagrantもパッケージが用意されています。簡単です。

# pkg install vagrant

3. VCCWのインストール

VCCWはgitからコピーしてきます。gitをインストールしていない場合は、このインストールも必要です。

# pkg install git

gitは、ユーザー環境でコピーしてきます。

$ cd
$ mkdir VBOX
$ cd VBOX
$ git clone https://github.com/miya0001/vccw.git

実行ディレクトリの下に、vccwと言うディレクトリが作られ、その中に各種ファイルがコピーされてきます。VBOXと言うディレクトリを作る理由は、仮想マシンを複数立ち上げるための保管ディレクトリとするためです。

4. hostsの設定

/etc/hostsにvccw.devを追加しておきます。この設定が無いと、正しく表示できません。

192.168.33.10   vccw.dev

5. vagrant up

vagrant upで起動するはずです。ですが、結構ハマりました。

  1. gemのバージョン違い
  2. VirtualBoxの設定不足

5.1 gemのバージョン違い

まずは、パッケージの依存関係です。ruby_depのバージョン違いでエラーになりました。

$ vagrant up
/usr/local/lib/ruby/site_ruby/2.3/rubygems/specification.rb:1436:in `block in activate_dependencies': can't satisfy 'ruby_dep (<= 1.3.1)', already activated 'ruby_dep-1.5.0' (Gem::LoadError)
    from /usr/local/lib/ruby/site_ruby/2.3/rubygems/specification.rb:1428:in `each'
    from /usr/local/lib/ruby/site_ruby/2.3/rubygems/specification.rb:1428:in `activate_dependencies'
    from /usr/local/lib/ruby/site_ruby/2.3/rubygems/specification.rb:1410:in `activate'
    from /usr/local/lib/ruby/site_ruby/2.3/rubygems.rb:300:in `block in activate_bin_path'
    from /usr/local/lib/ruby/site_ruby/2.3/rubygems.rb:300:in `synchronize'
    from /usr/local/lib/ruby/site_ruby/2.3/rubygems.rb:300:in `activate_bin_path'
    from /usr/local/bin/vagrant:23:in `
'

次のページを参考にして、修正しました。

一度、ruby_depをアンインストールしてから、バージョンを指定してruby_depをインストールします。

# gem uninstall ruby_dep

You have requested to uninstall the gem:
    ruby_dep-1.5.0

listen-3.1.5 depends on ruby_dep (~> 1.2)
If you remove this gem, these dependencies will not be met.
Continue with Uninstall? [yN]  y
Successfully uninstalled ruby_dep-1.5.0
# gem install ruby_dep -v 1.3.1
Fetching: ruby_dep-1.3.1.gem (100%)
Successfully installed ruby_dep-1.3.1
Parsing documentation for ruby_dep-1.3.1
Installing ri documentation for ruby_dep-1.3.1
Done installing documentation for ruby_dep after 0 seconds
1 gem installed

5.2 VirtualBoxの設定不足

もし、VirtualBoxの設定が正しくできていないと、次のエラーになります。非常にハマりました。

==> vccw.dev: Clearing any previously set network interfaces...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "create"]

Stderr: 0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Failed to create the host-only adapter
VBoxManage: error: Failed to execute 'VBoxNetAdpCtl add' (exit status: 32256)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface
VBoxManage: error: Context: "RTEXITCODE handleCreate(HandlerArg *)" at line 94 of file VBoxManageHostonly.cpp

6. 起動確認

FreeBSDの上でブラウザを起動し、vccw.devまたは192.168.33.10にアクセスします。正しく表示できましたでしょうか?

FreeBSDでVCCW

vagrant upした同じディレクトリで、vagrant sshでログインできます。ログイン後、/var/log/apache2/vccw.dev-access.logを確認すると良いと思います。

VCCWサーバーには、FreeBSDからでしかアクセスできません。ネットワーク上の他のPC(Macとか)からアクセスできるようにするには一手間必要です。

(追記 2017-06-24 00:20)

ネットワークの他のPCからアクセスする方法をまとめました。

VCCWを同じネットワーク内の他のPCからアクセスできるようにする
[amazonjs asin="4777517012" locale="JP"]

Posted by お市のかた