理由
- 開発環境 → 公開環境 へのデータの移行とかがすごく面倒。
-
rsync
でもいいが、なんとなくGitHubを使いたかった。 - 毎回
pull
なりssh接続
なりが面倒だった。
接続を自動化
開発環境:Client 公開環境:Server
1.SSH接続時はパスワード無し接続
Client
$ ssh-keygen -t rsa
##〜省略〜##
$ scp ~/.ssh/id_rsa.pub {Serverのユーザ名}@{ServerのIPアドレス}:~/
Server
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ vim /etc/ssh/sshd_config
#ここ変更すれば行けたはず
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
2.GitHubもSSH接続
大体書いて頂いてるので省略します。
3.自動でPullさせる
Server
$ cd /var/www/html/
$ git clone {gitレポジトリurl}
$ cd ~/
$ touch autopull.sh
$ vim autopull.sh
autopull.sh#!bin/sh cd /var/www/html/{レポジトリ名} git pull origin master
これでshell叩けば勝手にPullされます。
4.SSH経由でシェルを実行
Client
$ ssh {Serverのユーザ名}@{ServerのIPアドレス} sh ~/autopull.sh
このコマンドを叩けばいいが、長い。
alias
を使う
Client
$ echo "alias chp='ssh {Serverのユーザ名}@{ServerのIPアドレス} sh ~/autopull.sh'" >> ~/.bashrc
bash
を再起動
(ちなみに、bash
を再起動するコマンドは)
exec $SHELL -l
5.終了
masterとは別のBranchで作業が完了して、add
してcommit
してpush
GitHubでPullReqest送って完了すれば、あとは、
$ chp
これでサーバの更新が完了する。
やったね。
6.さいごに
とても自己満足な感じなので、本当に効率求めるならいろんなアプリケーション使ったほうが早いかもしれませんね;