Django——配置服务器上线
使用UWSGI和NGINX配置项目上线
首先你得有一个拿得出手的项目
其次,购买了域名,也备案成功了
将settings.py中的DEBUG设置为False
配置Uwsgi
在项目(哪里都可以)中创建一个test.py文件
这里推荐创建一个文件夹方便管理(deploy)
# test.py def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"] # python3
运行uwsgi
uwsgi --http :8000 --wsgi-file test.py
# 测试
curl 127.0.0.1:8000
或者直接在浏览器上访问服务器IP(IP:8000)
如果出现了Hello World,则说明uwsgi没有问题。
现在来设置uwsgi运行项目的配置
[uwsgi] # 使用nginx连接时使用,Django程序所在服务器地址 # 选择内网IP和端口(ip a查看) socket=172.19.87.124:8000 # 项目根目录(pwd) chdir=/home/wjh/project/MyBlog #项目中wsgi.py文件的相对目录(pwd) wsgi-file=MyBlog/wsgi.py # 进程数 processes=1 # 线程数 threads=1 # uwsgi服务器的角色 master=True # 存放进程编号的文件 pidfile=uwsgi.pid # 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。以前的runserver是依赖终端的(pwd)
# 再deploy下新建文件夹logs,在logs中新建空文件uwsgi.log daemonize=/home/wjh/project/MyBlog/deploy/logs/uwsgi.log # 指定虚拟环境所在目录,不能填相对目录(ls -a) virtualenv=/home/wjh/.virtualenvs/Myblogs
启动uwsgi
# 启动uwsgi uwsgi --ini uwsgi_conf.ini & # 停止uwsgi uwsgi --stop uwsgi.pid
配置Nginx
需要安装docker,没有可以看我前面的教程
服务器切换到/etc/nginx/conf.d目录,新建一个nginx的配置文件,名字随意,.conf后缀(nginx_MyBlogs.conf)
upstream myblogs { # 此处为uwsgi运行的ip地址和端口号(内网IP) server 172.19.87.124:8000; } server { # 监听端口 listen 80; # 服务器域名或者ip地址(外网IP 域名) server_name 101.132.181.155 .pywjh.xin; # 编码 charset utf-8; # 文件最大上传大小 client_max_body_size 75M; # 媒体文件(指定docker的media) location /media { alias /media; } # 静态文件(指定docker的static) location /static { alias /static; } # 主目录 location / { uwsgi_pass myblogs; #(名字与前面对应) include /etc/nginx/uwsgi_params; } }
修改nginx.conf文件(@之前的名字)
# 修改sudo vim /etc/nginx/nginx.conf # 第一行开头修改用户,将www-data改为你当前的用户 user username;
然后运行docker容器
# 冒号之前的是服务器的路径,之后的是docker容器中的路径 docker run --name nginx-server -p 80:80 -v /home/wjh/project/MyBlog/media:/media -v /home/wjh/project/MyBlog/static:/static -v /home/wjh/project/MyBlog/deploy/nginx_conf:/etc/nginx/conf.d -d nginx
网站就可以访问了