使用虚拟环境部署,Python3,django==1.11.11 , uwsgi ,nginx
部署时使用的是宝塔平台 (公司用这个平台 ),服务器是 阿里云
先放上配置文件 uwsgi
[uwsgi]
#使用nginx连接时使用,Django程序所在服务器地址
;socket=120.0.0.1:8069
#直接做web服务器使用,Django程序所在服务器地址
http=127.0.0.1:8069
#项目目录
chdir=/www/server/kolapi/kolsite
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=kolsite/wsgi.py
# 进程数
processes=4
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=/root/.virtualenvs/kolsite_py3
nginx 配置文件 (宝塔平台 )
server
{
listen 80;
server_name aaa.kol.xyz;
#index index.php index.html index.htm default.php default.htm default.html;
root /www/server/kolapi/kolsite/;
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
#PROXY-START
location ~ /purge(/.*) {
proxy_cache_purge cache_one $host$request_uri$is_args$args;
#access_log /www/wwwlogs/api.kol.xyz_purge_cache.log;
}
location /
{
proxy_pass http://127.0.0.1:8069;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
#持久化连接相关配置
#proxy_connect_timeout 30s;
#proxy_read_timeout 86400s;
#proxy_send_timeout 30s;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "upgrade";
add_header X-Cache $upstream_cache_status;
expires 12h;
}
location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_pass http://127.0.0.1:8069;
}
# 静态文件
location ~/static/
{
root /www/server/kolapi/kolsite/;
break;
}
# 静态文件
location ~ .*\.(html|htm|png|gif|jpeg|jpg|bmp|js|css)?$
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_pass http://127.0.0.1:8069;
#缓存相关配置
#proxy_cache cache_one;
#proxy_cache_key $host$request_uri$is_args$args;
#proxy_cache_valid 200 304 301 302 1h;
expires 24h;
}
#PROXY-END
include enable-php-00.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/api.kol.xyz.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
access_log /www/wwwlogs/api.kol.xyz.log;
error_log /www/wwwlogs/api.kol.xyz.error.log;
}
首先 django 部署前需要收集静态文件 (前后端分离 项目)
设置 静态文件收集后存放的目录 js css 图片
STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)),static')
终端输入收集静态文件命令
python manage.py collectstatic
将项目文件通过 ftp 软件传到 服务器中 (然后第一个坑来了:拿到root账号的我将项目文件传到了root 目录下 ,)通过教程 一顿操作,将项目部署到了root 目录下,然后项目运行ok 但是 js css 等静态文件 访问 403 ,意思是没有权限,what? 又百度 了一番,网站不能部署在root 目录下 nginx 进到 root 中 但是 是没有权限读取文件的 ,可以将静态文件部署到非root目录, 也可以在nginx 配置文件中 写user root 表示 当前用户是root 但是考虑到 部署在root下不安全 。于是 将项目部署在 另一个文件中,此时 第二个坑来了 。作为小白的我 nginx 配置文件不会写。部署上去的项目 静态文件 找不到。404;
以下为 正确的静态文件配置 nginx 反向代理
# 静态文件
location ~/static/
{
root /www/server/kolapi/kolsite/;
break;
}
# 静态文件
在写静态文件 路由规则时有查看过教程,知道有 root和 alias 但是 不知道是我看的教程有误还是 我没搞清楚 这个坑搞得我头皮发麻。
后续要好好 研究下 nginx了