FTPの代わりにgitを使ってサーバにコードを展開する例


現地開発が完了したら、通常サーバーに配置されます。ftpを使う人もいます。scp、ftp、scpを使う人もいます。便利さのために、私達はtarまたはzipを通して、これらのやり方もいいです。でも、問題があります。
1.全部更新して、一部のファイルが修正されているかどうかに関わらず、サーバーを再送信して、時間と流量を無駄にします。
2.複数のサーバの重複アップロード
3.コードの更新後、後続の操作は自動化されていません。
上の問題はsshを通じて直接遠隔でコマンドを実行して解決できますが、shellスクリプトを書く必要があります。もっと簡単で効率的な方法がありますか?はい、それはバージョン管理ツールを使ったヤフーです。
ここで私が言っているのは、バージョン管理ツールであり、gitではなく、svn、git、hgはそれぞれのhookがあるので、原理は似ています。次はGitの詳細な考えです。
サーバー側の操作
まず裸の倉庫を作ります。どうして裸の倉庫ですか?このライブラリは本当に変更するものではないので、サーバーでコードを修正することもできません。コードの中継場所としてしか考えられません。

cd gitroot
mkdir projectname
cd projectname
git init --bare
私達のhookを追加します

cd /hooks
touch post-receive
post-receiveの内容を編集します。この中でsites/projectnameはウェブサイトのコードを保存するところです。

env -i git archive master | tar -x -C /sites/projectname
echo " "
ローカルgitの操作
ローカルにはリモートライブラリを追加したいです。配置が必要な時にはリモートライブラリにセットすればいいです。ここにpublishというリモートライブラリを追加しました。

git remote add publish [email protected]:/home/gitroot/projectname
git push publish master
強化できるところ
ここで実証したのは簡単なウェブサイトの展開過程で、複雑な状況の下で静的な資源バージョンの更新、サーバーの再起動などを追加できます。