スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

rsyncで簡単デプロイ

今の自分の環境がPHPのZend Frameworkでして
Windowsで開発して、Linuxサーバにデプロイしています。
いちいちFTPやSFTPなどでデプロイしていると日が暮れるので
rsyncコマンドを使って、バッチファイルをダブルクリックするだけでデプロイが完了します。
この方法なら最近流行のガンブラーも関係ありません。

まずWindowsでrsyncを動かす環境を整えます。
cwrsyncをダウンロードしてインストールします。
次にサーバへパスワード認証無しにデプロイしたいので、公開鍵と秘密鍵を作成します。
まず公開鍵と秘密鍵を保存するフォルダーを作成します。
ホームディレクトリの直下に.sshというディレクトリを作成します。

cd %HOMEDRIVE%%HOMEPATH%
mkdir .ssh

次が公開鍵と秘密鍵の発行。
cwrsyncをインストールしたディレクトリの中のbinディレクトリにputtygen.exeがあるのでダブルクリックします。
@Generateボタンを押して、しばらくマウスをグルグルしていると作成が完了します。
公開鍵が画面上のテキストエリアに生成されるので、これをコピーしてid_rsa.pubというファイル名で.sshに保存します。
秘密鍵はConversionsメニューのExport OpenSSH Keyを選択します。id_rasというファイル名で.sshに保存します。

この後Linuxサーバにssh等でアクセスして、公開鍵をセットします。

cd
mkdir .ssh
chmod 700 .ssh
vi .ssh/authorized_keys
作成した公開鍵を記述
chmod 600 .ssh/authorized_keys

これで環境が整いましたので、デプロイ先を確認します。
Zend Frameworkのプロジェクト名をmyappとして、Linuxサーバでは/var/www/myappに保存することにします。
ちなみに、Apacheのドキュメントルートは/var/www/htdocsにしています。
Webで公開するのはmyapp/publicディレクトリだけですので以下のコマンドで一度だけ実行します。

mkdir /var/www/htdocs/myapp
ln -s /var/www/myapp/public /var/www/htdocs/myapp

では、いよいよデプロイのバッチファイルです。
cwrsyncのインストール先のディレクトリ等は自分の環境に合わせてください。
deploy.bat

SETLOCAL
SET CWRSYNCHOME=C:\Program Files (x86)\cwRsync
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
SET EXCLUDE=/cygdrive/c/exclude_pattern
SET SRC_DIR=/cygdrive/c/myapp/
SET DST_DIR=user@192.168.0.1:/var/www/myapp

rsync -avz --chmod=Da+xr,Du+w,Fa+r,Fu+w -e ssh --delete --exclude-from=%EXCLUDE% %SRC_DIR% %DST_DIR%

バッチファイルを実行すると一度目は接続するサーバが正しいか確認されるのでyesとしてください。
二度目からは聞かれないので、実行後は自動的にデプロイが完了します。

exclude_patternはコピーしないファイルの指定になります。
例えば.svnと記述しておけばsubversionの情報をコピーしません。
今私が設定しているのは以下の通りです。

.svn
.DS_Store
exclude_pattern
.htaccess

.htaccessを外しているのは、開発環境、本番環境の情報をここに記述しているので、
自動で配置されると困るからです。.htaccessは手動でおいています。

以上で簡単デプロイの完成です。
簡単だけではなく.svnを排除する、FTPを使わない(ガンブラー対策)、暗号化通信、パスワードを入力しないなど
数々のセキュリティを向上させるポイントが含まれています。
最初の設定の手間はかかりますが、ソースを修正して確認する作業は開発中は何度も行いますから、すぐに時間の元は取れるとおもいますよ。
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。