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

路飞后台部署

本地操作

上线前配置

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

 

 

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

先新建目录  再把代码拉下来

 

 

 

 创建存放后台项目的目录:

mkdir /home/project

 把luffyapi复制到home/project下(复制文件夹要加r)

 

 

 

 

安装虚拟环境,创建虚拟环境,安装项目依赖

因为我们使用了阿里云的服务器,所以不用配源,默认走的阿里云的源

 

安装项目依赖

pip install -r requirements.txt  (在指定的目录下)

 

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

#关闭 nginx,重新启动 nginx
>: nginx -s stop
>: nginx

 

 

 

样式就有了

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2024-02-27 15:19  朱饱饱  阅读(41)  评论(0)    收藏  举报