この文章はなに
itamaeでWordpressを1台のサーバに複数インストールしたかった人生だった。
結論
作って公開したので使えると思う。
https://github.com/foursue/xxv-server
ライセンスはMIT
使い方
Rubyのバージョンをよく変えるのでREADMEでの実行環境はdockerを前提にしているが、ローカルにrubyがいるなら普通に実行できるはず。
docker run --rm -v $HOME/projects/xxv-server:/usr/src/app -w /usr/src/app ruby:2 sh -c 'bundle install --path vendor/bundle && bundle exec itamae ssh entry.rb --host {{アドレス}} -u root -i secure/{{PEMファイル}} -y nodes/{{nodeファイル}} -n'
普通にbundle叩くなら、下記のような感じ。
bundle install --path vendor/bundle && bundle exec itamae ssh entry.rb --host {{アドレス}} -u root -i secure/{{PEMファイル}} -y nodes/{{nodeファイル}} -n
解説
Nginx
cookbooks/nginx/default.rb
インストールしてるだけです。
php70
cookbooks/php7-fpm/default.rb
インストールしつつ、/etc/php-fpm.d/www.conf
のuser,groupをapacheからnginxに変更してます。
mysql56
cookbooks/mysql/default.rb
インストールしてるだけです。
Wordpress
cookbooks/wordpress/default.rb
ドメイン1つごとにWordpressのダウンロード・解凍・設置、DBの作成と設定、wp-config.phpの作成をしてます。
下記を参考にしました。
https://github.com/masawada/itamae-wordpress
nodeファイル
下記サンプルのようなnodeファイルを用意してください。
site1.example.com,site2.example.com
を設定してます。サンプルでは/usr/share/nginx
を利用してますが、他のディレクトリを利用する場合はcookbooks/wordpress/default.rb
の該当箇所を見てみてください。
roles:
- wordpress
multi_wordpress:
- server_name: site1.example.com
root: /usr/share/nginx/site1
db_name: wordpress_site1_db
db_user: wordpress_site1_user
db_password: password1
- server_name: site2.example.com
root: /usr/share/nginx/site2
db_name: wordpress_site2_db
db_user: wordpress_site2_user
db_password: password2
roles
roles/wordpress.rb
これはcookbooksを順番に読み込んでいるだけです。
何か希望があれば
とりあえず作ってみたものなので、ツッコミがあればお手数ですが、どしどしお願いします。