初期化された状態で仮想環境を立ち上げてください。
今回の目標を確認
今回の目標を確認します。
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
次回は、メールです。
コメント