django生产部署

django生产部署

部署方式

https://docs.djangoproject.com/zh-hans/4.2/howto/deployment/

Django是一个需要Web服务器来运行的Web框架。然而由于大多数Web服务器不是用Python编写,我们需要一个接口来实现沟通。

Django现在支持两种接口:WSGI和ASGI。

  • WSGI 是 Python 的主要标准,用于网络服务器和应用程序之间的通信,但它只支持同步代码。
  • ASGI 是新兴的,对异步友好的让你的Django网页使用Python异步特性和已经开发的Django异步特性的标准。

Django 的主要部署的方式是 WSGI,它是 Web 服务器和 Web 应用的 Python 标准,也是所谓的同步服务和默认服务。

Django支持:

  • Gunicorn
  • uWSGI
  • Apache
  • Nginx

最后,在将你的应用程序部署到生产环境中之前,你应该执行一遍 deployment checklist 1 以确保你的配置是合适的

django+uwsgi+nginx

部署 nginx

  • yum 安装
# -y 安装过程提示选择全部为 "yes"
yum install -y nginx
# 默认安装到 /etc/nginx

部署 uwsgi

  • pip 安装
workon django的虚拟环境
pip3 install uwsgi

在django项目下创建 uwsgi.ini 文件,和manage.py同级

[uwsgi]
chdir = /usr/local/project/pycode/web03    //项目根目录
module = web03.wsgi:application     //  指定wsgi模块下的application对象
socket = 127.0.0.1:8000         //对本机8000端口提供服务
master = true                   //主进程

# 以上4个是核心配置项

#vhost = true          //多站模式
#no-site = true        //多站模式时不设置入口模块和文件
#workers = 2           //子进程数
#reload-mercy = 10
#vacuum = true         //退出、重启时清理文件
#max-requests = 1000
#limit-as = 512
#buffer-size = 30000
#pidfile = /var/run/uwsgi9090.pid    //pid文件,用于下脚本启动、停止该进程
daemonize = /usr/local/log/web03/run.log    // 日志文件
disable-logging = true   //不记录正常信息,只记录错误信息


配置项中以‘#’开头的都是被注释的项目,不起作用;
以双斜杠开头,表示注释;
chdir是你的项目根目录。我这里的项目名叫for_test;
moudule是你的入口wsgi模块,将for_test替换成你的项目名称;
socket是通信端口设置,和我一样就行;
master=True表示以主进程模式运行;
demonize是你的日志文件,会自动建立
disable-logging = true 表示不记录正常信息,只记录错误信息。否则你的日志可能很快就爆满了。
env: 指定DJANGO_SETTINGS_MODULE的值
home:可选的项目虚拟环境路径

修改django的settings配置

# 调试模式,关闭DEBUG
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

# 域名访问权限,允许全部
ALLOWED_HOSTS = ['*']

配置 nginx,关联 uwsgi

server {
    listen 80;

    listen [::]:80;

    server_name 本机ip;

    location / {
        include  uwsgi_params;
        uwsgi_pass  127.0.0.1:8000;  
    }

    location /static {
        alias /xxx/static;
    }
}

# 请将server_name改成你的实际IP。include uwsgi_params一定要一样。uwsgi_pass和你uWSGI配置中的socket要一样。location /static的alias改成你的实际情况,让静态文件得以部署

# 重启nginx
service nginx restart

启动服务

uwsgi --ini uwsgi.ini

pycharm上传项目到服务器

  1. pycharm专业版的 tools -> 点击Deployment -> 点击 Configuration
  2. 新增sftp配置,设置host,username,password,rootpath
  3. 在deployment界面设置mappings中的deployment path,项目会被上传到 root path + deployment path
  4. 右键项目选择 deployment,upload up to 指定Configuration

你可能感兴趣的:(Python,python,django)