atskimura-memo

あまり仕事とは関係なく適当に書きます。開発ネタが多いかもしれません。

chef-soloでopscode-cookbooks/wordpressを使って日本語WordPressをインストールした

WordPressをインストールしようと思ったんですが、あんまり触ったことないのでChefのコミュニティクックブックで入れてみました。

そのままやると英語版が入って、意外と苦戦したので、メモを残しておきます。

最終的な簡単な手順

以下の手順をそのままローカルPCで実行すればWordPress日本語版が入るChefリポジトリを作りました。
結局のところJSONファイル作っただけですが、せっかくなのでGithubに上げておきます。
PHP、Apache、MySQL、WordPressが全部入ります。なお、Ubuntu 12.04でしか試していません。

https://github.com/atskimura/wordpress-ja-chef-repo

前提

WordPressセットアップ対象のサーバーにroot(もしくはパスワードなしでsudoできるユーザ)でSSH公開鍵認証できる。

準備

$ git clone https://github.com/atskimura/wordpress-ja-chef-repo.git
$ cd wordpress-chef-repo
$ bundle install --path=vendor/bundle
$ bundle exec berks --path=cookbooks

設定変更

MySQLのパスワードを変更したい場合は、nodes/example.jsonの内容を書き換えてください。
その他の設定は、opscode-cookbooks/wordpressを見てください。

インストール実行

$ bundle exec knife solo bootstrap root@<対象サーバー> nodes/example.json -i <SSH秘密鍵>

あとはhttp://<対象サーバー>にアクセスして、サイトタイトルや管理者の作成とかしたらできあがり。

f:id:a_kimura:20140220114909j:plain

上のリポジトリの作り方

別にそう難しくはないです。
以下の手順は全てローカルPCでの作業です。

chef-solo、knife-solo、berkshelfをインストールします。
以下の手順でwordpress-chef/vendor/bundleにインストールされます。

$ mkdir wordpress-chef
$ cd wordpress-chef/
$ vim Gemfile
source 'https://rubygems.org'

gem "chef"
gem "knife-solo"
gem 'berkshelf'
$ bundle install --path=vendor/bundle

Chefリポジトリの雛形を作ります。

$ bundle exec knife solo init

Berksfileを作成します。

$ vim Berksfile

WordPress用のクックブックopscode-cookbooks/wordpressを使うよう以下の内容をBerksfileに記述します。

site :opscode

cookbook 'wordpress'

cookbooksディレクトリにcookbookをインストールします。依存するmysqlやapache2のcookbookも一緒にインストールされます。

$ bundle exec berks --path=cookbooks

WordPressセットアップ対象サーバーにChef Clientをインストールします。
rootユーザでなくてもsudoできるユーザなら構いません。

$ bundle exec knife solo prepare root@TARGET_SERVER -i <SSH秘密鍵>

実行すると、nodes/TARGET_SERVER.jsonもできあがります。 このJSONファイルにWordPressクックブックの設定をします。

$ vim nodes/TARGET_SERVER.json

指定しないと英語版WordPressが入ってしまうので、WordPress › 日本語から日本語版WordPress最新版のダウンロードURLをコピーして指定します。パスワードは適時変更してください。

{
  "run_list":[
    "wordpress"
  ],
  "mysql": {
    "server_root_password": "mysqlrootpassword",
    "server_repl_password": "mysqlrootpassword",
    "server_debian_password": "mysqlrootpassword"
  },
  "wordpress":{
    "url":"http://ja.wordpress.org/wordpress-3.8.1-ja.tar.gz",
    "db":{
      "pass":"mysqlwppassword"
    },
    "languages":{
      "lang":"ja"
    }
  }
}

これでインストールを実行できます。

$ bundle exec knife solo cook root@TARGET_SERVER -i <SSH秘密鍵>

おわりに

まあ一応入ったけど、vsftpd入れないとWordPressのアップデートが動かなかったり、staticpress-s3を使おうとしたらPHPのバージョンが古くてバグにはまったりと、その後はChefでやるのが面倒くさくなって手でやってしまいました。。。