后端项目上线 python的后端上线由于操作还是比较繁琐的,因此我们把他单独拉出来讲
更换配置文件 在此之前我们一直使用的都是测试的配置文件,上线前我们需要改成上线的配置文件,并修改几个文件
prod.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 DEBUG = False 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 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 ; charset utf-8 ; location / { include uwsgi_params; uwsgi_pass 127.0 .0 .1 :8808 ; uwsgi_param UWSGI_SCRIPT luffyapi.wsgi; uwsgi_param UWSGI_CHDIR /home/project/luffyapi/; } location /static { alias /home/project/luffyapi/luffyapi/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
启动uwsgi,重启nginx 1 2 3 uwsgi -x /home/project/luffyapi/luffyapi.xml nginx -s reload