Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用python部署网站_Python_Django_Webserver - Fatal编程技术网

如何用python部署网站

如何用python部署网站,python,django,webserver,Python,Django,Webserver,我是python新手,我正在django开发一个网站,但我想知道如何发布这个网站,我拥有一个带有Ubuntu 10.04 LTS的半专用云服务器,我应该安装哪个软件来开发服务器,我也很乐观,我希望有200多个同时访问它,或者必须使用Web服务器,而且很好…您可以通过多种方式完成: 在某种流程管理器中运行裸django 使用反向代理通过FastCGI等特定协议将请求重定向到django 与流程主管一起运行django 用于确保特定服务启动的多种工具之一是。要安装它,您只需sudo apt ge

我是python新手,我正在django开发一个网站,但我想知道如何发布这个网站,我拥有一个带有Ubuntu 10.04 LTS的半专用云服务器,我应该安装哪个软件来开发服务器,我也很乐观,我希望有200多个同时访问它,或者必须使用Web服务器,而且很好…

您可以通过多种方式完成:

  • 在某种流程管理器中运行裸django
  • 使用反向代理通过FastCGI等特定协议将请求重定向到django
与流程主管一起运行django 用于确保特定服务启动的多种工具之一是。要安装它,您只需
sudo apt get install supervisords

成功安装后,您应该已经创建了一个
/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已加载新的配置文件后,您可以键入
启动django webserver
,然后让supervisor运行django并处理它。请注意,
django-webserver
是您在SupervisordConfiguration文件中的
[program:]
子句中传递的名称

使用反向代理运行django 在我看来,一个用户友好的反向代理是。为什么要使用像nginx这样的反向代理?它允许您设置负载平衡器,更高效地提供文件服务

可以通过键入
sudo apt get install Nginx
安装Nginx。要使
nginx
与您的
django Web服务器
对话,您需要在
/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通信,您需要使用
pip install flup
安装
。安装flup后,请确保django服务器正在使用以下命令运行:
python manage.py runfcgi host=127.0.0.1 port=8000 daemonize=false

daemonize=false
开关很重要,因为它不会创建后台守护程序

django启动并运行后,剩下的唯一一件事就是向外部世界提供实际的nginx站点:在
/etc/nginx/sites available
中创建一个软链接,指向刚刚创建的nginx config,如下所示:

cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/myproject.conf myproject.conf
完成这些步骤后,使用
sudo/etc/init.d/nginx restart
重新启动nginx,瞧


最好将这两个步骤结合起来,让主管负责django流程,该流程将与nginx进行沟通。

:o我印象深刻!我要深深地感谢你的帮助!!不幸的是,我还不能付诸实践,但我肯定认为这会奏效!非常感谢。