django 项目部署
准备工作 在服务器上,需要准备一些部署必备的工作 已安装的忽略 git mysql nginx python3 在本机上的准备工作 导出第三方模块 pip freeze > re

django 项目部署

发布时间:2023-10-12 (2023-10-12)

准备工作

在服务器上,需要准备一些部署必备的工作

已安装的忽略

git  
mysql
nginx
python3 

在本机上的准备工作

导出第三方模块

pip freeze > requirements.txt

收集静态资源

在django中,如果DEBUG=True,那么django会帮我们完成静态资源的分发

但是,实际项目上线,我们不需要django为我们进行静态资源分发

并且DEBUG一定要改为False

我们使用nginx做静态文件转发

在django的配置文件中,加上

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'feng_static')  # 收集的到feng_static目录

主要是STATIC_ROOT ,然后进行静态文件收集,django就会为我们收集所有的静态文件

python manage.py collectstatic

如果你部署之后发现django后台没有静态文件,那么你肯定是忘了收集静态文件

导出数据库

mysqldump -u root -p pro_blog > blog.sql

推送代码

git push

不会git的去网上找个教程练习一下,git很重要的哦!

服务器准备

拉取代码

git clone xxx

创建python虚拟环境

# 安装虚拟环境的第三方包 virtualenv
pip3 install virtualenv

# 创建虚拟环境(虚拟环境一般放在项目根目录下)
virtualenv fengfeng_blog_env

# 激活虚拟环境
source fengfeng_blog_env/bin/activate

# 退出虚拟环境
deactivate

下载三方模块

在虚拟环境中导入requirements中的第三方模块

pip install -r requirements.txt

导入数据库

# 在服务器中创建一个数据库
create database fengfeng_blog;

use fengfeng_blog

# 导入数据
source  blog.sql

# mysql创建用户
create user 'fengfeng_blog'@'localhost' identified by '123456';
# 授权
GRANT ALL ON fengfeng_blog.* TO 'fengfeng_blog'@'localhost';

最后再看看配置文件中的数据库配置这些是否正确

运行

先把DEBUG改为True

python manage.py runserver 0.0.0.0:8000

然后访问服务器的ip:8000看看能不能出来效果

如果不能出来,看看是不是防火墙没关

这一步的操作是为了查看项目能不能正常运行

uwsgi配置

# 先安装
pip install uwsgi

在我们通过Django创建django项目时,在子目录app01下已经帮我们生成的 wsgi.py文件。所以,我们只需要再创建uwsgi.ini配置文件即可,当然,uwsgi支持多种类型的配置文件,如xml,ini等。此处,使用ini类型的配置。

[uwsgi]
# 开启主进程
master = true
# 指定uwsgi工作的进程数
processes = 1
# 指定工作的每个进程下的线程数
threads = 2
# 指定项目的目录
chdir = /www/wwwroot/fengfeng-blog
# wsgi.py文件的位置
wsgi-file= %(chdir)/Fengfengblog/wsgi.py
# 使用nginx这里就要用socket
socket = 127.0.0.1:8000
# 日志  需要去创建这个文件
logto = %(chdir)/logs/error.log
chmod-socket = 660
vacuum = true
max-requests = 1000
# uwsgi的运行状态
stats=%(chdir)/uwsgi.status
# uwsgi的进程id
pidfile=%(chdir)/uwsgi.pid

运行

uwsgi --ini uwsgi.ini

停止

uwsgi --stop uwsgi.pid

# 或者
pkill -f uwsgi -9

重启

uwsgi --reload uwsgi.pid

注意查看uwsgi的启动信息,如果有错,就要检查配置文件的参数是否设置有误。

nginx配置

再接下来要做的就是修改nginx.conf配置文件。打开/etc/nginx/nginx.conf文件,添加如下内容。

注意哦,需要去对应的域名控制台做域名解析,解析到当前的服务器

nginx做静态文件转发

# nginx配置

server {
    listen   80;
    server_name xxx.fengfengzhidao.com;
    location / {
        uwsgi_pass   127.0.0.1:8000;  # uwsgi运行的端口
        include uwsgi_params;
    }
    location /static{
      alias  /www/wwwroot/fengfeng-blog/static;  # 你收集的静态文件的位置
    }
}

重启一下nginx,去访问客户机的ip,正常加载说明成功!

nginx -s reload

参考

https://blog.csdn.net/qq_41341757/article/details/113825603