ssh & vi してのリリースとは
- ソースコードは、EC2サーバーの特定の場所に、唯一存在している
- ソースコードは、EC2サーバーにsshして、viすることでリリースしている
を指しています。これをどうにかして、
- github管理にしたい
- githubにあるソースコードをデプロイできるようにしたい
以下、EC2インスタンスの /var/www/cgi-bin/
以下にソースコードを散らかしてあると仮定して書きます。
サーバーに設置してあるソースコードを手元に持ってくる
EC2インスタンス内の /var/www/cgi-bin
をまるっと手元にscpしてきます。権限、ログファイルなどなどややこしいことは一旦考えません。
$ scp -i ~/.ssh/hoge.pem -r ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com:/var/www/cgi-bin ./
githubでプライベートリポジトリをひとつ作成する
githubで課金しましょう。プライベートリポジトリを作れるようになります。または、bitbucket, gitlabなど他のサービスを使っても構わないです。とにかくプライベートリポジトリです。
github管理する
EC2サーバーからscpしてきたときに、実行権限が消失してるかもしれないので、適宜付与してからcommitしてください。
$ git clone git@github.com:hoge-company/hoge-repos.git
$ mv cgi-bin/* hoge-repos/
$ cd hoge-repos
$ git add .
$ git commit -m "initial commit"
$ git push
デプロイする (初回)
いま置いてある cgi-bin をどけます。
$ ssh -i ~/.ssh/hoge.pem ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com
$ cd /var/www/
$ mv cgi-bin cgi-bin.bk
$ exit
hgoe-reposをscpすることでデプロイ
$ scp -i ~/.ssh/hoge.pem -r hoge-repos ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com:/var/www/cgi-bin
ひととおり動作確認して、大丈夫そうだったら、cgi-bin.bk は削除してしまいましょう。
$ rm -rf cgi-bin.bk
デプロイする (2回目以降
$ ssh -i ~/.ssh/hoge.pem ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com 'rm -rf /var/www/cgi-bin'
$ scp -i ~/.ssh/hoge.pem -r hoge-repos ec2-user@ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com:/var/www/cgi-bin
この先は
以下のような方向性に発展させるのがよいでしょう。
- EC2でデプロイサーバーを構える & Capistranoを使う
- ElasticBeanstalkにする & CircleCIでデプロイする
- Herokuにする & CircleCIでデプロイする
- Dockerでクソがんばる
インフラとCI/CDに知見のあるメンバーが不在なら、Heroku & CircleCIが一番楽できるはず。