top'eのDjangoプロジェクトを監視します

この記事では、一番上のサーバーで各Djangoプロジェクトからサーバーの負荷を確認できるようにDjangoを構成する方法について説明します。

1-DjangoをポートからFreeBSDにインストールする


サーバーにFreeBSD 8.0があります。MySQL、Python2.6、nginxなどのあらゆる種類のユーティリティが既にインストールされています。 Djangoをインストールする最も簡単な方法は、ポートの単純で平凡なインストールを選択したことです。
cd /usr/ports/www/py-django
make install clean

インストール中に、選択します
[X] POSTGRESQL PostgreSQL support
[X] MYSQL MySQL support
[X] FASTCGI FastCGI support

Django 1.3.1は/usr/local/lib/python2.6/site-packages/djangoにインストールされており、すぐに使用できます。

2-Djangoの準備


専門家は、プロジェクトを別のディレクトリに保存することをお勧めします(たとえば、/ wwwの隣の/ dataにユーザーがいます)。 私たちはプロの声に耳を傾け、ホスティングのユーザーのためにプロジェクトを投入します-それは悲鳴を上げています。
Djangoプロジェクトは次のパスに沿って実行されます-/ home / hostalot / data / django
このディレクトリでDjangoにシンボリックリンクを作成し、チェックします。
cd /home/hostalot/data/django
ln -s /usr/local/lib/python2.6/site-packages/django django
python
>>> import django
>>> exit()

3-新しいプロジェクトを作成する


サイトhostalot.ruのDjangoプロジェクトを作成しましょう。ポイントは使用できないため、アンダースコア-hostalot_ruに置き換えます。
同時に、その瞬間を見逃して、静的変数を含むディレクトリを作成します。これは、その後nginxによって直接駆動されます(詳細は以下を参照)。
python django/bin/django-admin.py startproject hostalot_ru
mkdir /home/hostalot/data/django/hostalot_ru/media

新しいプロジェクトの設定ファイル(/home/hostalot/data/django/hostalot_ru/settings.py)で、設定を必ず編集します。

4-Djangoプロジェクトの実行


実行可能ファイル/ usr / local / bin / hostalot_ruを作成します
#!/usr/local/bin/bash
exec -a hostalot_ru /usr/local/bin/python $1 $2 $3 $4 $5 $6 $7

次に、/ usr / local / etc / rc.d / hostalot_ruを作成します
#!/usr/local/bin/bash
# Replace these three settings.
. /etc/rc.subr
name=hostalot_ru # your project name
rcvar=`set_rcvar`
load_rc_config $name
PROJDIR="/home/hostalot/data/django/$name"
PIDFILE="$PROJDIR/$name.pid"
HOST="127.0.0.1" # local
PORT="9010" # may be any foreach 9010-9900
METHOD="threaded" # may be "pre fork"
command=/usr/local/bin/$name
command_args=" $PROJDIR/manage.py runfcgi method=$METHOD host=$HOST port=$PORT pidfile=$PIDFILE"
run_rc_command "$1"

これらのファイルに実行許可を与えることを忘れないでください:
chmod 555 /usr/local/bin/hostalot_ru
chmod 555 /usr/local/etc/rc.d/hostalot_ru

プロジェクトの自動実行を/etc/rc.confに追加します。
hostalot_ru_enable="YES"

Djangoのデータベースを同期し、プロジェクトを実行する選択されたデーモンを開始します。
cd /home/hostalot/data/django/hostalot_ru
python ./manage.py syncdb
/usr/local/etc/rc.d/hostalot_ru restart

Nginx設定


Django / usr / local / etc / nginx / django_fastcgiのnginx fastcgi設定でファイルを作成します。
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_ruTHOD $request_ruthod;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_SOFTWARE "nginx";
fastcgi_param GATEWAY_INTERFACE "CGI/1.1";

ドメイン構成ファイル/usr/local/etc/nginx/confs/hostalot_ru.confを作成します。
server {
listen 193.106.172.16:80;
server_name hostalot.ru;
set $proot "/home/hostalot/data/django/hostalot_ru/media";
location / {
fastcgi_pass 127.0.0.1:9010;
include django_fastcgi;
client_max_body_size 120m;
access_log main;
error_log main;
root $proot;
}
location ~* ^/.+\.(htm|swf|flv|xml|ico|jpg|jpeg|js|css|png|gif|mpg|avi|mp3|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ {
root $proot;
limit_rate 2000K;
access_log off;
}
}

nginxを再起動します。
/usr/local/etc/rc.d/nginx restart


合計:各Djangoプロジェクトには独自のデーモンがあり、上部にサフィックスが付いています。すべての統計はnginxによってキャッシュされます。


Source: https://habr.com/ru/post/J134208/


All Articles