laravel/homesteadのCentOS7版ともいえるVagrantBoxを公開していますが、
実はちゃんと定期的に更新しています。
利用したい場合は次のコマンドで追加してください。
$ vagrant box add ytake/gardening
更新内容
今回は0.x系から 1.0にバージョンをあげ、
以前のBoxから大幅に変更を行いました。
複数のPHPバージョンを一つに
今まで単一のバージョンだけで提供していましたが、
自分が使うから、ということもあり複数のバージョンを一つのBoxで提供することにしました。
とはいっても特殊なことはしておらず、remi-safeでPHP7.0からPHP7.2までの最新バージョンを含んでいます。
BoxのデフォルトはPHP7.2にしていますが、
Composerで提供しているライブラリで自由に変更できます。
これにより、現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
yamlの php-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 などを利用するといいでしょう
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の詳細
今回紹介したもの以外のオプショナルなミドルウェアは下記を参照ください
Windowsについて
Windowsについてはきちんとサポートしておりません
Windows PCを所有していないため、動作確認などもできていません
きちんと対応してもいいよという方がいましたら是非お願いします