Django プロジェクトを開発し、クラウド VΜ にアップロードしました。現在、8080ポートからアクセスできます。
python manage.py runserver 0.0.0.0:8080
8080 ポートなしで URL を入力すると、「動作します」ページが表示されます。Django プロジェクトをデフォルトで 80 ポートで実行するように設定するにはどうすればよいですか?
Ubuntu 12.04 サーバーを使用しています
Django プロジェクトを開発し、クラウド VΜ にアップロードしました。現在、8080ポートからアクセスできます。
python manage.py runserver 0.0.0.0:8080
8080 ポートなしで URL を入力すると、「動作します」ページが表示されます。Django プロジェクトをデフォルトで 80 ポートで実行するように設定するにはどうすればよいですか?
Ubuntu 12.04 サーバーを使用しています
ドキュメントが言うようにrunserver
、展開サーバーとしてのものではありません。また、ルートとして実行しない限り、おそらくポート 80 で起動できないことにも言及しています。
/etc/apache2/sites-enabled に配置する必要があるファイルの種類は次のとおりです。その中のパスを調整する必要があります。また、apt-get を介して実行できる mod_wsgi をロードする必要があります。
<VirtualHost 192.168.1.14:80>
ServerAdmin youremail@whatever.com
ServerName www.whatever.com
ServerAlias whatever.com
Alias /robots.txt /home/dimitris/Python/mysite/site_media/robots.txt
Alias /favicon.ico /home/dimitris/Python/mysite/site_media/favicon.png
Alias /static/ /home/dimitris/Python/mysite/site_media/static
WSGIDaemonProcess mysite user=dimitris processes=1 threads=5
WSGIProcessGroup mysite
WSGIScriptAlias / /home/dimitris/Python/mysite/deploy/mysqite_wsgi.py
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel debug
ErrorLog ${APACHE_LOG_DIR}/mysite.error.log
CustomLog ${APACHE_LOG_DIR}/mysite.access.log combined
ServerSignature Off
</VirtualHost>
これのほとんどは、virtualenv で実行していることを前提としています。つまり、実行するには wsgi ファイルが必要です。上記のファイルは、次のような「wsgi」ファイルを実行するように apache を設定します。
import os
from os.path import abspath, dirname, join
import sys
with open("/tmp/mysite.sys.path", "w") as f:
for i in sys.path:
f.write(i+"\n")
#redirect sys.stdout to sys.stderr for libraries that use
#print statements for optional import exceptions.
sys.stdout = sys.stderr
sys.path.insert(0, abspath(join(dirname(__file__), "../../")))
sys.path.insert(0, abspath(join(dirname(__file__), "../../lib/python2.7/site-packages/")))
from django.conf import settings
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
mod_wsgi で、この 1 つのファイルを開いて実行します。application は Web サーバーからの要求を待つ部分であり、残りは runserver と同じように動作しますが、マルチプロセスおよびマルチスレッドにできる点が異なります。