后端项目上线

python的后端上线由于操作还是比较繁琐的,因此我们把他单独拉出来讲

更换配置文件

在此之前我们一直使用的都是测试的配置文件,上线前我们需要改成上线的配置文件,并修改几个文件

prod.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#关闭测试环境
DEBUG = False

# 修改成你的公网ip地址
ALLOWED_HOSTS = [
'39.99.192.127'
]

# 允许跨域
CORS_ORIGIN_ALLOW_ALL = True

#支付宝的回调的前后端接口地址
BASE_URL = 'http://39.99.192.127:8000'
LUFFY_URL = 'http://39.99.192.127:80'

wsgi.py 、manage_prod.py

1
2
#修改成上线的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.prod')

项目需要的模块进行导出

1
2
3
4
5
6
7
#命令
pip3 freeze > requirement.txt

ps:如果使用了xadmin需要进行处理
xadmin==2.0.1
替换为
https://codeload.github.com/sshwsfc/xadmin/zip/django2

进行上述操作后将项目上传至git即可,接下来我们处理我们的线上环境即可

项目使用虚拟环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
使用虚拟环境之前我们需要将上传到git的项目拉去下来到指定目录
我这边拉取的项目路径是 /home/project
git clone git地址

项目之前已经安装了虚拟环境,这次我们直接启用即可

#创建虚拟环境并使用
mkvirtualenv luffy
workon luff

#安装项目所需要的模块
cd /home/project/luffyapi
pip install -r requirement.txt

#在虚拟环境中安装uwsgi
pip install uwsgi

uwsgi配置

1
2
3
4
5
6
7
8
9
10
在项目根目录的luffyapi这个文件夹下我们新建一个luffyapi.xml的配置文件,到时候我们启动uwsgi需要使用这个配置文件
vim luffyapi.xml
输入
<uwsgi>
<socket>127.0.0.1:8808</socket> <!-- 内部端口,自定义,后面配置nginx的配置文件时需要用到 -->
<chdir>/home/project/luffyapi/</chdir> <!-- 项目路径 -->
<module>luffyapi.wsgi</module> <!-- luffyapi是项目根路径下的luffyapi,也就是小的luffyapi-->
<processes>4</processes> <!-- 进程数 -->
<daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</uwsgi>

nginx配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
我们需要修改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
新增一个serve
server {
listen 8000;
server_name 127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80
charset utf-8;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8808; # 端口要和uwsgi里配置的一样
uwsgi_param UWSGI_SCRIPT luffyapi.wsgi; #wsgi.py所在的目录名+.wsgi
uwsgi_param UWSGI_CHDIR /home/project/luffyapi/; # 项目路径
}
#静态文件存储的路径python
location /static {
alias /home/project/luffyapi/luffyapi/static; #你static文件夹的路径
}
}

数据库创建

1
2
3
4
5
6
7
8
9
10
我们进入数据库
mysql -uroot -pxxx

创建库
create database luffy default charset=utf8;

创建账号,这里的账号要与项目配置文件中的账号密码保持一致
grant all privileges on luffy.* to 'luffy'@'%' identified by 'Luffy123?';
grant all privileges on luffy.* to 'luffy'@'localhost' identified by 'Luffy123?';
flush privileges;

项目数据库表迁移

1
2
3
4
5
我们来到项目的根路径下,即/home/project/luffapi

执行数据库迁移命令
python manage_prod.py makemigrations
python manage_prod.py migrate

xadmin,rest_framework等静态文件收集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
这时我们若是直接上线,我们的后台管理等页面的样式是没有的,我们需要将他们收集到文件夹下
这个文件夹我们设置在内部的luffapi下,取名为static

#创建文件夹
cd /home/project/luffapi/luffapi
mkdir static

#修改配置文件
vim settings/prod.py
添加下述几句
STATIC_URL = '/static/'
STATIC_ROOT = '/home/project/luffyapi/luffyapi/static'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)

#使用命令迁移静态文件
python /home/project/luffyapi/manage_prod.py collectstatic

#nginx

启动uwsgi,重启nginx

1
2
3
uwsgi -x /home/project/luffyapi/luffyapi.xml #你uwsgi配置文件的路径

nginx -s reload #重启nginx服务的命令