本文发布于1119 天前,最后更新于612天前,其中的信息可能已经有所发展或是发生改变。
实现
模拟从windows开发环境,迁移项目至linux生产环境
前置条件
安装Django、uwsgi、Nginx
pip install uwsgi
uWSGI 以客户端-服务端模型运行。Web 服务器(例如 nginx,Apache)与一个 django-uwsgi
“worker” 进程交互,提供动态内容。
其他的安装不再赘述。
Django项目创建
- 创建虚拟环境
- 创建HelloWorld项目
django-admin startproject HelloWorld
- 创建requirements.txt文件
pip freeze > requirements.txt
- 迁移到服务器
uwsgi文件配置
[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
一些坑 : 文件权限要够,要不然一些文件无法创建将导致失败
可以通过查看日志来查错
Nginx配置
在/etc/nginx/conf.d
下创建.conf文件。
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
可以通过查看日志了解状态
目录结构
/www
/etc/nginx/conf.d
/var/log/nginx
运行效果
修改了hosts文件