首页 > 其他分享 >云服务器转发动态请求(uwsgi+django项目)

云服务器转发动态请求(uwsgi+django项目)

时间:2024-02-27 15:22:07浏览次数:32  
标签:0.1 py django project uwsgi 转发 home luffyapi

路飞后台部署

本地操作

上线前配置

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

相关文章

  • 【Django开发】0到1开发美多shop项目:用户登录模块开发。全md文档笔记(附代码 文档)
    本系列文章md笔记(已分享)主要讨论django商城项目相关知识。项目利用Django框架开发一套前后端不分离的商城项目(4.0版本)含代码和文档。功能包括前后端不分离,方便SEO。采用Django+Jinja2模板引擎+Vue.js实现前后端逻辑,Nginx服务器(反向代理)Nginx服务器(静态首页、商品详情页、uwsg......
  • django如何将视图的数据表下载下来?(包括数据过滤)
    思路关键:django的视图本身返回的是json数据,而pandas本身就可以对json数据形成excel输出。所以,现在的关键是如何拿到需要的json数据?突破点:filterset还是serializers,都是可以支持手动使用的。defgenerate_queryset_excel(queryset,filterset_cls,serializer_cls,request=None......
  • Python Django适配dm8(达梦)数据库
    官方文档https://eco.dameng.com/document/dm/zh-cn/start/python-development.htmlDjango适配达梦https://blog.csdn.net/qq_35349982/article/details/132165581https://blog.csdn.net/weixin_61894388/article/details/126330168项目适配达梦升级或安装依赖Django==3......
  • POLIR-Economics-西方经济学学习经验(转发)
    原文:https://bbs.pinggu.org/thread-894259-1-1.htmlhttps://bbs.pinggu.org/forum-47-1.html西方经济学属于纯理论性的学科,它所包括的知识也基本上是比较模式化的,也就是说,相对于政治经济学它联系实际的东西比较少,能与实际联系起来的地方主要是宏观部分的财政政策、货币政策、通......
  • django模型models常用字段24个以及参数17个简要说明
    一、常用字段1、models.AutoField自增列=int(11)如果没有的话,默认会生成一个名称为id的列,如果要显式的自定义一个自增列,必须设置primary_key=True。2、models.CharField字符串字段,必须设置max_length参数3、models.BooleanField布尔类型=tinyint(1)不能为空,可......
  • django常用命令
    常用命令任务命令创建新项目django-admin.pystartprojectproject_name(注意:windows系统下请用django-adminstartprojectproject_name)创建新应用pythonmanage.pystartappapp_name(注意:你需要先cd进入创建的项目文件夹)检测模型变换,生成数据库同步脚......
  • django分页后过滤数据,要进行补全数据的方法
    项目开发中遇到一个问题:当分页后还要进行数据处理,可能导致原本分页返回的数据不足,那么需要从另外一页进行数据补全(也要数据进行过滤)。自己写了一个小的组件:defdata_paging(queryset,page,limit,deal_func=None,*args,**kwargs):#创建分页器对象paginator=......
  • Splunk转发器centos部署
    Spunk概述1)Splunk分为服务器(Splunk)和客户端(Splunkforwarder)。Splunk的服务器就是索引器和接收器。客户端就是数据的转发器。顾名思义就是数据可由客户端转发至server端进行索引。客户端只起到转发数据的作用。2)Splunk是一款功能强大,功能强大且完全集成的软件,用于实时企业日......
  • Django——Ueditor(富文本编辑器)
    富文本编辑器(RichTextEditor,RTE)一种可嵌入浏览器、所见即所得的文本编辑器。富文本编辑器可以方便地嵌入Web应用中以方便用户编辑文章或信息。UEditor是由百度Web前端研发部开发的所见即所得富文本编辑器,具有轻量化、可定制、注重用户体验等特点。基于开源MIT协议,允许自由使用......
  • 基于python+django+vue.js开发的学生成绩管理系统
    功能介绍平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。源码地址https://github.com/geeeeeeeek/python_score演示地址http://score.gitapp.cn演示......