Django项目的简单部署
- 最近部署了自己的项目,现在来做一个简单总结
- 我自己使用的是 Centos7 + Nginx + uwsgi的方式进行部署,所以只简单介绍这种方式
前期安装
- Nginx(请自行google安装)
- uwsgi(pip install uwsgi)
- 项目所需Python环境和模块
uwsgi配置和Nginx配置
- 先修改
settings.py
文件
DEBUG=FALSE
ALLOWED_HOSTS=['*']
- 在项目目录下新建
uwsgi.ini
[uwsgi]
#使用nginx连接时使用
socket=127.0.0.1:8000
# 直接做web服务器使用 python manage.py runserver ip:port
# http=127.0.0.1:8000
# 项目目录
chdir= /home/admin/blog
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=blog/wsgi.py
# 指定启动的工作进程数
processes=4
# 指定工作进程中的线程数
threads=2
master=True
# 保存启动之后主进程的pid
pidfile=uwsgi.pid
# 设置uwsgi后台运行,uwsgi.log保存日志信息
daemonize=uwsgi.log
# 设置虚拟环境的路径
virtualenv=/home/admin/virtualenv/blog
-
启动
uwsgi
uwsgi --ini uwsgi.ini
(停止使用uwsgi --stop uwsgi.pid
,注意:为了确保项目可以正常运行,可以先使用python manage.py runserver
来确定项目是否存在问题) -
配置Nginx的配置文件,在nginx安装目录下的
/usr/loacl/webdriver/nginx/conf/nginx.conf
location / {
# 包含uwsgi请求参数
include uwsgi_params;
# 转交请求给uwsgi,要和 uwsgi.ini 文件中的 socket对应
uwsgi_pass 127.0.0.1:8000;
}
- 启动Nginx
/usr/local/webdriver/nginx/sbin/nginx
- 进行上述配置完毕后,便可以访问自己的服务器,查看项目是否部署成功,没有意外的化项目应该可以正常运行了, 但是无法加载静态文件, 为了可以加载静态文件,还需要进行配置。
静态文件处理
- 先在
settings.py
中添加STATIC_ROOT="收集静态文件的路径"
(我自己的是STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')
) - 运行Django收集静态文件的命令
python manage.py collectstatic
,执行该命令后,静态文件会被收集到collect_static
文件夹下。 - 配置nginx配置文件
location /static {
# 指定静态文件存放目录
alias /home/admin/blog/collect_static;
}
- 配置完毕后 重启 nginx
/usr/local/webdriver/nginx/sbin/nginx -s reload
- 再次访问服务器,发现还是无法访问静态文件
- 查看nginx日志,发现错误原因
Permission denied
(没有权限) - 给静态文件所在文件夹授权
sudo chmod 777 /home/admin/blog/collect_static
- 再次访问,一切正常。