デプロイする仕組みを作った。便宜上、Mac上での設定手順を書いたが、Mac固有のものはあまり使っていないのでUnix系のシステムなら同じ仕組みが使えると思う。前提MySQLがインストールされていて、起動していること。なければHomeBrewとかで入れる。PHPが動作する状態になっていること。PHPからMySQLにアクセスできるようになっていること。BrowserSyncがインストールされていること。なければnpmからグローバルにインストール。(最初からgulp使う場合はグローバルにインストールされていなくてもよいのだけど)WordPressのインストールWordPress.orgから最新のWordPressをダウンロードしてきて、~/Sites以下に解凍・設置する。設置したWordPressのディレクトリはオーナーをApache(_www)にしておいた方が便利。wordpressこれをすることでブラウザ上でプラグインのインストールやWordPress本体のアップデートなどが可能になるため。ウィザードに従ってWordPressのインストールを実行する。必要に応じて、本番のサイトからデータをエクスポートしてきてローカルのWordPressにもインポートする。実際のデータが入っている状態の方がわかりやすいのでやっておいたほうがいい。データが大きくてupload_max_filesize超過のエラーが発生する場合は、/etc/php.iniのupload_max_filesizeの値を適宜変更する。/etc/php.iniがない場合は、/etc/php.ini.defaultなどをコピーして作る。テーマのベースを作るテーマ管理用のディレクトリを適当なところに作る。~/Documents/my-wp-themeWordPressのテーマディレクトリ直下(~/Sites/wordpress/wp-content/themes/)にフォルダを作るよりも、シンボリックリンクをはって作業する方がオススメ(後述)Underscoresでテーマのスケルトンを作る。他のテーマを持ってきても良いけど、Underscoresが比較的シンプルで無駄が少ないのでオススメ。ファイル群はテーマ管理用ディレクトリ直下に置くのではなく、フォルダを切って配置する。(~/Documents/my-wp-theme/dst)WordPressのテーマディレクトリから、スケルトンを配置したディレクトリにシンボリックリンクをはる。my-wp-themeWordPressのテーマ選択画面から当該のテーマを選択する。必要に応じてgitレポジトリの設定を行う。シンボリックリンクをはるのかテーマにグラフィック素材が含まれているような場合、グラフィック素材の元データ(aiとかpsdとか)も同じレポジトリ内で管理できないと不便だ。これらの元データがApache上で参照できてしまったり、本番サーバーにアップロードされてしまうのは微妙なので、デプロイされない位置に置いておきたい。デプロイの際に、元データをデプロイ対象から外すような処理を書いても構わないが、それよりは「実際にWordPressがテーマとして使うファイル用のディレクトリ」と「作業ファイル用のディレクトリ」が分かれていた方がシンプルだ。今回はこの後gulpを導入するので、それを考えてもやはり「出力用ディレクトリ」は分かれていた方が便利。(gulpが生成するファイルがアップロードされることを防ぐためにも)加えて、ローカルのWordPressのディレクトリはプラグインインストールなどの都合からオーナーをApache(_www)にしているが、作業ファイルはユーザ権限で読み書きできた方が便利なので、適当なディレクトリ(~/Documents/my-wp-theme)にファイル一式をおき、その中の「WordPressがテーマとして使うファイル用のディレクトリ」(~/Documents/my-wp-theme/dst)に対して、WordPressのテーマディレクトリからシンボリックリンクをはり、デプロイ時もそのディレクトリのみを単純にアップロードすればよいという形にするのが、全体的にみたらスマートなのではないかと思う。Redirectionという機能が有効になっており、これが働くとプロキシー経由でWordPressを開いた場合に正規のURL(プロキシーを通さないURL)に自動的にリダイレクトされてしまう。Redirectionを無効にする必要がある。functions.phpに下記の一行を追加する。Redirectionが無効になってしまうという少し困った問題があるが、残念ながら今の所なかなかスマートに解決する方法が見つかっていない。BrowserSyncを起動する。PHPが必要なので、Proxyモードで起動する必要がある。--startPath="~username/wordpress"BrowserSyncを使って正しく作業できることを確認する。ブラウザで開くとWordPressが表示されること。Redirectionが無効になっていない)dst以下のphpやcssを変更して保存すると、自動的にブラウザでリロードが走ること。(リロードが走らない場合は–filesの指定がまちがっているかも)WordPress内で記事ページに遷移した際にApache(80番ポート)ではなくBrowserSync(3000番ポート)のまま開けること。デプロイの仕組みを作る更新のタイミングで一時的に表示が崩れてしまう可能性がゼロではないが、個人サイト/個人サービスレベルであればデプロイはrsyncで十分なんじゃないかと思う。デプロイ先のサーバーに鍵認証でSSHログインできるようにしておく。user@your.serverパスワード入力無しでログインできることを確認しておく。ログインを確認できたらexitしてよい。rsyncを使ってファイルをアップロードする。user@your.server:path/to/wordpress/wp-content/themes/my-wp-theme/転送先ディレクトリを間違えてしまわないように要注意!!なお、通常はあまりやらないだろうが、テーマディレクトリ内にサーバー上でファイルを出力・書き換えたりするような場合は、rsyncによるデプロイでそれらのファイルを消してしまったりコンフリクトを起こしてしまう可能性があるので注意。Gulpを導入するBrowserSyncとデプロイのコマンドを毎回打ち込むのは面倒なので、Gulpを使ってコントロールできるようにする。--save-devgulpfile.jsを書く。});});おそらくgulp-rsyncのバグだが、カレントディレクトリ以外のディレクトリをsrcに指定した場合にエラーメッセージも出さずに処理を終了してしまう問題がある。デバッグしてみたところディレクトリのNull判定あたりの不具合のようだが、ひとまずemptyDirectoriesオプションをtrueにするとこの問題は回避できるようだったので、emptyDirectoriesオプションを指定する。rsyncによる手軽なデプロイができるようになったことで、だいぶ快適にWordPressのテーマ開発+運用ができるようになったと思う。gulpが入っているのでsassやcoffeeなどを使えるようにしたらもっと快適になるだろうが、そこらへんは好みの問題なので割愛。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイトご意見、ご感想をお願いします。