这篇文章比较年轻,可能仅仅适合满足这些条件的配置。但是仍然可以提供参考。
Centos用户,或者您在配置过程中出现问题可以左转:
https://blog.youkuaiyun.com/weixin_42271658/article/details/81296999
2018/6/8
终于配置好了!
以阿里云为例 服务器系统为 ubuntu 16.0
本笔记包括:
1. ssl 的配置
2.Nginx + uwsgi + Django 2.0 的组合配置(包括静态文件定位)
前言
1)关于删除:
#删除nginx和其他相关配置文件
sudo apt-get purge nginx
#卸载依赖程序
sudo apt-get autoremove
2)关于编辑
你可以使用 vim (参考 https://www.cnblogs.com/Ph-one/p/5641872.html),但我更推荐 nano
我比较喜欢取出来放到本地编辑器里面修改。
3) 你必须知道相关的操作
rm mv rmdir vim nano 这五个够了
4)SSH
记得在安全组中打开 SSH 权限。另外,在腾讯云中需要在服务器处下放密钥。
https://cloud.tencent.com/document/product/213/16691
并且腾讯云中的 ubuntu 管理员名为 ubuntu
5) 关于 终端
ssh 链接本地 teminal 停止依然运行的方法
https://blog.youkuaiyun.com/zhouhuakang/article/details/51277659
1.安装:
腾讯云中的权限需要 sudo
可以去我的 DJANGO 云端部署那里看 django 和 pip3 的安装
安装 Nginx
sudo apt-get install nginx
安装 Uwsgi
sudo pip3 install uwsgi
可以参考这位写的
https://blog.youkuaiyun.com/u010503839/article/details/79853482
(service nginx restart reload 没有效果)
注意:用这种方式安装的 nginx
配置文件在:/etc/nginx
自动启动文件在:/etc/init.d
已经默认可以在任意位置通过 nginx 自启动
nginx 状态获取和改变
获取状态
ps -ef | grep nginx
删除除了 ssh 进程之外的全部 nginx 进程
pkill -9 nginx
启动
nginx
2.完成 ssl 配置
1.下载钥匙
在ssl证书管理处
阿里云位置:
上传至服务器
2.修改 default 文件
对,最快的方法不是修改 nginx.conf
因为 include 原因,你可以在 conf.d 和 sites-available 中对服务器虚拟空间进行分类修改。
但如果你没有这个需求,只是想要配置一个 ssl 的话
修改 etc/nginx/sites-available 中的 default
不放心的话,可以吧 enable 中的 default 也修改
具体修改内容
在最后加上 (注意,没有 default)把路径修改成自己的
server {
listen 443 ssl;
server_name www.example.com; #这个无所谓随便加
ssl_certificate /etc/nginx/cert/1111.pem; #路径
ssl_certificate_key /etc/nginx/cert/1111.key;
}
修改最前面的 80
listen 80;
listen [::]:80;
return 301 https://$server_name$request_uri;
3.打开 443 80 端口!你已经可以看到 ssl 正常运行
重启服务器
接下来两步参考了
https://blog.youkuaiyun.com/wjy397/article/details/51610872
3.完成 uwsgi 和 Django 的链接
1.修改 DJANGO settings 中的 debug=false
这样可以阻止 django 对静态文件的自动配置,转而使用 nginx 来进行静态文件配置
2.添加 STATIC_URL 和 STATIC_ROOT
建议的写法:(和下面一致)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
BASE_DIR 是文件目录
/static/为django主目录下的 static 文件夹
3.迁移
python3 manage.py collectstatic
这样会把所有的静态文件转移到 static_root 目录下
4.彻底重写上一步的 default,删除全部内容后加入以下内容
如下 注意 key 的路径改成自己的
server {
listen 80;
listen [::]:80;
return 301 https://$server_name$request_uri;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/cert/11111.pem;
ssl_certificate_key /etc/nginx/cert/111111.key;
server_name www.example.com;
location /static {
alias /root/Server/static/;
}
location /media {
alias /root/Server/media/;
}
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
uwsgi_pass 后的路径必须和后面启动 uwsgi 时的命令一致
location /static 后跟 static 路径
alias: 绝对路径 比如说上面的就是 /root/Server/static
root: 相对路径 如果把 alias 改成 root 上面的就是/root/Server/static/static
创建 uswgi_params 在这里不提,百度一下就有。
4.打开工程目录全部权限(方便访问)这里放在 root 下,所以偷懒
chmod -R 775 /root
5.在 Django 工程目录下运行
uwsgi --socket :8000 --chdir /root/工程名 --plugin python3 --module 工程名.wsgi
OK,配置完成
打开 admin 试一下吧