准备工作
-
将项目代码拉到linux本地环境
-
安装环境
-
虚拟机当中有python冲突
-
自己安装一个新版本python
apt-get install python3.7 apt-get install python3.7-venv
-
-
创建虚拟环境
python3.7 -m venv venv
-
激活虚拟环境
source venv/bin/activate
-
安装依赖
pip install -r requirements.txt
-
Nginx
-
Nginx
高性能http服务器及反向代理服务器.
-
为什么使用Nginx
一个域名对应的只有一个IP, 一个IP对应一台服务器, 一台服务器可以启动多个服务.
那么我们怎么让服务器知道当前的请求应该由哪个服务来处理呢?
统一管理当前服务器内开启的对外暴露服务.
- 减少了对外暴露的端口, 隐藏真实服务地址, 增加了安全性.
-
安装nginx
apt-get install nginx
-
启动和关闭nginx
service nginx start service nginx restart service nginx stop
-
127.0.0.1
,0.0.0.0
,localhost
的区别-
localhost
localhost就是一个默认的本机域名, 你可以手动对其进行配置
-
127.0.0.1
回环地址, 127开头的地址是一类向自身发送通信的特殊地址
-
0.0.0.0
代表本机所有IP地址, 如果你想让外部可以访问到你的服务, 则需要将服务绑定到0.0.0.0地址上.
-
-
-
nginx部署静态资源
-
修改nginx配置文件
vim /etc/nginx/sites-available/default // 添加以下配置 location /static/ { alias /var/static/; // 当前静态资源保存的路径 autoindex on; add_header Cache-Control private; expires 30d; }
-
重启nginx
-
配置静态资源的好处
前后端分离, 静态资源的问题可以由前端自由管理和控制.
-
uWSGI
https://uwsgi-docs.readthedocs.io/en/latest/
-
什么是uWSGI
WSGI只是一种协议, 用来解决一个请求到服务端, 服务端与内部应用的交互.
uWSGI是一个项目, 目的是通过统一的API和配置风格, 集成应用服务器, 代理, 进程管理, 监控等功能
-
为什么需要uWSGI
- 性能问题: 通过
python manage.py runserver
命令来启动的是单进程多线程的应用. - uWSGI可以更好地控制并发
- 性能问题: 通过
-
安装uWSGI
# 在创建虚拟环境前和环境后各第一时间安装一次, 避免出错. pip3 install uwsgi
-
配置uWSGI
https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html
-
在当前项目下创建
uwsgi.ini
-
添加以下内容
[uwsgi] # 项目本地服务地址 http=127.0.0.1:5000 # 观察项目得运行情况 stats=127.0.0.1:5100 # 项目的虚拟环境 virtalenv=/home/tunan/my_blog_2/venv # 项目的根目录 chdir=/home/tunan/my_blog_2 # 绑定wsgi协议 wsgi-file=myblog/wsgi.py # 设置进程数, 跟cpu一致即可. processes=12 # 线程数目 threads=4 # 导出的log日志 logto=/var/log/myblog.log # 如果django项目中使用了STATIC, 就要作静态资源的映射 static-map=/static=static
-
-
启动uwsgi
uwsgi --ini uwsgi.ini &
-
在nginx中做代理转发
location /myblog/ { proxy_pass http://127.0.0.1:5000; } * 代理转发之后, http://127.0.0.1:5000的外部地址是http://域名/myblog.
-
解决url匹配的问题
url也要做相应的修改, 将myblog添加到最高级路径
-
-
查看nginx日志
cd /var/log/nginx
-
access.log
访问日志
-
error.log
错误日志
-