django之项目部署上线
Posted loveprogramme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django之项目部署上线相关的知识,希望对你有一定的参考价值。
在开始配置之前,需要将整个项目文件拷贝一份,然后移入你想要的放置的目录中。
一、Django配置
1、settings.py配置
复制全局settings.py配置文件,创建一个副本命名为/pro_settings.py,修改DEBUG为False。
DEBUG = False # 填写你自己的ip和域名 ALLOWED_HOSTS = [“ 192.168.216.137", "localhost", "127.0.0.1"] # 此处设置可以访问服务器的IP地址,*为允许所以地址
第一次部署的时候,最好先不要修改,否则出错的时候不容易排错。
2、wsgi.py配置
# 修改pro_mysite/wsgi.py文件 import os from django.core.wsgi import get_wsgi_application os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘peo_mysite.pro_settings‘) application = get_wsgi_application()
3、生成requirements.py文件(最好在根目录下单独建立一个目录,用于存放这些文件)
项目部署文件肯定也是运行在python环境下的,那么势必需要依赖的包文件,所以也需要为部署的项目重新建立一个运行的虚拟环境,并安装项目运行时所依赖的包、模块,所以需要先进入开发时的虚拟环境,将安装的包、模块导出来,安装在项目部署的虚拟环境中(注意:有的包、模块不是我们通过pip install 从源地址安装的,所以在导出时,需要将其删除,通过源文件安装。)
通过>>> pip freeze > requirements.txt
将安装的第三方包、模块导出到requirements.txt文件,放在项目中,供部署时安装。
上面的fdfs-client-py==1.2.6不是通过源地址安装的,而是直接通过源文件安装的,所以需要将这个模块删除。
通过>>> pip install requirements.txt
安装从源地址安装的第三方包、模块(在此之前,需要创建项目运行虚拟环境),
安装完成后,再安装通过源文件安装的第三方包、模块,比如我的fdfs-client-py==1.2.6模块
两类包、模块都安装完成后,接下来就是安装django项目运行的服务器模块了(注意:django项目部署时,与我们开发时运行的方式不太一样;开发时,直接使用命令python manage.py runserver 0:8000就可以了,但是部署时,是运行在一个WSGI服务器上的,此时只需要相关配置,再运行wsgi服务器,就可以起启动项目了。)
通过>>> pip install uwsgi
安装WSGI服务器
可以写一个test.py文件测试uwsgi是否安装成功
通过>>> uwsgi --http :8000 --wsgi-file test.py
这个命令表示WSGI服务器运行在8000端口,一旦接收到请求,就会将解析请求,并调用test.py文件里的application函数,返回一个响应,
uwsgi配置(创建uwsgi_conf_ini配置文件)
[uwsgi] # 使用nginx连接时使用,Django程序所在服务器地址 # 选择内网IP和端口 socket=172.26.149.79:8000 # 项目根目录 chdir=/root/django-projects/dj32_pro/dj32_pro #项目中wsgi.py文件的相对目录 wsgi-file=dj32_test/wsgi.py # 进程数 processes=2 # 线程数 threads=2 # uwsgi服务器的角色 master=True # 存放进程编号的文件 pidfile=uwsgi.pid # 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。以前的runserver是依赖终端的 daemonize=logs/uwsgi.log # 指定虚拟环境所在目录,不能填相对目录 virtualenv=/root/python-venv/dj32
要注意上述配置标红的地方,一定要严格遵照执行,
socket:表示项目运行的IP地址和端口号,一定要是内网地址;
chdir:表示项目的根目录(使用pwd命令获取);
wsgi-file:表示项目中wsgi.py文件的位置,在主APP下;
daemonize:记录项目运行的日志,是相对于这个配置文件的位置,不是相对于根目录,切记;
virtualenv:表示项目运行的虚拟环境的绝对路径
启动uwsgi(进入.ini配置文件所在的目录,启动uwsgi服务)
启动uwsgi>>> uwsgi --ini uwsgi_conf.ini
停止uwsgi>>> uwsgi --stop uwsgi.pid
二、nginx配置(想要了解更多,观看教程:https://www.bilibili.com/video/BV1zJ411w7SV?p=9)
1、安装nginx(根据自己的系统选择合适的nginx配置,以Centos为例)
>>> yum -y install nginx
2、启动nginx,查看启动状态,如果启动状态为active,则代表启动成功
3、测试是否安装成功
nginx默认运行在80端口,可以直接在浏览器中访问,如果有显示,表示在安装成功,
4、nginx常用命令(如果不是root用户,需要在前面加sudo)
停止nginx服务器>>> systemctl stop nginx
启动nginx服务器>>> systemctl start nginx
重启nginx服务器>>> systemctl restart nginx
重载配置而不关闭>>> systemctl reload nginx
设为开机自启动>>>> systemctl enable nginx
取消开机自启动>>>> systemctl disable nginx
5、nginx配置(找到配置文件的位置,修改配置文件,配置文件的位置,上面已经标出来了)
/etc/nginx/nginx.conf
upstream dj32_pro { # 此处为uwsgi运行的ip地址和端口号 server 172.26.149.79:8000; } server { # 监听端口 listen 80; # 服务器域名或者ip地址 server_name www.blogcloud.info; # 编码 charset utf-8; # 文件最大上传大小 client_max_body_size 75M; # 媒体文件 location /media { alias /home/pyvip/pro_mysite/media; } # 静态文件 location /static { alias /home/pyvip/pro_mysite/static; } # 主目录 location / { uwsgi_pass pro_mysite; include /etc/nginx/uwsgi_params; } }
# 修改sudo vim /etc/nginx/nginx.conf # 第一行开头修改用户,将www-data改为你当前的用户 创建 Nginx 运行使用的用户 www: user root;
user后面跟你自己主机的用户名
具体看一下nginx配置的全部内容
具体看一下我们配置好的配置文件
测试nginx配置文件是否正确>>> nginx -t -c /etc/nginx/nginx.conf
如果打印如下内容,就表示成功了:
重新加载配置>>> nginx -s reload -c /etc/nginx/nginx.conf
详细了解nginx配置正向代理、反向代理、负载均衡、动静分离相关内容请看(https://www.bilibili.com/video/BV1zJ411w7SV?p=9),个人觉得讲得不错。
补充:如果遇到启动uwsgi和nginx时,启动失败,多半是端口占用的问题,那就解除占用
查看指定端口>>> netstat -ap | grep 8000
查看端口>>>>>>netstat -a
杀死进程>>>>>>pkill -9 PID
查看某个程序的进程>>> ps -aux | grep nginx