WordPress環境構築におけるMySQLの設定とChef上達のポイントサーバー管理者のためのChef超入門(終)(1/3 ページ)

エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、WordPress環境構築レシピの最後の仕上げとして、SQL文をTemplateとして作成して、MySQLを設定する方式のCookbookを作成し、実行してみます。

» 2015年09月10日 05時00分 公開
[大喜多利哉@IT]

最終回はWordPress環境構築レシピの最後の仕上げ

「サーバー管理者のためのChef超入門」のインデックス

連載目次

 6回にわたる連載も、今回が最終回となりました。WordPress環境構築レシピの最後の仕上げの部分と、上達のためのポイントについて触れます。

 まず、連載第3回の「WordPress構築で学ぶ、サーバー構築作業をChefのCookbookとして記述するためのポイント」で解説した「構築環境の前提条件」と「Cookbookの作成方針」を再度記載しておきます。

WordPress構築環境の前提条件

  1. OSはCentOS 6.6を使用
  2. ApacheとMySQLは同一サーバー内(「ノード」)にインストールする
  3. MySQLはRemiリポジトリを使用してインストールする
  4. 「wp.example.com」というバーチャルホストを作成し、ホスト名を「wp.example.com」、ドキュメントルートを「/var/www/wp.example.com/wordpress」とする
  5. エラーログとカスタムログのファイル名を以下の通りとする
    • wp.example.com-error_log
    • wp.example.com-access_log
  6. MySQLにwordpressユーザーとwordpressデータベースを作成し、ユーザーにデータベースへのアクセス権を付与する

 前回の「WordPressのダウンロード/配置とバーチャルホスト設定で見るChefの変数とAttributeの書き方の基本&Template活用」で、5.まで完了しています。今回は6.について記載します。

WordPress構築Cookbookの作成方針

【1】リポジトリ設定→外部Cookbookを利用
【2】Apache、PHP、MySQLのインストール→Resourceで定義
【3】WordPressのダウンロードと解凍→Resourceで定義
【4】バーチャルホスト設定→Templateを使用
【5】WordPress用MySQL設定→Templateを使用

 このうち今回は【5】について作業を進めていきます。

SQL文をTemplateとして作成して、WordPress用にMySQLを設定

 「cookbook/wordpress01/recipes/default.rb」にMySQL設定用の処理を追記します。今回追記した部分は10行目と66~69行目です。

  1. package ['httpd', 'httpd-devel', 'mysql', 'mysql-server', 'mysql-devel', 'php', 'php-mysql'] do
  2. action :install
  3. end
  4. filename = "#{node['wordpress']['wp_tar_name']}"
  5. install_dir = "#{node['wordpress']['wp_dir']}"
  6. remote_uri = "#{node['wordpress']['wp_tar_uri']}"
  7. file_checksum = "#{node['wordpress']['wp_tar_sum']}"
  8. httpd_conf_dir = "#{node['wordpress']['httpd_conf_dir']}"
  9. mysql_pw = "#{node['wordpress']['mysql_pw']}"
  10. #インストールディレクトリ作成
  11. directory "#{install_dir}" do
  12. recursive true
  13. mode 0755
  14. owner "apache"
  15. group "apache"
  16. action :create
  17. end
  18. #WordPressダウンロード
  19. remote_file "/tmp/#{filename}" do
  20. source "#{remote_uri}"
  21. checksum "#{file_checksum}"
  22. end
  23. #WordPress配置
  24. script "install_wordpress" do
  25. interpreter "bash"
  26. user "root"
  27. code <<-EOL
  28. install -d #{install_dir}
  29. tar zxvf /tmp/#{filename} -C #{install_dir}
  30. EOL
  31. end
  32. #httpd.conf配置
  33. template "httpdconf" do
  34. path "#{httpd_conf_dir}httpd.conf"
  35. source "httpdconf.erb"
  36. mode 0644
  37. end
  38. #wordpressディレクトリpermission変更
  39. directory "#{install_dir}/wordpress" do
  40. recursive true
  41. mode 0755
  42. owner "apache"
  43. group "apache"
  44. end
  45. service "httpd" do
  46. action :start
  47. end
  48. service "mysqld" do
  49. action :start
  50. end
  51. template "sql-for-wordpress" do
  52. path "/tmp/wordpress.sql"
  53. source "wordpress.sql.erb"
  54. mode 0644
  55. end
  56. execute "mysql-create-user" do
  57. command "mysql -u root -p#{mysql_pw} < /tmp/wordpress.sql"
  58. action :run
  59. end

 MySQLの設定は、対話形式が基本となるためレシピで表現するのが難しい部分です。今回はSQL文をTemplateとして作成しておき、対象のMySQLに対して実行させるという方式で実装しました。

 MySQLのrootパスワード用に「mysql_pw」というAttributeを追加しましたので、cookbook/wordpress01/attributes/default.rbにも追加しておきます。追加したのは、7行目です。

  1. default['wordpress']['wp_tar_name'] = 'wordpress-4.2.2-ja.tar.gz'
  2. default['wordpress']['wp_dir'] = '/var/www/ec2.tokyo'
  3. default['wordpress']['wp_tar_uri'] = 'https://ja.wordpress.org/wordpress-4.2.2-ja.tar.gz'
  4. default['wordpress']['wp_tar_sum'] = '7e34ba580aed16c4fd769f033b0e7fa79b7c5813ba52e4496f14da0ac4451373'
  5. default['wordpress']['httpd_conf_dir'] = '/etc/httpd/conf/'
  6. default['wordpress']['vhost_domain'] = 'ec2.tokyo'
  7. default['wordpress']['mysql_pw'] = '[MySQLのrootパスワード]'

 今回新規作成したcookbook/wordpress01/templates/default/wordpress.sql.erbの内容は以下の通りです。DB名・ユーザー名・パスワードは分かりやすいように「wordpress」としてありますが、実運用の際は適宜適切な文字列を指定してください。

  1. CREATE DATABASE wordpress;
  2. GRANT ALL PRIVILEGES ON *.* TO wordpress@"%" IDENTIFIED BY 'wordpress' WITH GRANT OPTION;
  3. FLUSH PRIVILEGES;

 これでWordPress環境を構築するCookbookが完成しました。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

Linux �ス�ス OSS 髫ェ蛟�スコ荵斟帷ケ晢スウ郢ァ�ュ郢晢スウ郢ァ�ー

隴幢スャ隴鯉ス・隴帷」ッ菫」

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。