我是python的新手,我正在django开发一个网站,但是想知道如何发布这个网站,我拥有一个带有Ubuntu 10.04 LTS的半专用云服务器,我应该安装哪个软件来开发一个服务器,我也很乐观,我希望有200多个同时访问它,或者必须使用网络服务器和好...
答案 0 :(得分:3)
你可以采取多种方式:
用于确保特定服务启动的多种工具之一是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
命令查看当前的服务状态。您将从包含的配置文件中获取所有已配置程序的列表及其状态。要重新加载配置,您应该在输入supervisorctl后出现的提示中键入reload
。
确保supervisord已加载新配置文件后,您可以键入start django-webserver
然后让主管运行django并处理它。请注意,django-webserver
是您在supervisord配置文件的[program:<name>]
子句中传递的名称。
在我看来,用户友好的反向代理之一是nginx。为什么要使用像nginx这样的反向代理?它允许您设置负载均衡器,更有效地提供文件等。
可以通过键入sudo apt-get install nginx
来安装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;
}
}
为了让您的django能够与nginx进行通信,您需要使用flup
安装pip install flup
(其他替代方法是gunicorn)。安装了flup之后,请确保您的django服务器正在运行以下命令:
python manage.py runfcgi host=127.0.0.1 port=8000 daemonize=false
daemonize=false
开关非常重要,因为它不会创建后台守护程序。
随着django的启动和运行,剩下要做的唯一事情就是让外部世界可以使用实际的nginx站点:在/etc/nginx/sites-available
目录内的/etc/nginx/sites-enabled
目录内建立一个刚创建的nginx配置的软链接像这样:
cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/myproject.conf myproject.conf
完成这些步骤后,使用sudo /etc/init.d/nginx restart
重新启动nginx并瞧。
将两个步骤结合起来让主管处理将与nginx进行通信的django进程是一个好主意。