pagodabox で wordpress 環境の構築

pagodabox
<https://pagodabox.com>

#pagodaboxってなーに

PaaS環境。
herokuのPHP版

#ためしてみる

クイックスタートのリストがあるのでそれを試してみる。

<https://pagodabox.com/cafe>

あらかじめpagodaboxでユーザー登録を済ませておく。
(GitHubアカウントで登録しておくと将来的にいいらしい)

今回はwordpressを構築してみる。

<https://pagodabox.com/cafe/pagoda/wordpress>

![wordpress](http://gyazo.com/9e0492c56f4ddf64eff518f6450c035f.png)

Launchリンクをクリックするとサーバーが構築される。

![launch](http://gyazo.com/c5ed79114c129bed458e0dd11bbfa84d.png)

しばし待てばwordpress環境が構築されてpagodaboxのMySitesに表示される

![mysites](http://gyazo.com/ca6f7b236333aa32dd9f6e0a8191d803.png)


LiveSiteのリンククリックのページ
![livesite](http://gyazo.com/dce4f4977399ea2bcbc66bca328ec1b3.png)

すでにwordpressの環境が出来上がっている。
設定項目を入力すればすぐに記事を書いて行く事が出来る。

adminページ
dbのRAM使用率が高くなっているが、起動後すぐは高くなるようだ。
![admin](http://gyazo.com/2910e42e0ee08cf4868d2c62c5ba1e3d.png)

# 簡単!

wordpress環境できた！簡単！
おしまい！！

#原理

将来的の生産性のためにも原理を書いておこうと思う。

Launchリンクをクリックしただけでwordpress環境が構築出来てしまった。
その秘密は`Boxfile`にある。プロジェクトのルートディレクトリ直下に設定した`Boxfile`と呼ばれるyaml形式の設定ファイルがあれば画面ポチポチで出来上がる。

実際にデプロイしたプロジェクトファイルを持って来て`Boxfile`を覗いてみよう。

pagodaboxではgitのリポジトリをホスティングしているので、
gitのリポジトリをcloneしてくればソースファイルを閲覧する事が出来る。変更が発生すればコミット、プッシュの手順を踏めばデプロイは完了する。
herokuみたいな感じで。

あらかじめユーザーの管理画面でsshキーの登録を行っておく。webページから設定出来る。

## git clone

デプロイしたwordpressのファイル群を取得する。

adminページに移動して
![Show Git](http://gyazo.com/20f7c1fdf142db7b8cba0663005c337e.png)

`Show git Clone URL`
![Hide Git](http://gyazo.com/2d5c135660849ef21c5b5f02fc51ac16.png)

リポジトリのURLが表示されるのでコピーする
んでclone

    $ git clone git@git.pagodabox.com:timid-tesha.git
    Cloning into 'timid-tesha'...
    remote: Counting objects: 3523, done.
    remote: Compressing objects: 100% (1859/1859), done.
    remote: Total 3523 (delta 1594), reused 3523 (delta 1594)
    Receiving objects: 100% (3523/3523), 10.94 MiB | 843.00 KiB/s, done.
    Resolving deltas: 100% (1594/1594), done.
    Checking connectivity... done
    $ cd timid-tesha/
    $ vim Boxfile


実際に使われた`Boxfile`が以下

```Boxfile
web1:
  name: wp-web
  shared_writable_dirs:
    - wp-content/uploads/
  after_build:
    - "mv pagoda/wp-config.php wp-config.php"
    - "rm -R pagoda"
db1:
  name: wp-db
```

`web1``db1`の設定でwebサーバー1台、DBサーバー1台が構築される設定になっている。

`web1`に紐づいた`shared_writable_dirs`が「デプロイ毎に共有するディレクトリ」の設定項目。今回の設定のように記述しておけばwordpressのプラグインやテーマ設定がgitのリポジトリに含まれていなくても、共有される。
`web1`に紐づいた`after_build`は「デプロイ後の設定」項目。デプロイが終わった後にconfファイルをいい感じに設定するために記述する所。

    mv pagoda/wp-config.php wp-config.php

するように記述されているので`pagoda/wp-config.php`を覗いてみる。

特徴的な所は以下だろうか。

```pagoda/wp-config.php
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', $_SERVER["DB1_NAME"]);

/** MySQL database username */
define('DB_USER', $_SERVER["DB1_USER"]);

/** MySQL database password */
define('DB_PASSWORD', $_SERVER["DB1_PASS"]);

/** MySQL hostname */
define('DB_HOST', $_SERVER["DB1_HOST"]);
```

`DB_NAME`等を`$_SERVER["DB1_NAME"]`で取得している。
これはpagodaboxの標準機能で`Boxfile`で設定して作成された`db1`の情報が環境変数として出力されているので、その値を読み取ってデータベースアクセスを行うという設定。
パスワード等をいちいち設定しなくても済むようになるので大変便利

それと`Boxfile`の記述を見て解るように、`wp-config.php`の設定を変える時には`pagoda/wp-config.php `の設定を変えないと意味が無い。


`Boxfile`の詳しい設定方法は公式ページに載っている
<http://help.pagodabox.com/customer/portal/articles/175475>

#wordpress日本語化

すでにwordpress環境は出来上がっている。
が、日本語で操作したいので勉強がてら変更を行う。

ここ参考

<http://lealog.hateblo.jp/entry/2012/03/11/140346>

confファイルの変更と言語ファイルを追加すれば良い

    $ vim pagoda/wp-config.php

```
// define('WPLANG', '');
define('WPLANG', 'ja');
```

    $ mkdir wp-content/languages
    $ cd wp-content/languages
    $ wget http://svn.automattic.com/wordpress-i18n/ja/tags/3.3.1/messages/continents-cities-ja.mo
    $ wget http://svn.automattic.com/wordpress-i18n/ja/tags/3.3.1/messages/continents-cities-ja.po
    $ wget http://svn.automattic.com/wordpress-i18n/ja/tags/3.3.1/messages/ja.mo
    $ wget http://svn.automattic.com/wordpress-i18n/ja/tags/3.3.1/messages/ja.po
    $ wget http://svn.automattic.com/wordpress-i18n/ja/tags/3.3.1/messages/ms-ja.mo
    $ wget http://svn.automattic.com/wordpress-i18n/ja/tags/3.3.1/messages/ms-ja.po
    $ cd ../../
    $ git add -A
    $ git commit -m '日本語化'

変更点をデプロイしてみます

    $ git push origin master
    Counting objects: 16, done.
    Delta compression using up to 4 threads.
    Compressing objects: 100% (11/11), done.
    Writing objects: 100% (12/12), 301.51 KiB | 0 bytes/s, done.
    Total 12 (delta 4), reused 0 (delta 0)
    :: Deploying to 6b3dabf on master
          - 131024  3:29:31 InnoDB: The InnoDB memory heap is disabled
          - 131024  3:29:31 InnoDB: Mutexes and rw_locks use GCC atomic builtins
          - 131024  3:29:31 InnoDB: Compressed tables use zlib 1.2.3.3
          - 131024  3:29:31 InnoDB: Using Linux native AIO
          - 131024  3:29:31 InnoDB: Initializing buffer pool, size = 10.0M
          - 131024  3:29:31 InnoDB: Completed initialization of buffer pool
          - 131024  3:29:31 InnoDB: highest supported file format is Barracuda.
          - 131024  3:29:31  InnoDB: Waiting for the background threads to start
          - 131024  3:29:32 InnoDB: 1.1.8 started; log sequence number 1595675
          - 131024  3:29:32 [Warning] 'user' entry 'root@1.db1.timid-tesha.pagodabox.com' ignored in --skip-name-resolve mode.
          - 131024  3:29:32 [Warning] 'user' entry '@1.db1.timid-tesha.pagodabox.com' ignored in --skip-name-resolve mode.
          - 131024  3:29:32 [Warning] 'proxies_priv' entry '@ root@1.db1.timid-tesha.pagodabox.com' ignored in --skip-name-resolve mode.
          - 131024  3:29:32 [Note] Event Scheduler: Loaded 0 events
          - 131024  3:29:32 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
          - Version: '5.5.15-log'  socket: '/var/run/mysqld.sock'  port: 3306  Source distribution
          - [24-Oct-2013 03:29:41] NOTICE: fpm is running, pid 96
          - [24-Oct-2013 03:29:41] NOTICE: ready to handle connections
    :: Parsing Boxfile
      
     _______________________
     BUILDING INFRASTRUCTURE
     """""""""""""""""""""""
       +> Init submodules
       :: Running After Build Hooks
          [ EXECUTING 2 HOOKS ]
      
          :: HOOK 1 ::
          ::  mv pagoda/wp-config.php wp-config.php
          ---------------------------------------- OUTPUT: 
          ------------------------------------------------
      
          :: HOOK 2 ::
          ::  rm -R pagoda
          ---------------------------------------- OUTPUT: 
          ------------------------------------------------
          HOOKS COMPLETE - 2 Hooks Executed
      
     ______________________
     BOOTING INFRASTRUCTURE
     """"""""""""""""""""""
     + Booting Instances for web1
         web1.1
          - [24-Oct-2013 03:30:37] NOTICE: fpm is running, pid 101
          - [24-Oct-2013 03:30:37] NOTICE: ready to handle connections
      
     _________________________
     INFRASTRUCTURE GOING LIVE
     """""""""""""""""""""""""
     + Rerouting Traffic to new Infrastructure
     << traffic successfully ROUTED
     + Decommisioning Previous Infrastructure
    To git@git.pagodabox.com:timid-tesha.git
       7164f1e..6b3dabf  master -> master
    


再度LiveSiteのリンクからwebページにアクセスしてみると日本語に変わってます。
![ようこそ](http://gyazo.com/b4789d776ac2d698b7afb819bba0413c.png)

そしてwordpressの初期設定をすれば完了です。
![pagoda test](http://gyazo.com/8a00ea20efb19e56d65a79358dcb9907.png)

タイムゾーンの設定やらプラグインの設定やらしておきましょう

#ドメインの設定

アクセスURLが`http://timid-tesha.gopagoda.com`と少し解りにくいので独自ドメインの設定をしてみたいと思います。

adminページのDNS Aliasesの設定を行います
![dns](http://gyazo.com/0319732b3c56161bfe50407733110aed.png)

urlを設定したら以下の表示が出るので、Aレコードの設定をしてあげましょう
![pagoda.soramugi.net](http://gyazo.com/21f78a36c3357a2fb91be9069fe73242.png)

webページ上部のトルネードしてるのが終わればpagodabox側の準備は完了です。
![トルネード](http://gyazo.com/db7616a011fe1b513e4d4b6d46858858.png)

しばし待てばアクセス出来るようになります。
![pagoda.soramugi.net](http://gyazo.com/951ddc1085c9a2353cac643c2379d939.png)

wordpressの管理画面でURLの指定があるので、そこも独自ドメインで設定したものに変えましょう。

#まとめ

けっこう簡単
今回はwordpressでしたがlaravelやcodeigniterとかのクイックスタートもあります。
クイックスタート以外でももちろん出来るし、githubでホスティングしているリポジトリをデプロイすればwebページでデプロイも出来るのでなかなか良いです。
コマンドラインツールもあるけど大抵の事はwebで出来るようになっています。デプロイの巻き戻しとかもwebで出来ます。
「画面ポチポチしかしたくない」って人にも進めやすいと思います。でも日本語の情報少ないです。