質問編集履歴

1 便宜上circleではなくmainに全て書き換えるところをcircleを残してしまっていました.

RyomaK

RyomaK score 14

2018/03/19 21:12  投稿

VPSにgit pushを行なった際に自動デプロイをしたい
## ローカルからVPSにgit push した際に自動でデプロイしたい.
ssh設定などは終わり,ローカルから```git push {{作成したremote}} master```でVPS上のコードが書き換わるようになりました.
方法としては```git hooks```の ```post-receive```でローカルからVPSにpushした際にその変更に対して```git pull```しています.
pullした後に元の実行プロセスを```kill```してgoのコードをビルドしてバックグラウンドで新しく実行させたいのですが,
問題が二つあります.
killのコマンドを実行した際に,
```
ps aux | grep {{元実行されていたプロセスの名前}} | grep -v grep | awk '{ print "kill -9", $2 }' | sh
```
をpost-receive内で実行した際に,
```
fatal: The remote end hung up unexpectedly
error: error in sideband demultiplexer
```
が出てしまう事
バックグラウンドで実行させる為に```nohup make run & ```しているのにもかかわらず,sshを切断すると,webのプロセスが閉じてしまう事です.(VPS上で同じコマンドを打つとうまくいきます)
バックグラウンドで実行させる為にpost-receive上で```nohup make run & ```しているのにもかかわらず,sshを切断すると,webのプロセスが閉じてしまう事です.(VPS上で同じコマンドを叩くとうまくいきます)
(post-receive)
```sh:
#!/bin/bash
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:/usr/local/go/bin
cd {{webアプリのディレクトリ}}
git --git-dir=.git pull origin master
ps aux | grep {{元実行されていたプロセスの名前}} | grep -v grep | awk '{ print "kill -9", $2 }' | sh
nohup make run &
```
(Makefile)
```
run:
       go build -o ./cmd/main ./cmd/main.go
       ./cmd/circle/circle -dbconfig $(DBCONFIG) -addr $(ADDR)
       ./cmd/main -dbconfig $(DBCONFIG) -addr $(ADDR)
```
どのような可能性があるのか教えていただきたいです.
  • Git

    2984 questions

    Gitはオープンソースの分散バージョン管理システム(DVCS)です。

  • Go

    1267 questions

    Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

  • VPS

    663 questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る