ytake/gardening(VagrantBox) 更新のお知らせ

laravel/homesteadのCentOS7版ともいえるVagrantBoxを公開していますが、
実はちゃんと定期的に更新しています。

ytake.hateblo.jp

app.vagrantup.com

利用したい場合は次のコマンドで追加してください。

$ vagrant box add ytake/gardening

更新内容

今回は0.x系から 1.0にバージョンをあげ、
以前のBoxから大幅に変更を行いました。

複数のPHPバージョンを一つに

今まで単一のバージョンだけで提供していましたが、
自分が使うから、ということもあり複数のバージョンを一つのBoxで提供することにしました。

とはいっても特殊なことはしておらず、remi-safeでPHP7.0からPHP7.2までの最新バージョンを含んでいます。
BoxのデフォルトはPHP7.2にしていますが、
Composerで提供しているライブラリで自由に変更できます。

github.com

packagist.org

これにより、現versionのHomesteadと同じようにプロジェクト毎に異なるPHPバージョンで開発することができます。
当然すべてのPHPバージョンでエクステンションは統一しています。

バージョン指定方法

VagrantBoxを追加したあと、Composerインストールで上記のライブラリを追加し、

$ ./vendor/bin/gardening gardening:setup

を実行すると、VagrantBoxの環境を変更できる設定ファイルが出力されます(vagrant.yaml)
sitesやfoldersはプロジェクトの内容が自動で記述されますが、 例としては次のようになります。

ip: 192.168.10.10
memory: 4096
cpus: 1
hostname: gardening
name: ytake-web-develop
authorize: ~/.ssh/id_rsa.pub
keys:
    - ~/.ssh/id_rsa
folders:
    - map: ./
      to: /home/vagrant/component-web

sites:
    - map: gardening.app.vagrant
      to: /home/vagrant/component-web/public
      php: "7.2"

php-alternatives: "7.1"
elasticsearch: true
kibana: true
fluentd: false
mongodb: false
couchbase: true
cassandra: true
confluent: false
rabbitmq: true
timezone: Asia/Tokyo

yamlphp-alternatives はオプションのため、デフォルトでは内容に含みませんが、
cliなどで利用する場合のデフォルトのバージョンを変更します。 上記の例では、あるプロジェクトでは7.2で動作させますが、メインとしては7.1で動作させることになります これは alternatives でバージョンを切り替えているだけですので、
各バージョンできちんとコマンドを実行したい場合は、
以下の各バージョンのディレクトリを参照してください。

各バージョンのディレクトリ、ソケットについて

php version bin dir fpm socket
php7.0 /opt/remi/php70/root/usr/bin /var/run/php70-fpm.sock
php7.1 /opt/remi/php71/root/usr/bin /var/run/php71-fpm.sock
php7.2 /opt/remi/php72/root/usr/bin /var/run/php72-fpm.sock

PHPエクステンションリスト

面倒臭いsqlserver向けのものなども当然含んでますので、開発は楽チンです。
Redisまわりのエクステンションはphpiredisとredis両方が含まれています。

amqp
apc
apcu
ast
bcmath
bz2
calendar
cassandra
Core
couchbase
ctype
curl
date
dom
event
exif
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
igbinary
imagick
intl
json
ldap
libsodium
libxml
mbstring
memcached
memprof
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
pcs
PDO
pdo_dblib
pdo_mysql
pdo_pgsql
pdo_sqlite
pdo_sqlsrv
pgsql
phalcon
Phar
phpiredis
posix
rdkafka
readline
redis
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
solr
SPL
sqlite3
sqlsrv
ssh2
standard
Stomp
sysvmsg
sysvsem
sysvshm
tokenizer
uopz
uuid
wddx
xdebug
xhprof
xml
xmlreader
xmlrpc
xmlwriter
xsl
yaml
Zend OPcache
zip
zlib
zmq

Xdebugのポート変更

上記の複数のPHPバージョン提供のため、それぞれのプロジェクトで利用できるようにポートを下記にしています。

php version xdebug.remote_port
php7.0 xdebug.remote_port = 9070
php7.1 xdebug.remote_port = 9071
php7.2 xdebug.remote_port = 9072

これ以外は次の通りです。

xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.max_nesting_level = 512
xdebug.idekey = PHPSTORM

あくまでデフォルトで用意している値ですので、お使いの環境に合わせて自由に変更してください。

Elasticsearchバージョンアップ+Kibana

Elasticsearchのバージョンを6.1.1に更新しました。
またKibanaをVagrantBoxに含めるようにしましたので、
optionalで有効にすると利用できます。

elasticsearch: true
kibana: true

Kibana利用は以下にアクセスしてください

http://VagrantBoxのipアドレス:5601/

RabbitMQ, Apache Kafkaの追加

LaravelではフレームワークのQueueを利用する方も多いと思いますが、
様々なアプリケーション・言語と接続するには効率がいいものではありません。
そういう場合はメッセージブローカーを使うのが一般的ですが、
今回RabbitMQとApache Kafkaを追加しました。

RabbitMQを利用したい場合

rabbitmq: true

RabbitMQのWeb GUIアクセス方法

rabbitmqを有効にすると、以下のアドレスでアクセスできます。
http://VagrantBoxのipアドレス:15672/

ユーザー名とパスワードは次の通りです。

user: gardening
password: 00:secreT,@

Apache Kafkaを利用したい場合

confluent: true

Kafka GUIアクセス

Apache KafkaにはRabbitMQのようなGUIは提供されていません。
ですがthird partyのものを含めています。
実行する場合は下記のコマンドか、supervisorがインストールされていますのでそちらをご利用ください。

$ nohup /home/vagrant/trifecta-ui/bin/trifecta-ui -Dhttp.port=9888 > /var/log/trifecta/out.log &

上記のコマンドを実行すると、http://VagrantBoxのipアドレス:9888/ でアクセスできます。
クラスタの管理には yahoo/kafka-manager などを利用するといいでしょう

github.com

Apache Cassandra, Apache Sparkの追加

前述のApache Kafkaと組み合わせることで、Streamingアプリケーション、
Kappa Architectureを実装することができます

Cassandraを利用したい場合

cassandra: true

cqlsh(コマンドラインツール)は以下のように入力して利用してください

$ cqlsh VagrantBoxのipアドレス

Sparkを利用したい場合

Sparkを実行する場合は、特になにかを有効にする必要はありません

spark-shellなどは次のように入力するだけです

$ spark-shell

Sparkのディレクトリは export SPARK_HOME=/opt/spark となっています。

Optinalの詳細

今回紹介したもの以外のオプショナルなミドルウェアは下記を参照ください

github.com

Windowsについて

Windowsについてはきちんとサポートしておりません
Windows PCを所有していないため、動作確認などもできていません
きちんと対応してもいいよという方がいましたら是非お願いします