この記事では、Apacheのmod_pythonとmemcachedおよび静的ファイルのlighttpdキャッシュを使用して、このサーバーにDjangoをインストールおよび構成する方法について説明します。
そのため、CentOS 5を新たにインストールし、Django(または複数のサイト)でサイトをホストしたいと考えています。
このために何をインストールする必要がありますか?
- 実際にジャンゴ
- MySQL Python
- mod_python
- memcached
- lighttpd
Django自体のインストールを除くすべてのステップはオプションです(たとえば、mod_pythonおよびPostgreSQLの代わりにfcgiでDjangoを使用するか、MySQLの代わりに別のDBMSを使用できます)が、ステップ1から3が最もよく使用され、4から5は生産性を向上させます。
この記事は主にCentOS向けですが、ある程度は他のLinuxディストリビューションにも適しています。
セキュリティに関する注意:これは新しくインストールされたシステムであるため、既に動作しているものを壊すことを恐れず、rootとして作業できます。 ただし、もちろん、特権のないユーザーの権限で作業し、管理者特権を必要とするコマンドには「sudo」を使用する方が良いでしょう。
さあ、始めましょう。
実際にジャンゴ
ほとんどの場合、「リリース」ではなく、Djangoの最新のsvnバージョンをインストールする必要があります。 これまでのところ、「公式リリース」は古すぎて、多くの便利な機能が欠けています(たとえば、Unicodeや自動エスケープのサポート)。
インストールするには、コマンドラインを入力します
svn co http://code.djangoproject.com/svn/django/trunk/ django-trunkしかし、最初にsvnをインストールする必要があります
yum install subversionsvnですべてのファイルを受け取った後、Pythonのsite-packagesディレクトリにDjangoへのシンボリックリンクを作成する必要があります。
ln -s `pwd` / django-trunk / django /usr/lib/python2.4/site-packages/djangodjangoディレクトリー内のすべての親ディレクトリーに正しい許可(httpdユーザーの読み取りアクセス、通常はchmod 755)があることを確認してください。
また、svnを使用したDjangoのインストールについては、 公式のDjangoドキュメントで説明されています 。
Djangoをインストールした後、プロジェクトのファイルをサーバーにコピーする必要があります(svnまたはsshまたはftpを使用してコピーします。これらのファイルの所有者となるシステムに別のユーザーを作成することも価値があります)およびデータベースダンプを設定ファイルのデータベース関連の設定を調整します.py(MySQLが既にインストールおよび設定され、データベースとユーザーが作成され、すべてのデータが配置されていることを意味します-これらはこの記事の範囲をはるかに超えています)。
プロジェクトディレクトリからDjango開発サーバーを起動してみてください
python manage.py runserver 127.0.0.1:8000CentOS 5では、「MySQLdbモジュールの読み込みエラー」というエラーメッセージが表示されます。
CentOSディストリビューションのMySQL-pythonのバージョンは古すぎてDjangoの最新のsvnバージョンを実行できないため、ソースからビルドする必要があります。
MySQL Python
cd / usr / local / src wget http://garr.dl.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.2.tar.gz tar xvzf MySQL-python-1.2.2.tar.gz cd MySQL-python-1.2.2
MySQL-pythonをビルドするには、gcc、python-devel、およびmysql-develパッケージが必要です。
yum install gcc yum install python-devel yum install mysql-devel cd /usr/local/src/MySQL-python-1.2.2 python setup.pyビルド python setup.pyインストール完了、MySQL-pythonは.eggファイルとしてsite-packagesディレクトリにインストールされます。
python manage.py runserver 127.0.0.1:8000を再度実行して、エラーを確認してください。 たとえば、プロジェクトでImageFieldを使用しているため、Python Imaging Libraryをインストールする必要があります(yum install python-imaging)。
エラーがない場合は、runserverコマンドの127.0.0.1をサーバーのIPアドレスに変更し、ブラウザーを使用してサイトを確認する必要がありますが、このためにはCentOSファイアウォールでポート8000を開くか、ファイアウォールを一時的にオフにする必要があります(または一時的にApacheをオフにしてDjangoを開始することができます)ポート80の開発サーバー)。
エラーがなければ、Django開発サーバーの電源を切り、Apacheを構成します。
mod_python
Djangoで動作するようにmod_pythonでApacheを設定するのは簡単です。 公式のDjangoドキュメントの指示に従ってください。
注:MySQL-pythonはeggパッケージとしてインストールされるため、.eggをキャッシュするための一時ディレクトリを作成し(パーミッションを777に設定)、httpd.confでそれを指すことが重要です。
<場所「/」> ... SetEnv PYTHON_EGG_CACHE / var / tmp / egg </場所>また、httpd.confを変更した後、Apacheを再起動することを忘れないでください。
/etc/init.d/httpd restartこれで、サイトは通常のhttpポートでApacheを介して動作するはずです。 ブラウザで確認してください。
memcached
memcachedキャッシュを有効にすることは、パフォーマンスを向上させるために非常に重要です。 残念ながら、memcachedはCentOSリポジトリでは利用できないため、ソースからコンパイルする必要があります。 記事のこのセクションは、 このHOWTOに一部基づいています。
まず、libeventをインストールする必要があります。
cd / usr / local / src wget http://monkey.org/~provos/libevent-1.4.2-rc.tar.gz tar xvzf libevent-1.4.2-rc.tar.gz cd libevent-1.4.2-rc ./configure 作る インストールする vi /etc/ld.so.conf.d/libevent.conf ##行を追加します: / usr / local / lib / ldconfig -v次に、memcached自体:
cd / usr / local / src wget http://danga.com/memcached/dist/memcached-1.2.5.tar.gz tar zxvf memcached-1.2.5.tar.gz cd memcached-1.2.5 ./configure 作る インストールする cpスクリプト/ memcached.sysv /etc/init.d/memcached ln / usr / local / bin / memcached / usr / bin / memcached /etc/init.d/memcached start chkconfig memcached on最後に、libmemcacheとcmemcache(libmemcacheのPython拡張機能)をインストールする必要があります。
cd / usr / local / src / wget http://people.freebsd.org/~seanc/libmemcache/libmemcache-1.4.0.rc2.tar.bz2 bunzip2 libmemcache-1.4.0.rc2.tar.bz2 tar xf libmemcache-1.4.0.rc2.tar cd libmemcache-1.4.0.rc2 ./configure 作る インストールする cd / usr / local / src / wget http://gijsbert.org/downloads/cmemcache/cmemcache-0.91.tar.bz2 bunzip2 cmemcache-0.91.tar.bz2 tar xf cmemcache-0.91.tar cd cmemcache-0.91 python setup.pyインストールプロジェクトのsettings.pyでmemcachedキャッシュを有効にします
CACHE_BACKEND = 'memcached://127.0.0.1:11211 /'(詳細が必要な場合は、 公式のDjangoドキュメントを参照してください)、Apacheを再起動します。
さらにパフォーマンスを上げるには、Apacheを使用せず、リソースをあまり消費しないサーバーであるlighhtpdを静的ファイルに指定する必要があります。
lighttpd
繰り返しますが、ソースからインストールします。
cd / usr / local / src wget http://www.lighttpd.net/download/lighttpd-1.4.19.tar.bz2 bunzip2 lighttpd-1.4.19.tar.bz2 tar xf lighttpd-1.4.19.tar cd lighttpd-1.4.19 yum install glib2-devel openssl-devel pcre-devel bzip2-devel gzip-devel ./configure 作る インストールする cp doc / rc.lighttpd.redhat /etc/init.d/lighttpd chkconfig lighttpd on mkdir / etc / lighttpd cp doc / lighttpd.conf / etc / lighttpd /ここで、静的ファイルが(ポート80で)lighttpdに渡され、残りの要求がポート81でApacheによって処理されるようにApacheとlighttpdを構成する必要があります(このソリューションのnolancaudill.comに感謝します):
- ポート81でApacheを構成:検索
80をリッスンし、リッスン127.0.0.1:81に置き換えます。 また、すべてのVirtualHostディレクティブのポート番号を忘れずに変更してください。 Apacheを再起動します。
- /etc/lighttpd/lighttpd.confを編集します。 モジュール 'mod_alias'および 'mod_proxy'からコメントを削除し、行を追加します(必要に応じて修正します):
$ HTTP ["host"] == "yourdomain.com" { #ここでマッピングしています/メディア/管理メディア用 #および/ static /標準media_urlの場合 alias.url =( "/ media /" => "/usr/lib/python2.4/site-packages/django/contrib/admin/media/"、 "/ static /" => "/var/www/html/media.yourdomain.com/"、 ) $ HTTP ["url"]!〜 "^ /(静的|メディア)/" { proxy.server =( "" =>(( "host" => "127.0.0.1"、 "port" => 81))) } }
server.document-rootを「/ var / www / html /」に変更し、プロジェクトのメディアディレクトリを指すシンボリックリンク「/var/www/html/media.yourdomain.com/」を作成します。
- lighttpdログファイル用のディレクトリを作成します。
mkdir / var / log / lighttpd /
- /etc/init.d/lighttpdの別の小さな編集:/ usr / sbin / lighttpdから/ usr / local / sbin / lighttpdに変更します。 lighttpdを起動します。
/etc/init.d/lighttpd start
そして最後に、いくつかのパフォーマンスのヒント:
- 未使用のサービスをすべて無効にする
MySQLパラメーターを構成します(たとえば、 tuning-primer.shスクリプトを使用できます)
httpd.confでKeepAliveをオフにする
Jacob Kaplan-Moss(Djangoの作成者の1人)からのその他のヒント
興味のある方は、同じように、 My Djangoのブログに書き続けるつもりです。