CentOS 5を搭載した「バトル」サーバーにDjangoをインストールして設定します

私はDjango でプログラミング言語百科事典をしています 。これについては、すでにHabréで書いています 。 サイトの作業中に、パフォーマンスと安定性を高めるには専用のサーバーが必要であることがわかりました。 これまでのところ、1.8 GHzプロセッサと512 MBのメモリを搭載した安価なサーバーを使用しました。



この記事では、Apacheのmod_pythonとmemcachedおよび静的ファイルのlighttpdキャッシュを使用して、このサーバーにDjangoをインストールおよび構成する方法について説明します。





そのため、CentOS 5を新たにインストールし、Django(または複数のサイト)でサイトをホストしたいと考えています。



このために何をインストールする必要がありますか?



  1. 実際にジャンゴ

  2. MySQL Python

  3. mod_python

  4. memcached

  5. 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 subversion
svnですべてのファイルを受け取った後、Pythonのsite-packagesディレクトリにDjangoへのシンボリックリンクを作成する必要があります。

  ln -s `pwd` / django-trunk / django /usr/lib/python2.4/site-packages/django
djangoディレクトリー内のすべての親ディレクトリーに正しい許可(httpdユーザーの読み取りアクセス、通常はchmod 755)があることを確認してください。



また、svnを使用したDjangoのインストールについては、 公式のDjangoドキュメントで説明されています



Djangoをインストールした後、プロジェクトのファイルをサーバーにコピーする必要があります(svnまたはsshまたはftpを使用してコピーします。これらのファイルの所有者となるシステムに別のユーザーを作成することも価値があります)およびデータベースダンプを設定ファイルのデータベース関連の設定を調整します.py(MySQLが既にインストールおよび設定され、データベースとユーザーが作成され、すべてのデータが配置されていることを意味します-これらはこの記事の範囲をはるかに超えています)。



プロジェクトディレクトリからDjango開発サーバーを起動してみてください

  python manage.py runserver 127.0.0.1:8000
CentOS 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に感謝します):





server.document-rootを「/ var / www / html /」に変更し、プロジェクトのメディアディレクトリを指すシンボリックリンク「/var/www/html/media.yourdomain.com/」を作成します。





そして最後に、いくつかのパフォーマンスのヒント:




All Articles