私はPythonを初めて使用し、djangoでWebサイトを開発していますが、このWebサイトを公開する方法を知りたいです.Ubuntu 10.04 LTSを備えた半専用クラウドサーバーを所有しています.サーバーを開発するにはどのソフトウェアをインストールする必要がありますか?私も楽観的ですが、200 を超える同時アクセスを希望するか、Web サーバーを使用する必要があります。
1 に答える
複数の方法で実行できます。
- ある種のプロセススーパーバイザー内で裸のジャンゴを実行する
- リバース プロキシを使用して、FastCGI などの特定のプロトコルを介して要求を django にリダイレクトする
プロセススーパーバイザーでdjangoを実行する
特定のサービスが稼働していることを確認するために使用される複数のツールの 1 つがSupervisordです。それをインストールするには、あなたがする必要があるのはsudo apt-get install supervisord
.
インストールが成功/etc/supervisord/conf.d
すると、監視する各サービスのすべての構成ファイルを配置できるディレクトリが作成されているはずです。
Supervisord は何をしますか?
特に Supervisord は、設定で指定されたコマンドによって開始されたサービス プロセスの現在のステータスをチェックします。サービスがダウンしたことを検出すると、サービスの再起動を試みます。短時間に何度も失敗すると、サービスにエラーがあると見なされ、問題の原因を自分で調べる必要があります。
構成ファイルの例
[program:django-webserver]
directory = /user/foo/my-project
user = foo
command = /user/foo/.virtualenvs/my-project/bin/python /user/foo/my-project/manage.py runserver
stdout_logfile = /user/foo/my-project/logs/supervisord/webserver.out.log
stderr_logfile = /user/foo/my-project/logs/supervisord/webserver.err.log
autostart = true
autorestart = true
environment = DJANGO_SETTINGS_MODULE="myproject.settings.production"
機械の運転
/etc/supervisord/conf.d/
上記の構成をディレクトリ (ファイルなど) に貼り付けた後、コマンドmyproject.conf
を使用して現在のサービスの状態を確認できますsudo supervisorctl
。含まれている構成ファイルから構成されたすべてのプログラムのリストとそのステータスを取得します。設定をリロードするにはreload
、supervisorctl を入力した後に表示されるプロンプトを入力する必要があります。
Supervisord が新しい構成ファイルをロードしたことを確認したら、start django-webserver
then と入力してスーパーバイザーに django を実行させ、それを処理することができます。これは、supervisord 構成ファイルdjango-webserver
の句で渡した名前であることに注意してください。[program:<name>]
リバース プロキシを使用して django を実行する
私の意見では、ユーザーフレンドリーなリバース プロキシの 1 つはnginxです。nginx のようなリバース プロキシを使用する必要があるのはなぜですか? ロードバランサーをセットアップし、ファイルをより効率的に提供できます。
Nginx は と入力してインストールできますsudo apt-get install nginx
。あなたとnginx
話すには、django-webserver
このような構成ファイルをディレクトリに作成する必要があります/etc/nginx/sites-available
。
server {
listen 80;
access_log /home/foo/myproject/nginx/access.log;
error_log /home/foo/myproject/nginx/error.log;
location /statics/ {
gzip on;
root /home/foo/myproject/collected_static;
rewrite ^/statics/(.*)$ /$1 break;
autoindex off;
expires 60d;
}
location / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
}
flup
django が nginx と通信できるようにするには、次を使用してインストールする必要がありますpip install flup
(別の方法としては、gunicornなどがあります)。flup をインストールしたら、次のコマンドで django サーバーが実行されていることを確認します。
python manage.py runfcgi host=127.0.0.1 port=8000 daemonize=false
バックグラウンドデーモンを作成しないため、daemonize=false
スイッチは重要です。
django を起動して実行したら、あとは実際の nginx サイトを外の世界で利用できるようにすることだけです: 作成したばかりの nginx 構成へのソフト リンクを/etc/nginx/sites-available
ディレクトリ内に/etc/nginx/sites-enabled
次のように作成します。
cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/myproject.conf myproject.conf
これらの手順が完了したら、nginx を使用して再起動しますsudo /etc/init.d/nginx restart
。
nginx と通信する django プロセスをスーパーバイザーに任せるために、両方のステップを組み合わせるのが良い考えです。