WordPress環境構築におけるMySQLの設定とChef上達のポイント:サーバー管理者のためのChef超入門(終)(1/3 ページ)
エンタープライズ向け機能が充実してきたChefを使って高速かつ精度の高いサーバーインフラを構築/管理する方法について解説する連載。今回は、WordPress環境構築レシピの最後の仕上げとして、SQL文をTemplateとして作成して、MySQLを設定する方式のCookbookを作成し、実行してみます。
最終回はWordPress環境構築レシピの最後の仕上げ
6回にわたる連載も、今回が最終回となりました。WordPress環境構築レシピの最後の仕上げの部分と、上達のためのポイントについて触れます。
まず、連載第3回の「WordPress構築で学ぶ、サーバー構築作業をChefのCookbookとして記述するためのポイント」で解説した「構築環境の前提条件」と「Cookbookの作成方針」を再度記載しておきます。
WordPress構築環境の前提条件
- OSはCentOS 6.6を使用
- ApacheとMySQLは同一サーバー内(「ノード」)にインストールする
- MySQLはRemiリポジトリを使用してインストールする
- 「wp.example.com」というバーチャルホストを作成し、ホスト名を「wp.example.com」、ドキュメントルートを「/var/www/wp.example.com/wordpress」とする
- エラーログとカスタムログのファイル名を以下の通りとする
- wp.example.com-error_log
- wp.example.com-access_log
- 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行目です。
package ['httpd', 'httpd-devel', 'mysql', 'mysql-server', 'mysql-devel', 'php', 'php-mysql'] do action :install end filename = "#{node['wordpress']['wp_tar_name']}" install_dir = "#{node['wordpress']['wp_dir']}" remote_uri = "#{node['wordpress']['wp_tar_uri']}" file_checksum = "#{node['wordpress']['wp_tar_sum']}" httpd_conf_dir = "#{node['wordpress']['httpd_conf_dir']}" mysql_pw = "#{node['wordpress']['mysql_pw']}" #インストールディレクトリ作成 directory "#{install_dir}" do recursive true mode 0755 owner "apache" group "apache" action :create end #WordPressダウンロード remote_file "/tmp/#{filename}" do source "#{remote_uri}" checksum "#{file_checksum}" end #WordPress配置 script "install_wordpress" do interpreter "bash" user "root" code <<-EOL install -d #{install_dir} tar zxvf /tmp/#{filename} -C #{install_dir} EOL end #httpd.conf配置 template "httpdconf" do path "#{httpd_conf_dir}httpd.conf" source "httpdconf.erb" mode 0644 end #wordpressディレクトリpermission変更 directory "#{install_dir}/wordpress" do recursive true mode 0755 owner "apache" group "apache" end service "httpd" do action :start end service "mysqld" do action :start end template "sql-for-wordpress" do path "/tmp/wordpress.sql" source "wordpress.sql.erb" mode 0644 end execute "mysql-create-user" do command "mysql -u root -p#{mysql_pw} < /tmp/wordpress.sql" action :run end
MySQLの設定は、対話形式が基本となるためレシピで表現するのが難しい部分です。今回はSQL文をTemplateとして作成しておき、対象のMySQLに対して実行させるという方式で実装しました。
MySQLのrootパスワード用に「mysql_pw」というAttributeを追加しましたので、cookbook/wordpress01/attributes/default.rbにも追加しておきます。追加したのは、7行目です。
default['wordpress']['wp_tar_name'] = 'wordpress-4.2.2-ja.tar.gz' default['wordpress']['wp_dir'] = '/var/www/ec2.tokyo' default['wordpress']['wp_tar_uri'] = 'https://ja.wordpress.org/wordpress-4.2.2-ja.tar.gz' default['wordpress']['wp_tar_sum'] = '7e34ba580aed16c4fd769f033b0e7fa79b7c5813ba52e4496f14da0ac4451373' default['wordpress']['httpd_conf_dir'] = '/etc/httpd/conf/' default['wordpress']['vhost_domain'] = 'ec2.tokyo' default['wordpress']['mysql_pw'] = '[MySQLのrootパスワード]'
今回新規作成したcookbook/wordpress01/templates/default/wordpress.sql.erbの内容は以下の通りです。DB名・ユーザー名・パスワードは分かりやすいように「wordpress」としてありますが、実運用の際は適宜適切な文字列を指定してください。
CREATE DATABASE wordpress; GRANT ALL PRIVILEGES ON *.* TO wordpress@"%" IDENTIFIED BY 'wordpress' WITH GRANT OPTION; FLUSH PRIVILEGES;
これでWordPress環境を構築するCookbookが完成しました。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- WordPress自体のチューニングが必要な理由と高速化の基本的な考え方
企業のCMSサイトやオウンドメディアなどエンタープライズ用途での利用が増加しているWordPressの高速化について解説する連載。初回は、WordPressの高速化が求められる背景や、WordPress高速化の基本的な考え方であるページのロード時間とその構成要素、1秒当たりの同時アクセス数について解説します。 - 環境構築自動化の手順と評価検証、Puppetの基礎知識
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。 - OpenStackで激変するシステム開発・運用 “抽象化”が実現する「究極の自動化」とは
前回はOpenStackの活用ポイントと、今後のシステム開発・運用に与える影響――特に自動化にフォーカスして紹介した。今回は日本OpenStackユーザ会 会長の中島倫明氏が、「OpenStackによる自動化の仕組みと実施法」を分かりやすく解説する。 - PowerShell Desired State Configuration(DSC)とは(前編)
Windows OSの設定や構成を変更する場合、GUIの管理ツールを使うのが一般的である。だが台数が多かったり、構成変更や以前の構成への復旧などが頻繁だったりするとGUIでは非常に面倒だし、間違いもしやすくなる。こんな場合はPowerShell DSCを使ってインフラ構築作業を自動化するとよい。 - アプリ開発者もインフラ管理者も知っておきたいDockerの基礎知識
オープンソースのコンテナー管理ソフトウェアDockerについて主な機能と特徴、使用技術、動作環境などを紹介。ハイパーバイザー型とコンテナー型の仮想化の違いも解説します。