Django项目上线准备
修改settings.py配置文件
DEBUG = False
该属性在开发模式下、默认是True, 部署到Linux 上后、需要将其改为False, 以减少当项目发生异常的时候、提示更多的信息
ALLOW_HOSTS
如果DEBUG设置为 False, 那么必须添加ALLOW_HOSTS,该属性主要是用来描述允许的主机、值是一个列表格式的对象、因该配置部署项目的IP地址列表
修改数据库连接地址:如果您采用的是MySQL、Oracle等关系型数据库的时候、需要修改数据库的连接IP地址,不能使用localhost、127.0.0.1 等字样、除非您能保证在部署项目的服务器上,同样安装有相同的数据库
安装uwsgi
在ubuntu上、安装uwsgi 代码如下
pip3 install uwsgi
如果上述命令提示 pip3 找不到,则需要先安装pip3
sudo apt-get install python-pip3
安装成功后、可以在命令上输入uwsgi
如果提示该命令无法找到、则需要执行如下代码
sudo apt-get install uwsgi-core
安装python和uwsgi集成的插件
sudo apt-get install uwsgi-plugin-python
编写uwsgi的配置文件
uwsgi如果想要启动、必须提供配置文件、常见的配置文件格式有 ini , xml ,json等
下面以 ini 格式为例
vim uwsgi.ini
[uwsgi]
# 项目的路径
chdir=/home/python/app/py1905
# wsgi的接口
module=py1905.wsgi:application
# 是否是主节点
master=True
# 用来存储进程、可以用来停止或重启uwsgi
pidfile=py1905.pid
# 当退出的清除环境,例如日志和pid文件
vacuum=true
# 最大请求数据
max-requests=5000
# uwsgi 的后台日志
daemonize=py1905.log
# 代表的是运行 django的 IP和端口
socket=192.168.221.195:8000
# 设置进程数
processes=5
# 设置 settings.py 的位置
env DJANGO_SETTINGS_MODULE=py1905.settings
# 设置虚拟环境的路径,该属性指定一个目录即可,不需要设置虚拟环境
pythonpath=/home/python/app/venv/lib/site-packages
# 也可以用 venv 或 virtualenv 来设置虚拟环境的位置、前提需要配置虚拟环境
将uwsgi.ini 文件放在项目的根下(这一步不是必须的)
启动uwsgi
uwsgi --ini uwsgi.ini
查看启动日志
tail -f py1905.log
查看uwsgi进程
ps -ef|grep uwsgi
停止uwsgi ,可以通过 kill 杀死进程,也可以通过 --stop 来停止
uwsgi --stop py1905.pid
重启uwsgi
uwsgi --reload py1905.pid
如果在项目中、使用了mysql数据库、在启动uwsgi的过程中,有可能会提示
did you install mysqlclient?
此时需要在Liunx上安装mysqlclient
安装mysqlclient
pip3 install libmysql-dev
pip3 install mysqlclient
安装nginx
如果没有特殊的需求、可以直接安装nginx
sudo apt-get install nginx
该命令会自动安装nginx
安装完成后、nginx默认的位置如下
/etc/nginx #该位置为nginx配置文件的位置
/sbin/nginx # 启动Nginx的命令位置
/var/log/nginx # nginx 日志存储的位置
修改 nginx.conf 配置文件
http {
server {
listen 80 ;
server_name localhost ;
location / {
uwsgi_pass 192.168.221.195:8000 ; #该地址在uwsgi.ini中配置的 socket
include uwsgi_params ; # 该配置在 nginx.conf 同级下
}
}
}
校验配置文件是否修改正确
nginx -t
重新启动nginx
nginx -s reload
访问项目
http://localhost
此时你会发现、项目正常启动、但是页面的静态页面全都失效
django框架在开发环境可以通过
STATICFIELS_DIRS
配置静态资源文件路径,但是
将其交给nginx之后、则静态文件的配置就失效了,此时需要在nginx中配置对静态资源
文件的处理、实现动静分离,具体代码如下
location /static/ {
alias /home/python/app/py1905/static/
}
再次访问项目、发现静态资源文件处理正常
但是测试访问django后台站点、返现后台站点中的样式404错误
仔细研究代码,返现后台地址的路径为 /static/admin/…
很明显 admin该目录在静态资源文件中不存在
解决上述问题的方案如下
在
settings.py
中配置 STATIC_ROOT= /home/python/app/py1905/static/
该配置,用来将项目用到的静态资源文件收集到指定的位置
下面执行
python manage.py collectstatic
完成静态资源文件的收集
再次访问后台、发现一切正常~~~