Git(GitHub)+VPS(Vultr)で自動デプロイ環境構築
自分用のメモとして。
やりたいこと
- ローカルで開発
- GitHubのリポジトリーにpush、同時にVPSのリポジトリーにもpush
- VPSに自動デプロイされる
環境
Git(GitHub)
Git(GitHub)
あらかじめ「testing」というリポジトリーを作成しておきます。
VPS(Vultr)
configファイルを使って、SSH接続できるようにしておきます。
以下は記述例です。
Host vultr
HostName 12.34.56.789
Port 22
User hoge
IdentityFile ~/.ssh/id_rsa
リポジトリー
オーソドックスなやりかたとして、リポジトリーを2つ用意します。
-
ノンベアリポジトリー(ローカルリポジトリー)
- ワークツリーある。
- チェックアウトとかマージとかできる。
-
ベアリポジトリー(リモートリポジトリー)
- ワークツリーない。
- チェックアウトとかマージとかできない。
- いわゆる更新管理用。
これがややこしいのですが、VPSには両方のリポジトリーを置きます。
ディレクトリー構造としては以下になります。
var
└── www
├── html
│ └── testing (ノンベアリポジトリー)
└── testing.git (ベアリポジトリー)
ベアリポジトリーは公開する必要がないので、/var/www
配下にしています。
流れ
ローカルのリポジトリー → ①GitHubのリポジトリー「testing」
↓
②VPSのベアリポジトリー「testing.git」
↓
VPSのノンベアリポジトリー「testing」(公開される)
※①と②は同時にpushします。
手順
まず、GitHubから「testing」を/var/www/html
にcloneします。
cd /var/www/html
git clone https://github.com/{username}/testing.git
cloneしたリポジトリーをもとに、ベアリポジトリー「testing.git」を/var/www
に作成します。
cd /var/www
git clone -bare /var/www/html/testing testing.git
つぎに、ベアリポジトリー「testing.git」のhooksを設定します。
cd /var/www/testing.git/hooks
vi post-update
#!/bin/sh
(cd /var/www/html/testing && git --git-dir=.git pull origin master)
ファイルに実行権限をつけて、動くか確認します。
chmod a+x post-receive
./post-receive
さいごに、GitHubからローカルに「testing」をcloneして、configファイルを編集します。
cloneする場所はホームディレクトリー直下の「git」フォルダー配下にしています。
[remote "origin"]
url = https://{username}@github.com/{username}/testing.git
url = ssh://user@hostname:port/var/www/testing.git ←この行を追加
...
user、hostname、portは、VPSのものです。
ローカルの~/.ssh/config
にあわせて変更してください。
補足
1人だけで作業するのであればこれで問題ないと思います。
が、複数人でデプロイしあうには不十分なので、Netlifyなどをご検討ください。
参考
Author And Source
この問題について(Git(GitHub)+VPS(Vultr)で自動デプロイ環境構築), 我々は、より多くの情報をここで見つけました https://qiita.com/timids/items/7d6d20a4d13d0604e8e4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .