在VPS上通过python manage.py runserver部署Django到生产环境

14 投票
2 回答
12725 浏览
提问于 2025-04-18 03:26

我买了一个虚拟专用服务器(VPS)来运行我的Django应用。之前我从来没有部署过Django或者其他任何应用。我看了一些关于如何用Apache和WSGI部署Django的教程,还有一些其他的选项,比如Gunicorn和Nginx。对我来说,这些内容都让人感到很沮丧,也很难理解。我在想,如果我把调试模式改成关闭,创建一个数据库,连接上去,然后直接运行命令python manage.py runserver my-ip,这样部署我的应用会怎么样?这样做算不算不好的做法呢?

2 个回答

3

不要在生产环境中使用开发服务器。就是不要。

至少要用gunicorn来提供服务:

$ pip install gunicorn
$ cd your_project
$ gunicorn project.wsgi  # gunicorn now runs locally on port 8000

并且要用nginx(或者apache)作为反向代理:

server {
    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

部署Django(就像其他任何应用一样)是一个独立的领域,掌握它需要时间。但绝对不要在生产环境中运行开发服务器。

6

学习如何部署一个Django项目其实很简单。

首先,你需要知道如何在Ubuntu上安装Apachemod_wsgi

sudo apt-get install apache2 libapache2-mod-wsgi

或者在Fedora(红帽系统)上安装(不需要测试)。

yum install httpd mod_wsgi

接下来,你需要了解如何将Apache2和你的Django项目关联起来。

<VirtualHost *:80>
    ServerName example.com
    ServerAdmin example@example.com

    Alias /media/ /home/tu/blog/media/

    <Directory /home/tu/blog/media>
        Require all granted
    </Directory>

    WSGIScriptAlias / /home/tu/blog/blog/wsgi.py

    <Directory /path/to/django/project/wsgifile>
    <Files wsgi.py>
        Require all granted
    </Files>
    </Directory>
</VirtualHost>

这里的WSGIScriptAlias就是用来把Apache2的配置和你的Django项目连接起来的。

在Django的wsgi.py文件里,你会看到project.settings被包含在内,这就是它的工作原理。

下面的内容可能会让你更容易理解它是怎么工作的:

*.conf --> wsgi.py --> settings.py --> urls.py 和 apps

你只需要在谷歌上搜索ubuntu django server mod_wsgi,就能自己学习了!

撰写回答