天天看点

ubuntu+nginx+uwsgi 部署django项目Django项目上线准备

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

完成静态资源文件的收集

再次访问后台、发现一切正常~~~

继续阅读