初期化された状態で仮想環境を立ち上げてください。
今回の目標を確認
今回の目標を確認します。
rootパスワードの変更SSH接続の設定変更sudoの設定一般ユーザーの追加- システムのアップデート
iptablesの設定- WEBサーバーの設定
- WEBページの設定
- マルチドメインの設定
- PHPの設定
- MySQLの設定
- Postfix/Dovecot/Postfix Adminの設定
WEBサーバーの設定
WEBサーバーは、Apacheを選びます。
CentOSからインストールすると、yumを使用されるので、yumのアップデートも一緒に行います。
- システムのアップデート
- WEBサーバーの設定
- WEBページの設定
- マルチドメインの設定
仮インストール
以下の設定ファイルを手に入れるために、とりあえず仮にインストールします。
/etc/httpd/conf/httpd.conf
httpdというCookbookを作って、そこに書いていきましょう。
knife cookbook create httpd -o site-cookbooks
httpdのrecipeを書きます。
yumのアップデートは、参考サイトから頂きました。
chef – 今日作りたくなる簡単cookbook [Kim'sキッチン] yumsetup(yum-fastestmirrorにyum update添え) – Qiita
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/httpd/recipes/default.rb
yum_package "yum-fastestmirror" do
action :install
end
execute "yum-update" do
user "root"
command "yum -y update"
action :run
end
package "httpd" do
action :install
end
service "httpd" do
supports :restart => true
action [ :enable , :start ]
end
sakuravps.jsonに追記します。
~/vagrantdir/sakuravps/chef-repo/nodes/sakuravps.json
(略)
"recipe[httpd]"
(略)
準備ができたらrecipeを反映します。
$ vagrant destroy -f
$ vagrant up
$ knife solo bootstrap sakuravps
設定ファイルの取得と書き換え
仮想環境にログインして、httpd.confを取得します。
$ ssh -l morisan 192.168.33.10 -p 61234 -i ~/id_rsa_open.ppk
[morisan@localhost ~]$ sudo cp /etc/httpd/conf/httpd.conf /vagrant
コピーしてきたhttpd.confをhttpd.conf.erbとして、templatesに移動させ、以下の書き換えを行います。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/httpd/templates/default/httpd.conf.erb
ServerTokens Prod
ServerSignature Off
Options -Indexes FollowSymLinks
マルチドメイン(バーチャルホスト)の設定
マルチドメイン(バーチャルホスト)の設定をします。
ユーザーと同じようにdata_bagを使ってみます。
~/vagrantdir/sakuravps/chef-repo/data_bags/sites/exmaple.json
{
"id":"exmaple.com"
}
vhosts.confは以下のような感じにします。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/httpd/templates/default/vhosts.conf.erb
<% @sites.each do |site| %>
ServerAdmin webmaster@<%= site %>
DocumentRoot /var/www/html/<%= site %>
ServerName <%= site %>
ErrorLog logs/<%= site %>-error_log
CustomLog logs/<%= site %>-access_log common
<% end %>
httpdのrecipeに追加します。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/httpd/recipes/default.rb
template "httpd.conf" do
path "/etc/httpd/conf/httpd.conf"
source "httpd.conf.erb"
mode 0644
notifies :restart, "service[httpd]"
end
s = []
data_ids = data_bag("sites")
data_ids.each do |site|
s.push(data_bag_item("sites",site)["id"])
end
u = data_bag_item("account","webmaster")
template "vhosts.conf" do
path "/etc/httpd/conf.d/vhosts.conf"
source "vhosts.conf.erb"
mode 0644
variables({
:sites => s
})
notifies :restart, "service[httpd]"
end
data_ids.each do |site|
s = data_bag_item("sites",site)
directory "/var/www/html/#{s["id"]}" do
owner u["name"]
group "apache"
mode 0755
action :create
end
end
execute "chown" do
command "chown -R #{u["name"]}.apache /var/www/html"
action :run
end
これでhttpdのrecipeは完成です。
$ vagrant destroy -f
$ vagrant up
$ knife solo bootstrap sakuravps
仮想環境に反映したらhttp://192.168.33.10/にアクセスしたり、/var/www/htmlにファイルをアップして確認してみましょう。
PHPの設定
PHPをインストールします。
yumからインストールできれば楽なのですが、そうするとバージョンが5.3なってしまいます。
今回は、5.5を入れたいと思います。
- PHPの設定
以下のサイトを参考にさせて頂きました。
vargrant+chefでつくるPHP5.5+MySQL5.6+CakePHP3環境 – たけまるの日記
仮インストール
以下の設定ファイルを手に入れるために、仮インストールします。
/etc/php.ini
php55というCookbookを作ります。
knife cookbook create php55 -o site-cookbooks
modulueを追加していますが、それ以外は、ほとんど参考サイトの通りです。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/php55/recipes/default.rb
remote_file "/tmp/#{node["remi"]["file_name"]}" do
source "#{node["remi"]["remote_uri"]}"
not_if { ::File.exists?("/tmp/#{node["remi"]["file_name"]}") }
end
package node["remi"]["file_name"] do
action :install
provider Chef::Provider::Package::Rpm
source "/tmp/#{node["remi"]["file_name"]}"
end
%w{php php-xml php-pdo php-imap php-gd php-devel php-mbstring php-mcrypt php-mysql php-phpunit-PHPUnit php-pecl-xdebug}.each do |p|
package p do
action :install
options "--enablerepo=remi --enablerepo=remi-php55"
end
end
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/php55/attributes/default.rb
default["remi"]["file_name"] = "remi-release-6.rpm"
default["remi"]["remote_uri"] = "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm"
sakuravps.jsonに追記します。
~/vagrantdir/sakuravps/chef-repo/nodes/sakuravps.json
(略)
"recipe[php55]"
(略)
$ vagrant destroy -f
$ vagrant up
$ knife solo bootstrap sakuravps
php.iniの設定
php.iniを取得します。
$ ssh -l morisan 192.168.33.10 -p 61234 -i ~/id_rsa_open.ppk
[morisan@localhost ~]$ sudo cp /etc/php.ini /vagrant
php.ini.erbとして、templatesに置き、以下の部分を変更します。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/php55/templates/default/php.ini.erb
expose_php = Off
error_reporting = E_ALL & ~E_STRICT
error_log = /var/log/php.log
default_charset = "UTF-8"
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.substitute_character = none
php.ini用にrecipeを追加します。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/php55/recipes/default.rb
template "php.ini" do
path "/etc/php.ini"
source "php.ini.erb"
mode 0644
notifies :restart, "service[httpd]"
end
仮想環境に反映したら
$ vagrant destroy -f
$ vagrant up
$ knife solo bootstrap sakuravps
phpinfo();と書いたファイルを/var/www/htmlにアップして、確認してみましょう。
MySQLの設定
MySQLも新しいバージョンでインストールしたいと思います。
サードパーティCookbookがシンプルで使いやすかったので、こちらを使いたいと思います。
mysql Cookbook – Chef Supermarket
インストール
Berksfileに追記します。
~/vagrantdir/sakuravps/chef-repo/Berksfile
(略)
cookbook 'mysql'
$ berks install
Cookbook作成
mysqlsetというCookbookを作ります。
knife cookbook create mysqlset -o site-cookbooks
以下の場所に新規ファイルとして、作成します。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/mysqlset/recipes/templates/default/mysite.cnf.erb
[mysqld]
character-set-server = utf8
[mysql]
character-set-server = utf8
skip-character-set-client-handshake
recipeを書きます。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/mysqlset/recipes/default.rb
template '/etc/mysql/conf.d/mysite.cnf' do
owner "mysql"
group "mysql"
notifies :restart, "mysql_service[default]"
end
sakuravps.jsonに追加します。
バージョンは5.6にします。
password系は適宜変更してください。
~/vagrantdir/sakuravps/chef-repo/nodes/sakuravps.json
(略)
"recipe[mysql::server]",
"recipe[mysql::client]",
"recipe[mysqlset]"
],
"mysql":{
"version": "5.6",
"server_root_password":"morisan",
"server_debian_password":"morisan",
"server_repl_password":"morisan",
"allow_remote_root":true,
"remove_anonymous_users": false,
"remove_test_database": false
},
(略)
反映したら、
$ vagrant destroy -f
$ vagrant up
$ knife solo bootstrap sakuravps
仮想環境にアクセスして、MySQLにログインできるか確認してみましょう。
$ ssh -l morisan 192.168.33.10 -p 61234 -i ~/id_rsa_open.ppk
[morisan@localhost ~]$ mysql -u root -p
次回は、メールです。
コメント