2009-03-14 14 views
11

(などが、質問は何にも適用され、PHP)私は、Djangoの上で実行されているサイトを持っているgitを使ってウェブサイトを展開する必要がありますか?

現在、私は私の変更を展開するunisonを使用している、と私(ちょっとに使用)は、そのせいで私の前にそれを愛します手動でやっていました!

今、私の足元がgitで濡れているので、私はそれを愛するようになっています!私が変更を配備するために和合の代わりにそれを使用するべきかどうか、私は考えています!

このようにすれば、何らかの形でそれらを配備すれば災害と判明した場合、私の変更を元に戻すことができるという追加の利点があります!

質問です:

  • は、ウェブサイトを展開するために適したgitのですか?

  • 私が知っておくべきことは何ですか?

答えて

16

私は私のウェブサイトを追跡するためにgitを使用して、私はこのようにそれを展開:

git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html" 

これは少し説明するに値する。gitのarchiveコマンドは、マスターブランチのファイルをエクスポートします。マスターブランチはgzipで圧縮され、ネットワークトラフィックを最小限に抑えます。 ssh経由でリモートから受信され、最終的な宛先ディレクトリに解凍されます。

私が使用しているデプロイスクリプトはもう少し先ですが、これが最も重要な部分です。

+0

ファイルをサーバから削除する方法を教えてください。 'rsync'はtar形式の入力を受け取ることができますか? – mjs

+0

各展開では、バージョン管理された新しいディレクトリが作成され、シンボリックリンクされます。これにより、復元が容易になります。これは「もう少し進んでいる」という部分が出てくる部分です。 –

+0

今まで私はユニゾンを使用しています。これには、両側の変更が自動的に同期されるという利点があります(ただし、同じファイルが両側で変更されていることを除きます)。私はサーバ上のgitデプロイメントにも切り替える必要があります。しかし、これは好きではない。 git checkoutがサーバー上で実行されます。コードはgit pullによって更新されます。 – guettli

5

私はSVNを使用して自分のウェブサイトを展開しています。ウェブサイトのコードを更新するたびにサーバーを再起動/再ロードする必要があるかもしれないことに注意してください(Djangoやそれを実行しているものがあればそれを回避できるかどうかはわかりません)。

+0

参考:サーバーを再ロードする必要があるかどうかを管理するのは直接djangoではなく、サーバーとPythonのブリッジです。 Apache-w/-modpythonの設定では、Pythonコードを変更するにはApacheを再起動する必要があります。テンプレート(または静的ファイル)を変更すると変更されません。 ORMの変更にはさらに多くの時間が必要です。 –

+0

技術的には、mod_pythonのカスタムインポーターは、サーバーを再起動せずに変更されたPythonコードをリロードすることができますが、通常は安全のために再起動します。 –

9

gitを使用してdjangoアプリケーションをデプロイすることができるのであれば、その答えは確実です!

ただし、一般的なアプリケーションの実動展開は複雑になり、ファイルをロールバックするだけではありません。 DBスクリプト(アップグレードスクリプトとダウングレードスクリプトの両方)の実行、cronジョブの再起動、またはファイルの移動が必要な場合があります。

展開プロセスの一部として、コードベース全体をバックアップして、任意の数のバージョンをロールバックすることができます。

これを行う方法の1つは、展開プロセス全体を自動化するCapistranoです。開発環境でスクリプトを作成し、cap deploy、cap deploy_with_migrations、cap rollbackなどのコマンドを発行します。ログインからバックアッププロセスやDBスクリプトの実行まで、すべて自動化されます。デプロイメントを自動化することで、運用環境のエラーを排除します。私は最近、配備の最中にデータベース全体を誤って削除し、バックアップからすべてを復元する必要があった組織に発言しました。デプロイメントエラーが実際にあなたのビジネスを壊す可能性があるので、もしあなたが真剣であれば、これを自動化したい。

CapistranoはRailsで一般的に使用されているRubyベースのデプロイメントツールですが、自動化機能には無関心です。インターネットには、Capistrano(google - django capistrano)にDjangoアプリを導入するメリットについての記事が多数掲載されています。また、あなたはDjangonautsの間で人気Fabricを見て、取ることができcheck out this link here

+0

私はあなたがこれを複雑にしていると思っています。一般的な/複雑なビジネスウェブサイトに似ているものは何も言及していませんが、capistranoは良い提案です – dbr

関連する問題