用uwsgi和nginx 部署 django和vue打造的前后端分离项目
前言
由于现在没有彻底掌握nginx的使用,部署起来有点磕磕绊绊,为了防止以后再次需要部署的时候无法快速找到适合的资料,以此文章记录简单的部署步骤。
项目部署环境
- ubuntu16.04
- python3.6.8
- django 3.0.6
部署步骤
- uwsgi部署django项目。
- nginx部署vue项目。
- 配置nginx解决vue前端接口转发。
步骤1
uwsgi部署django项目。
1.更改django的settings.py文件
- DEBUG=True改为DEBUG=False
- ALLOWED_HOSTS = ["*"]
ALLOWED_HOSTS是为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问。强烈建议不要使用*通配符去配置,另外当DEBUG设置为False的时候必须配置这个配置。否则会抛出异常。这里暂时以 * 设置,等正式发布之后改成对应的域名。
2.安装uwsgi
pip3 install uwsgi
3.收集静态资源
在django的settings.py中增加如下:
# 静态资源访问的起始url
STATIC_URL = '/static/'
# 指定静态资源所在的目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
# 设置收集静态资源的路径(部署时使用)
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static/')
然后在项目根目录下(manage.py同级)运行如下命令:
python manage.py collectstatic
4.准备uwsgi的配置文件
假设我项目中的wsgi.py文件的路径如下。
/home/tk/Project/test_LP100/ThinkCloud/wsgi.py
在项目根目录下创建一个文件 uwsgi.ini并配置uwsgi.ini文件如下:
[uwsgi]
# 监听的端口
http=0.0.0.0:8080
# chdir配置项目的根目录
chdir=/home/tk/Project/test_LP100/ThinkCloud
# 主应用中