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