ということだったので、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/wordpress" # ローカルの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をまるごとやりとりするためのツールなので、うまいこと差分を適用するといったことはできません。そのため、
- サーバーからデータをダウンロード(pull)
- ローカルで編集
- →クライアントがサーバーでブログを更新
- ローカルのデータをアップロード(push)
なんてことになると、(3)でクライアントが更新したデータは消えてしまうので注意が必要です。一応、pull、push したときはローカルの wp-content ディレクトリにデータベースのバックアップが作成されますので、もしやってしまったときはそれを使って復旧できます。ただし、ファイルについてはバックアップは作成されませんので、Gitなどを使って更新前に戻せるようにしていたほうが安全です。