部署前保障python,nginx,数据库等已经安装完成。
上传源码
我们这里的Django项目叫:django_demo
只需要上传:项目的配置目录以及各应用的目录即可,数据库建议从测试环境导入到线上环境(当然使用数据迁移也可以)
上传步骤:(略)
上传后的项目根目录为:/home/my_project/django_demo
上传后需要将项目的配置文件这几个地方修改一下:
DEBUG = False
ALLOWED_HOSTS = ['*']
导出本地依赖模块信息并在服务端安装
# 查看测试环境安装的模块信息
pip freeze > requirements.txt
# 线上环境:从文件中读取要安装的模块并执行安装
pip install -r requirements.txt
安装配置uwsgi,并配置nginx
安装uwsgi(我这里是在项目独属的virtualenv环境里面安装的,项目多的话,virtualenv环境分开好管理)
虚拟环境教程:https://blog.csdn.net/qq_34939371/article/details/102572006
进入项目独属的virtualenv环境 (我这里创建的项目环境为django_demo)然后安装uwsgi
进入项目目录,安装依赖模块
配置nginx虚拟机
打开配置文件(根据自己nginx安装情况,我这是多站点,每个项目都单独一个配置)
配置虚拟机
server {
listen 80;
server_name 域名;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
}
location /static {
# 配置静态文件的路径(这个静态文件的路径根据各个项目可能有所不同)
alias /home/my_project/django_demo/static;
}
}
然后重启nginx:service nginx restart
在项目的根目录(/home/my_project/django_demo)创建配置文件:uwsgi.ini,然后在里面添加如下内容:
[uwsgi]
#项目的根目录
chdir = /home/my_project/django_demo
#项目的对接wsgi.pi文件
module = django_demo.wsgi:application
#项目执行的端口号,和nginx配置的要一致
socket = 127.0.0.1:8000
#是否以主进程模式允许
master = true
#开启的工作进程数量
processes=4
#日志文件路径,前提是该文件要存在,且可写
daemonize = /home/my_project/django_demo/run.log
#表示不记录正常信息,只记录错误信息,否则你的日志可能很快就爆满
disable-logging = true
#当服务器退出的时候自动清理环境
vacuum = true
#进程信息文件路径(这里指项目的根目录)
pidfile=%(chdir)/uwsgi.pid
配完就可以运行起uwsgi了:
uwsgi --ini uwsgi.ini
# 关闭uwsgi
uwsgi --stop ./uwsgi.pid
# 重启
uwsgi --reload ./uwsgi.pid