准备工作
在服务器上,需要准备一些部署必备的工作
已安装的忽略
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