路飞后台部署
本地操作
上线前配置
prod.py:上线的配置文件,内容拷贝dev.py,前身就是settings.py
# 关闭测试环境 DEBUG = False ALLOWED_HOSTS = [ '39.99.192.127' # 公网ip地址 ] CORS_ORIGIN_ALLOW_ALL = True # 允许所有跨域 # 静态文件配置:上线后还有额外配置,见下方 后台样式问题 STATIC_URL = '/static/' # 后台http根路径 # BASE_URL = 'http://127.0.0.1:8000' BASE_URL = 'http://39.99.192.127:8000' # 前台http根路径 # LUFFY_URL = 'http://127.0.0.1:8080' LUFFY_URL = 'http://39.99.192.127:80' # 订单支付成功的后台异步回调接口 NOTIFY_URL = BASE_URL + '/order/success/' # 订单支付成功的前台同步回调接口 RETURN_URL = LUFFY_URL + '/order/pay/success/' REST_FRAMEWORK = { # 渲染模块 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', # 'rest_framework.renderers.BrowsableAPIRenderer', ], # ... }View Code
wsgi.py 、manage_prod.py该文件就是manage.py的一个副本)
# 需要做上线修改的内容 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.prod')
导出项目环境
1)进入本地项目根目录 >: cd 项目根目录 2)本地导出项目环境 >: pip3 freeze > packages.txt 3)如果环境中有特殊的安装包,需要处理一下xadmin packages.txt中的 xadmin==2.0.1 要被替换为 https://codeload.github.com/sshwsfc/xadmin/zip/django2
项目提交到远程git仓库
1)去向本地项目仓库 >: cd 项目根目录 2)本地版本库操作 >: git status >: git add . >: git commit -m '项目2.0上线' 3)提交到远程版本库 >: git pull origin master >: git push origin master
先把代码拉下来
创建存放后台项目的目录:
mkdir /home/project
把luffyapi复制到home/project下(复制文件夹要加r)
安装虚拟环境,创建虚拟环境,安装项目依赖
因为我们使用了阿里云的服务器,所以不用配源,默认走的阿里云的源
1.安装虚拟环境
pip3 install virtualenv pip3 install virtualenvwrapper
2.建立软连接:
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
vim ~/.bash_profile
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source/usr/local/python3/bin/virtualenvwrapper.sh 按:wq保存并退出
更新配置文件内容:
source ~/.bash_profile
创建线上luffy项目虚拟环境 mkvirtualenv luffy
安装requirements.tst里的依赖:
pip install -r requirements.txt
查看安装:django使用2.0.7
如何Django不是2.0.7的其他版本,数据库迁移保存解决方案:修改源码
1)修改base.py源码 >: vim /root/.virtualenvs/luffy/lib/python3.6/site-packages/django/db/backends/mysql/base.py 方案:36,37行注释掉 2)修改operations.py源码 >: vim /root/.virtualenvs/luffy/lib/python3.6/site-packages/django/db/backends/mysql/operations.py 方案:146行添加 query = query.encode()View Code
数据库设置:docker中操作
mysql -uroot -p
#创建数据库
create database luffyapi default charset=utf8
#设置权限账号密码:账号密码要与项目中配置的一致 grant all privileges on luffyapi.* to 'luffyapi'@'%' identified by 'Luffy123?' #把luffyapi下的所有东西都授与luffyapi这个人(远程连),密码是luffyapi123? 需要根据章节实际情况修改 grant all privileges on luffyapi.* to 'luffyapi'@'localhost' identified by 'Luffy123?' #本地连 flush privileges
#刷新权限
在此处我们使用navicat本地连接:
这里我们删除迁移的记录一面在外面下次迁移时报错,此处的0*表示删除以0开头的文件
连接后有库但是没有表 所以需要迁移(删除迁移记录后再迁移 不然报错)
数据库表迁移(数据还没进去):
python manage_pro.py makemigrations python manage_pro.py migrate
我们在navicat中将库刷新一下,创建超级用户
登录上去
这里我们Ctrl+c停掉,不用manage.py跑 用uwsgi跑
安装uwsgi
1)在真实环境下安装 pip3 install uwsgi 2)建立软连接 ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
因为没重启 暂时没检测到 这里我们复制标签一个新的
虚拟环境下安装
vim /home/project/luffyapi/luffyapi.xml
<uwsgi> <socket>127.0.0.1:8808</socket> <!-- 内部端口,自定义 --> <chdir>/home/project/luffyapi/</chdir> <!-- 项目路径 --> <module>luffyapi.wsgi</module> <!-- luffyapi为wsgi.py所在目录名--> <processes>4</processes> <!-- 进程数 --> <daemonize>uwsgi.log</daemonize> <!-- 日志文件 --> </uwsgi>
#启动uwsgi uwsgi -x /home/project/luffyapi/luffyapi.xml #重启nginx nginx -s reload
#去向Nginx配置目录,备份配置,完全更新配置:填入下方内容 vim /usr/local/nginx/conf/nginx.conf
events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name 127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80 charset utf-8; location / { root /home/html; # html访问路径 index index.html; # html文件名称 try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题 } } # 新增的server 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/; # 项目路径 } } }View Code
在这后面粘贴
后台样式:admin、rest_framework、xadmin等框架的静态样式也需要处理
修改线上配置
#编辑线上配置文件 vim /home/project/luffyapi/luffyapi/settings/prod.py
#修改static配置,新增STATIC_ROOT、STATICFILES_DIRS #在最末端加入下面三句话: STATIC_URL = '/static/' STATIC_ROOT = '/home/project/luffyapi/luffyapi/static' STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
#项目目录下没有 static 文件夹需要新建 mkdir /home/project/luffyapi/luffyapi/static
#完成静态文件迁移收集 python /home/project/luffyapi/manage_prod.py collectstatic
Nginx配置静态路径
#修改nginx配置 vim /usr/local/nginx/conf/nginx.conf
#怕错误可以全部复制粘贴 记得i插入 events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; server { listen 80; server_name 127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80 charset utf-8; location / { root /home/html; # html访问路径 index index.html; # html文件名称 try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题 } } 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/; # 项目路径 } # 新增的配置静态文件 location /static { alias /home/project/luffyapi/luffyapi/static; } } } #退出 >: :wq
#关闭 uwsgi,重新启动 uwsgi pkill -f uwsgi -9 uwsgi -x /home/project/luffyapi/luffyapi.xml
样式就有了
标签:0.1,py,django,project,uwsgi,转发,home,luffyapi From: https://www.cnblogs.com/97zs/p/18034919