Djangoプロジェクトの自動設定と展開のための良いツール
-
14-11-2019 - |
質問
私は独立したWeb開発者として始まり、私は最近クライアントを怖がっていますか? 彼らが期待していたよりもかなり高いサイト。基本的でした 彼らがホストされた解決策で彼ら自身をした可能性があることをBlochureware WordPress.comやGoogleサイトのように。 1 クリティカル機能を除く 私はDjangoが素敵なフィット感になると思いました。 現像をやる気にさせることができます。
私がラフで上場しているタスクを見ているときそれはかわいいです 私にとっては、ほとんどの時間があります このクライアントのWebサイトに特有のものです。これは私がすべきだと思いました 新規作成と展開のプロセスを自動化するためのスクリプトがあります。 Djangoプロジェクト。
いくつかのものはまだ手動で行わなければならないでしょう:
-
新しいVPSを設定します(またはほとんどの場合、既存のVPS上のVirtualHostsに移動するだけです)。
-
Point ClientsDomain.comとTest.ClientsDomain.comを指すようにDNS設定を編集する 新しいVPSに。
-
SSH-Keys を設定します。
-
設定ファイルを編集します。
スクリプトは次のようなものをします。
-
新しいVPS に必要なパッケージをいくつか取り付ける
-
新しいVPS にiptablesファイアウォールをインストールする
-
clientsdomain.comのnginx / apache configを追加し、test.clientsdomain.com
-
VPSの生産とテストのための新しいデータベースを設定し、私のローカルマシンの開発のために。
-
新しいDjangoプロジェクトを作成し、それをBitbucketに置きます。
-
制作、テスト、開発のためのsettings.pyとlocal_settings.pyの設定
-
本番データベースとアップロードされたファイルディレクトリのオフサイトの背景を設定します。
-
いくつかのデフォルトアプリを有効にする:FATERPAGES、admin
-
ボイラプレートテンプレート、2つの定型フラットページとNavbarを追加します。
-
960.gs CSSフレームワークを追加
-
jQuery を追加する
-
検索のためのDjapianまたはHayStack(自動更新のためのCronジョブを含む)を設定します。
-
新しいGoogle Analyticsプロファイルを設定します。
-
生産、テスト、開発の間のデータベースを複製する可能性
-
Pingdom Monitoring の設定
私は rake と
身長過去にやや似たようなもの(しかし、あまり野心的ではない)のために、そして私は布はこの仕事にもかなり良いフィット感があるかもしれませんが、まだあなたの入力が好きであると考えています。私が覗くべき他のツールはありますか?私は善を聞いた puppet のことについてのこと(単語企業が含まれています)一人の男操作のためにオーバーキル。
-
解決
現在、ファブリック+ビルドアウトで実行します。他の人がシェフや人形が優れていると言う(そして、あなたがアプリレベルだけでなく、サーバーレベルのものをしたいのであれば、それはおそらくそうです)。
Djangoの場合は、あなたをたくさんの荷を使いなさい、私は特に http://ep.io Djangoのデモのための完全自動展開に電力を供給するために使用する-cms そう多分あなたはあなたのためのよりオーバーヘッドのVPSSにあなた自身を制限するのではなく、それらのホスティングプロバイダーを調べるべきです。
他のヒント
人形が小さなプロジェクトのために困難でオーバーキルになるように思えるかもしれませんが、それは巨大な展開に非常によく使われているので、
もう1つの素晴らしいことは、たくさんの人形マニフェストとモジュールがすでに他の人によって書かれていますが、それらは Puppet Forge と他の多くの高度なPuppet Users
私は最近、同様の立場にある人と同じくらい多くのことを検討しています。
あなたが述べたことの多くは、新しいプロジェクトごとにgitから引っ張ることができるいくつかの良いスケルトンコードを設定することによって仲良くすることができます。
一般的なDjangoプロジェクトの骨格コードのための良い出発点については、これを見てください。
http://blog.zacharyvoase.com/2010/02. / 03 / Django-Project-Conventions /
私は私が迅速に起動して走ることを可能にするものが似ていますが、サーバーのものをプロジェクトのものから分離することもできます。これは、システム/サーバーファイルを含めることなくすべてのプロジェクトをバージョン管理できるため、非常に重要です。 ここにここにいます(まだ進行中)。これはフォルダレイアウト、追加のCSS、ボイラルプレートHTMLのもの、グリッド/ 960のもの、jQuery、開発vsの設計設定、データベース設定(略)、デフォルトのインストールされているアプリなどはレイアウト説明
virtualenv 、 virtualenvwrapper & PIP 1つのVPSで複数のプロジェクトを実行するのに最適なスタンドアロン、カプセル化されたPython環境を設定します。 PIPを使用すると、パッケージを特定のVirualenvにインストールしたり、後でインポートできるテキストファイルにすべてのパッケージを出力したりできます。これにより、開発からプロダクションへのコードが非常に迅速に再配置できます。また、通常のDjangoアプリケーションを自動的にインストールするSkeletonコードに一般的な要件ファイルを作成することもできます。
データベースの面では、開発データベースとプロダクションデータベースを異なるマシンで持ち込もうとしていきましたが、備品のインポート/エクスポートには困難です。今、私はVPS上に別々のプロダクションおよびDEVデータベースを持っており、開発時にDev Oneにリモート(SSHを越えて)接続します。あなたはまた素敵なものに簡単にコピーすることができます。
すべての準備ができているとき、あなたはファブリックを使って開発から製造に展開することができます(私はまだこれに取り残されていないので、使いやすさがよくわかりません)
私はこれについて他の人々の考えを聞くことに非常に興味があります私は何かSimliarを投稿しようとしていたように!
ファブリックに基づくシルク展開をチェックし、Django(または任意のWSGI)+ Nginx + Gunicornを展開するために使用されます。