さくらのレンタルサーバーにWordPressをデプロイするのはVCCW + Wordmoveが最高に捗る

ということだったので、VCCW + Wordmove でさくらのレンタルサーバーに一発で簡単デプロイする方法を書きたいと思います。@Toro_Unitさんがすでに記事をかかれているので良いかなとも思ったのですが、僕は公開鍵認証を使った方法でやってて、紹介されている方法と少し違うようでしたので、公開鍵認証を使った方法をご紹介します。

なぜ公開鍵認証?

公開鍵認証の設定を行っていれば、sshでログインしたりWordmoveでデータのアップロード・ダウンロードするときにパスワードを入力する必要がなくなります。本当はパスワードログインも禁止したいのですがさくらのレンタルサーバーで方法あるのですかね?

鍵を作成してさくらのレンタルサーバーに公開鍵認証でログインできるようにする

僕はMacを使っているのでMacでの方法になりますが、コンソールに下記のコマンドを打って、さくらのレンタルサーバーと通信するための鍵を生成します。既に別のサーバーとの通信用で鍵の生成をされている方は、ここを飛ばしてそれを使っても大丈夫です。

# Mac
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/inc/.ssh/id_rsa): # そのままエンター
Enter passphrase (empty for no passphrase): # パスフレーズを入力
Enter same passphrase again: # もう一回

# 鍵が生成されているか確認
$ ls ~/.ssh/id_rsa
id_rsa # 秘密鍵
id_rsa.pub # 公開鍵

# 秘密鍵に、自分しか見れないように権限を設定
$ chmod 600 ~/.ssh/id_rsa

生成した公開鍵をさくらのレンタルサーバーに保存します。

# さくらのレンタルサーバーに公開鍵を保存するために公開鍵の中身をコピー
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3N... # ドラッグしてコピー

$ ssh さくらのアカウント名@さくらのアカウント名.sakura.ne.jp
さくらのアカウント名@さくらのアカウント名.sakura.ne.jp's password: # さくらのパスワードを入力

# ここからさくらのサーバ内
# コピーした公開鍵の内容を下記にコピペ
% vi ~/.ssh/authorized_keys

# 保存したら公開鍵が見られないように権限を設定
% chmod 400 ~/.ssh/authorized_keys

# ログアウト
% exit

VCCWでローカル環境を作成

ここについては公式サイトが詳しいのでそちらを参照してください。

ssh-agentに秘密鍵を登録する

これをすることで下記のようになり(多分)、とても便利です。

  • Mac(ホスト)の鍵をVCCW(ローカル環境)でも共有できる(さくらのレンタルサーバーにローカル環境の鍵を送る必要が無い)
  • 秘密鍵に設定したパスフレーズを毎回入力必要がない
# Mac
$ ssh-add -K ~/.ssh/id_rsa

Movefileに接続情報を記述する

Vagrant upをするとvccwディレクトリ内にMovefileが作成されていますので、それを編集します。MovefileはYAMLという形式で記述する必要があって、インデントが重要な意味を持っています(コメント行も含め。多分)。僕はそれが良くわかっていないくて大変苦労したので、不要なコメント行は全部消しちゃったほうが楽だと思います…。

# Mac
$ vi /PATH/To/vccw/Movefile

local:
  vhost: "http://wordpress.local" # ローカルのURL
  wordpress_path: "/var/www/inc/www" # ローカルのWordPressのパス

  database:
    name: "wordpress"
    user: "wordpress"
    password: "wordpress"
    host: "192.168.33.10"

staging:
  vhost: "http://example.com" # さくらのレンタルサーバーのURL
  wordpress_path: "/home/さくらのアカウント名/www" # さくらのレンタルサーバーのWordPressのパス

  database:
    name: "データベース名"
    user: "データベースのユーザー名"
    password: "データベースのパスワード"
    host: "mysqlxxx.sakura.ne.jp" # さくらのホスト名
    charset: "utf8" # さくらはDBをdumpするとujisになっちゃうのでcharsetを指定

  exclude:
    - ".git/"
    - ".gitignore"
    - ".sass-cache/"
    - "bin/"
    - "tmp/*"
    - "Gemfile*"
    - "Movefile"
    - "wp-config.php"
    - "wp-content/*.sql"
    - ".DS_Store"

  ssh:
    host: "さくらのアカウント名.sakura.ne.jp"
    user: "さくらのアカウント名"

あとはWordmoveでコマンド一発!

慣れていないとここまで手間だと思いますが、ここまでくればWordmoveのコマンド一発でサーバーのデータをまるっと持ってきたり、ローカルのデータをまるっとアップロードできるようになるので、この後の構築・保守作業が超便利になります。

# wordmoveコマンドはローカルサーバー内で実行しないといけないので注意
# VCCW(ローカル環境)起動
$ vagrant up

# ローカル環境にログイン
$ vagrant ssh

# ここからローカル環境
# wordmoveのディレクトリに移動
% cd /vagrant

# サーバーのデータ(ファイル、データベース)をまるっとダウンロード
% wordmove pull -e staging --all

# まるごとじゃないパターンもできます(pull、push両方で)
# サーバーのコアファイルのみダウンロード
% wordmove pull -e staging -w
# サーバーのプラグインのみダウンロード
% wordmove pull -e staging -p
# サーバーのテーマのみダウンロード
% wordmove pull -e staging -t
# サーバーのuploadsのみダウンロード
% wordmove pull -e staging -u

# サーバーにデータ(ファイル、データベース)をまるっとアップロード
% wordmove push -e staging --all

デフォルトではwp-config.phpはやりとりされないので、ローカルで作成したデータを空のサーバーにアップロードした場合はサーバーにもwp-config.phpを作成する必要があります。普通にブラウザでアクセスすれば自動作成画面になるので、特にFTPなどでアップロードしなくても大丈夫です。

上の例ではwordmoveやりとりするホストに「staging」を指定しています。これはMovefileを編集したときに記述しているホストのアダ名みたいなもので、これはいくつでも増やすことができます。例えば「stating」にステージングサーバー(テスト環境)の接続情報を記述し、「production」にプロダクションサーバー(本番環境)の情報を記述みたいな感じです。

Wordmoveはrsyncをつかってデータの送受信をするので、FTPよりかなり高速です。データベースもまるっと送受信できるのでphpMyAdminを開くこともなくなりました。FTPやphpMyAdminでバックアップをとったりデプロイするのは何度もやるとかなり時間の無駄なので、最初の設定は面倒かもしれませんがWordmoveを使うことをオススメします!

ちょっと注意点など

WordmoveはローカルとサーバーのWordPressをまるごとやりとりするためのツールなので、うまいこと差分を適用するといったことはできません。そのため、

  1. サーバーからデータをダウンロード(pull)
  2. ローカルで編集
  3. →クライアントがサーバーでブログを更新
  4. ローカルのデータをアップロード(push)

なんてことになると、(3)でクライアントが更新したデータは消えてしまうので注意が必要です。一応、pull、push したときはローカルの wp-content ディレクトリにデータベースのバックアップが作成されますので、もしやってしまったときはそれを使って復旧できます。ただし、ファイルについてはバックアップは作成されませんので、Gitなどを使って更新前に戻せるようにしていたほうが安全です。

MW WP Form

MW WP Form はショートコードベースのフォームプラグインです。多くの機能を持っており、例えば、多くのバリデーションルール、問い合わせデータの保存、そしてグラフ機能集計などを使用することができます。

さらに詳しく
Habakiri

Habakiri

Bootstrap ベースのシンプルな WordPress テーマ。レスポンシブ、多くのカスタマイズ機能。圧縮された CSS・JS を使用する高速化対策。Microformats 対応。Sass、クラスベースの functions.php。

さらに詳しく
basis-stylus

Basis

軽量なレスポンシブ Stylus/CSS フレームワーク。Flexbox ベースのグリッドシステム、疎結合なコンポーネント、バーティカルリズム。

さらに詳しく