实现

模拟从windows开发环境,迁移项目至linux生产环境

前置条件

安装Django、uwsgi、Nginx

1
pip install uwsgi

uWSGI 以客户端-服务端模型运行。Web 服务器(例如 nginx,Apache)与一个 django-uwsgi “worker” 进程交互,提供动态内容。

其他的安装不再赘述。

Django项目创建

  • 创建虚拟环境

  • 创建HelloWorld项目

1
django-admin startproject HelloWorld
  • 创建requirements.txt文件
1
pip freeze > requirements.txt
  • 迁移到服务器

uwsgi文件配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[uwsgi]
socket = /www/wwwroot/test1/test1.sock
chdir = /www/wwwroot/test1
module = HelloWorld.wsgi
home = /www/wwwroot/test1/venv
pidfile = /www/pid/uwsgi.pid
daemonize = /www/wwwlogs/uwsgi/test1.log
master = true
processes = 5
threads = 10
#指定socket协议,运行django,只能与nginx结合时使用
socket = 0.0.0.0:8000
#如果你没用nginx,只想自己启动一个http界面,用这个
# http = 0.0.0.0:8000
chmod-socket = 666
vacuum = true
  • 启动命令uwsgi --ini uwsgi.ini

  • 杀死进程命令pkill -f uwsgi -9

  • 重启uwsgi命令uwsgi --reload /www/pid/uwsgi.pid

一些坑 : 文件权限要够,要不然一些文件无法创建将导致失败

image-20211017172228810

可以通过查看日志来查错

image-20211017172314519

Nginx配置

/etc/nginx/conf.d下创建.conf文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 80; # 我要监听那个端口
server_name www.test1.com; # 你访问的路径前面的url名称ip地址也可以
error_log /var/log/nginx/error.log; #错误日志定义等级,[ debug | info | notice | warn | error | crit ]
access_log /var/log/nginx/access.log; # Nginx日志配置
charset utf-8; # Nginx编码
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型

# 指定项目路径uwsgi
location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
uwsgi_pass unix:///www/wwwroot/test1/test1.sock;
}

# 指定静态文件路径
location /static/ {
alias /www/wwwroot/test1/static/;
}
}

其中uwsgi_pass的内容与上面uwsgi对应。这个是用来通信的。

重启Nginx命令:service nginx restart

可以通过查看日志了解状态

image-20211017172741494

image-20211017172803352

目录结构

/www

image-20211017172901570

/etc/nginx/conf.d

image-20211017172951218

/var/log/nginx

image-20211017173041068

运行效果

修改了hosts文件image-20211017173219560

image-20211017173137056