7

私はこの質問を読み、それは素晴らしいスタートだと思いますが、私はより多くの洞察を探しています。

Python2.6とDjango1.2.1を使用してアプリケーションを作成しました。Python2.6またはDjangoがインストールされていないシステムにこのアプリケーションをデプロイしたいと思います。システム自体には、sqlite3、pysqlite2、gccなどの多くのものがインストールされていません。ただし、システムにはPython2.4.3があります。

Python 2.6、Django、および私のアプリケーション自体(標準のDjangoアプリ)のRPMを作成して、それぞれを個別にインストールしてさまざまなコンポーネントをアップグレードできるようにするための最も適切な方法は何でしょうか?

ソースRPMの作成についてはよくわかりませんが、すぐに利用できる情報だと思います。ソースRPMを作成するための特に優れたリソースがあれば、私もそれらをいただければ幸いです。

重要な場合、システムはESX 4Update1です。

ありがとう!

更新: Pythonの卵を配布したり、setup.pyを使用したりすることが、コンテンツ配布の実行可能なソリューションであるとは思いもしませんでした。私もそれについて聞いてみたいと思います。

4

5 に答える 5

5

Python コードをパッケージ化するときに発生するすべての通常の問題に加えて、Django プロジェクトには、処理する必要がある他のいくつかの問題があります。

  • システムパスをうまく使う
  • システム機能をうまく使う
  • 翻訳の取り扱い
  • 秘密鍵のランダム化

Transifexをパッケージ化するためにこれらの問題を解決する必要がありました。それを機能させるために配置されたさまざまなビットを調査することをお勧めします。

  • 下にインストール/usr/share/<projectname>
  • execfile()から設定をロードするために使用します。/etc/<projectname>
  • 巨大な翻訳処理の回り道
  • インストール後スクリプトでの秘密鍵の置換
  • 必要だった他のすべての流血の変更とファッジ
于 2010-07-14T05:15:22.597 に答える
3

Python ドキュメント の第 5 章を参照してください。bdist Python ユーティリティの処理方法を示します。これを使用すると、RPM を含むいくつかのタイプのパッケージ (つまり、「ビルド済みディストリビューション」) を生成できます。

于 2012-05-07T17:13:54.047 に答える
3

Python パッケージは通常、setuptools/distributeで配布されます。easy_install <package_name>通常、すべての python パッケージ (およびその依存関係) を(オプションで特定のバージョン番号を使用して) インストールできます。次の理由から、setuptools を主要な配布方法として使用することをお勧めします。

  • すべてのプラットフォームで動作します
  • 一般に、Python パッケージの推奨される方法です。
  • .rpm または .deb インストール スクリプトもその一部を再利用できます
  • このパッケージは、root 権限を必要とせずにvirtualenv内にインストールでき、サーバーにインストールされている残りの Web アプリケーションと競合することはありません。

Deploying with Distributeは、読むのに適したリソースです。Flask (別の Web フレームワーク) に焦点を当てていますが、「Flask」を「Django」に置き換えるだけでうまくいきます :)

配布と展開に最適なもう 1 つの Python ツールはfabricで、配布に加えて (または必要に応じて使用せずに) 使用できます。ファブリックを使用すると、たとえば、アプリケーション (包括的な依存関係) を一度に N 台のサーバーにブートストラップしてインストールし、複数の開発、テスト、および運用サーバーを管理し、それらすべてを 1 つのコマンドで同時に更新できます。

この記事は、Fabric の使用を開始するのに役立つ場合があります: Fabric を使用したデプロイ

さらに、最新のソースを手動で取得して後でアプリケーションをインストールしたい人のために、 githubまたはbitbucketでリポジトリを公開する (または既存のリポジトリをミラーリングする) こともお勧めしますpython setup.py install。setup.py インストール スクリプトは、前に説明した配布の一部です。

于 2010-07-19T19:20:07.560 に答える
2

すでにpython 2.6djangoの RPM が利用可能です。そのため、少なくとも (比較的) 簡単に取得して RPM 経由でインストールできます。プロジェクト用の RPM を作成する場合、Distutilsを使用していくつかの詳細が書かれています。これは、spec ファイルで必要なものと、それを実現するために呼び出すものについて詳しく説明しています。

また、Creating Python RPMの StackOverflow で Python から RPM を作成することについても、少し詳しく説明されています。

経験上、Python 自体を RPM としてパッケージ化するのは最も厄介な作業です。そのため、既存のものを利用することを強くお勧めします。これが行われているのを見たいくつかのプログラムでは、継続的インテグレーション サーバーで setup.py bdist_rpm コマンドを実行する Makefile (ええ、古い学校) があり、そのビルドの結果として RPM が利用可能になり、すぐにCI サーバー。

于 2010-07-14T04:57:00.940 に答える