Vue+Django项目部署详解

作者:Sunzz 时间:2024-04-30 10:20:16 

本地项目配置

1 复制 luffy/settings/dev.py为prop.py

修改luffy/settings/prop.py中以下几项

(1) allow_hosts


ALLOWED_HOSTS = [
'api.youdomain.com',
]

(2) 跨域白名单


CORS_ORIGIN_WHITELIST = (
# 前端域名
"www.youdomain.com",
# 后端api接口域名
"api.youdomain.com"
)

(3) 支付宝电脑网站支付配置信息


ALIPAY_APPID = "xxxxxxx"
APP_NOTIFY_URL = None
ALIPAY_DEBUG = True
# APIPAY_GATEWAY="https://openapi.alipay.com/gateway.do"
APIPAY_GATEWAY = "https://openapi.alipaydev.com/gateway.do"
ALIPAY_RETURN_URL = "http://www.youdomain.com/success"
ALIPAY_NOTIFY_URL = "http://api.youdomain.com:8000/payments/success"

2 修改luffy/wsgi.py文件

第14行


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffy.settings.prop")

3 修改manage.py文件

不改也可以,为了在服务器测试方便一点

第6行


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffy.settings.prop")

4 导出pip安装的包列表


freeze > docs/requirements.txt

5 收集静态文件


python manage.py collectstatic

6 提交并推送


git add .
git commit -m "项目完成"
git push -u origin master

7 前端配置修改 src/settings.js

设置后端服务器域名和端口


Host:http://api.youdomain.com:80,

8 构建


npm run build

9 提交并推送


git add .
git commit -m "项目完成"
git push -u origin master

服务器上配置

1 安装所需软件


yum install python36-pip.noarch python36.x86_64 python36-devel.x86_64 nginx git gcc -y
pip3 install virtualenv -i https://pypi.douban.com/simple

注意:uwsig 最好使用pip方式安装


pip3 install uwsgi -i https://pypi.douban.com/simple

2 mysql数据库相关配置

(1)安装mysql


yum install mysql-server -y

或者使用容器

设置密码以及初始化配置请自行解决

(2) 启动数据库


systemctl start mysqld

(3)新建数据库luffy


create database luffy;

(4) 导入数据


mysql -uroot -pmysql luffy < luffy.sql

3 redis 安装与配置

可以使用 yum 安装并启动 ,简单粗暴!

为了使用最新版,我采用解压安装

那种方式你喜欢就好!

(1) 下载


cd /opt/
wget http://download.redis.io/releases/redis-5.0.5.tar.gz

(2) 解压并安装


tar -xf redis-5.0.5.tar.gz
cd /opt/redis-5.0.5
make && make install

(3)修改配置文件

vim redis.conf
69行 bind 127.0.0.1
改为 bind 0.0.0.0

(4)启动Redis,并放置在后台


nohup redis-server redis.conf &

4 拉取前端项目


cd /opt/
git clone https://gitee.com/SunHarvey/luffyweb.git

前端项目路径为 /opt/luffyweb/

只有 /opt/luffyweb/dist/ 文件有用 ,

dist用作前端根目录,其他的不要亦可!

5 创建虚拟环境

(1)创建虚拟环境


cd /opt/
virtualenv luffy

即就是虚拟环境路径为 /opt/luffy/


cd /opt/luffy/

(2)激活虚拟环境


source /opt/luffy/bin/activate

(3)拉取后端项目


git clone https://gitee.com/SunHarvey/luffy.git

注:项目根路径为 /opt/luffy/luffy/


cd luffy

可以看到以下文件


docs luffy manage.py scripts static

(4)pip安装所需包

我的 django 使用的是2.0版本,不需要因为 pymysql 报错该源码

删除 luffy/docs/requirements.txt中 xadmin中的那行


pip3 install https://codeload.github.com/sshwsfc/xadmin/zip/django2
pip3 instal -r /opt/luffy/luffy/docs/requirements.txt

(5)用 runserver 启动django项目看看是否正常

记得启动MySQL数据库和redis


python manage.py runserver

没有报错的话继续,报错了就根据提示排除吧

6 uwsgi配置

(1) uwsgi.ini 配置内容如下


vim /opt/luffy/luffy/uwsgi.ini
[uwsgi]
# 设置uwsgi 启动用户,不设置也可,会有警告,也可以设置为当前登录的用户
uid = nginx
gid = nginx
#使用nginx连接时使用,Django程序所在服务器地址
socket=127.0.0.1:8000
#直接做web服务器使用,Django程序所在服务器地址
#http=0.0.0.0:8080
#项目目录
chdir=/opt/luffy/luffy
#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=luffy/wsgi.py
# 进程数
processes=1
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=/opt/luffy/
# clear environment on exit #退出时清除环境
vacuum = true

(2) 修改文件所有者, 如果用root启动可忽略此步骤


chown -R nginx.nginx /opt/luffy/luffy/

也可以把nginx换成当前登录用户的用户名,其它用户也可以。

(3) 启动uwsgi , 记得启动MySQL数据库和redis


uwsgi --ini /opt/luffy/luffy/uwsgi.ini

7 nginx配置

(1) 创建配置文件


vim /etc/nginx/conf.d/your.conf
# 设置后端uwsgi服务器,可写多个用作负载均衡
upstream luffy {
server 127.0.0.1:8000;
}
# 后端 api服务器配置
server {
listen 80;
server_name api.youdomain.com;
location / {
include uwsgi_params;
uwsgi_pass luffy;
}
# 加载css、js文件
location ~ .*\.(css|js)$ {
root /opt/luffy/luffy/;
}
}

# 前端页面服务器配置
server {
listen 80;
# 不要怀疑,你没有看错!nginx的80端口可以启动 n 个域名!
server_name youdomain.com www.youdomain.com;
location / {
# /opt/luffyweb/dist/ 为npm run build生成的文件夹
root /opt/luffyweb/dist/;
index index.html;
try_files $uri $uri /index.html;
}
}

这是最基本配置,其它优化配置就不再赘述!

(2)检查nginx配置文件语法


nginx -t

(3) 启动nginx


systemctl start nginx

来源:https://www.cnblogs.com/Sunzz/p/10946346.html

标签:Vue,Django,部署
0
投稿

猜你喜欢

  • Python中的__SLOTS__属性使用示例

    2022-04-30 12:19:56
  • Dreamweaver使用中的7个常见问题与解答

    2007-11-03 11:34:00
  • python代码过长的换行方法

    2022-12-25 07:19:59
  • 关于Go 空结构体的 3 种使用场景

    2024-05-22 17:45:21
  • python修改包导入时搜索路径的方法

    2023-05-12 07:40:23
  • Oracle入侵常用操作命令整理

    2009-03-04 11:11:00
  • 心理模型

    2009-05-17 13:45:00
  • 自动备份Oracle数据库

    2024-01-16 01:16:55
  • MySQL8.0的WITH查询详情

    2024-01-24 16:43:16
  • Python使用cookielib模块操作cookie的实例教程

    2021-12-21 09:18:57
  • tensorflow 中对数组元素的操作方法

    2022-01-22 11:35:37
  • MySQL into_Mysql中replace与replace into用法案例详解

    2024-01-26 20:10:00
  • SQL中Group分组获取Top N方法实现可首选row_number

    2024-01-13 11:22:45
  • 使用绿色版SQLServer2008R2出现的问题解析

    2024-01-22 23:42:58
  • 如何连续展示数据库里的图片?

    2010-01-01 15:50:00
  • IE中radio 或checkbox的checked属性初始状态下不能选中显示问题

    2024-05-10 14:06:42
  • 解决Python pandas df 写入excel 出现的问题

    2021-07-27 15:37:21
  • CSS选择符小讲

    2009-09-17 11:53:00
  • Go语言Web编程实现Get和Post请求发送与解析的方法详解

    2024-05-09 14:52:25
  • Python利用scapy实现ARP欺骗的方法

    2021-07-24 08:26:03
  • asp之家 网络编程 m.aspxhome.com