fastapi+vue3前后端宝塔部署实战-手把手教学

1 篇文章 0 订阅
1 篇文章 0 订阅

宝塔安装文档:

主要步骤

  1. 代码上传gitee 获取gitee ssh密钥

  2. 阿里云服务器购买,宝塔安装

  3. 后端安装

  4. 前端安装

  5. 域名解析

01 代码上传gitee, 获取gitee ssh密钥

  1. gitee创建同名仓库

    因为我已近创建过whale-coin了,所以截图里显示whale-coin1

    image-20240711174432304

  2. 和本地的whale-coin进行关联

    ## 正常如果你是个人新建的仓库,是下面这种关联方法。
    
    cd whale-coin1
    git remote add origin git@gitee.com:fengxiaoyang163/whale-coin1.git
    git push -u origin "master"
    
    ## 但是因为这是从github下载的,所以本身已经有了git的远程关联:
    (base) E:\share\github\07yue\whale-coin1>git remote -v                                 
    origin  https://github.com/datawhalechina/whale-coin.git (fetch)
    origin  https://github.com/datawhalechina/whale-coin.git (push)
    
    ## 所以可以用下面再进行gitee关联,把add origin 改为gitee 
    (base) E:\share\github\07yue\whale-coin1>git remote add gitee  git@gitee.com:fengxiaoyang163/whale-coin1.git                
    
    (base) E:\share\github\07yue\whale-coin1>git remote -v
    gitee   git@gitee.com:fengxiaoyang163/whale-coin1.git (fetch)
    gitee   git@gitee.com:fengxiaoyang163/whale-coin1.git (push)
    origin  https://github.com/datawhalechina/whale-coin.git (fetch)
    origin  https://github.com/datawhalechina/whale-coin.git (push)
    
  3. 添加gitee ssh密钥

    生成 SSH 密钥: 如果你还没有生成 SSH 密钥,可以通过以下命令生成一个新的 SSH 密钥对:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    按提示完成生成过程,这会在你的用户目录下创建一个 .ssh 文件夹,里面包含 id_rsaid_rsa.pub 文件。

    添加 SSH 密钥到 SSH 代理: 确保 SSH 代理正在运行,并添加你的 SSH 私钥到 SSH 代理:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa
    

    将 SSH 公钥添加到 Gitee: 复制你的公钥内容,并将其添加到 Gitee:

    cat ~/.ssh/id_rsa.pub
    

    将输出的内容复制,然后登录到 Gitee,进入 “设置” -> “SSH公钥”,点击 “添加公钥”,将复制的内容粘贴进去。

  4. 推送到gitee

    git push gitee main
    

    image-20240711174515457

02 阿里云服务器安装宝塔

方法1:选择有宝塔的服务器:.

image-20240711174638894

2. 方法2:自行安装宝塔

没有选择自带宝塔的,则可以根据宝塔官方进行安装:

https://www.bt.cn/new/download.html

image-20240711174712281

3. 登录宝塔

选择自带宝塔的可以通过命令bt→14查看宝塔登录信息;自主安装宝塔的,安装完成后,宝塔会显示登录账号。

image-20240711174728178

image-20240711174738012

4. 宝塔安装mysql8.0+Ngix1.24

在软件商店安装:

image-20240711174749133

5.配置安全组端口

路径:安全→添加端口规则

把需要的端口都一次开好。

mysql:3306

网站访问:80,443

后端:8008

前端:5173

ssh远程服务:22

image-20240711174800965

image-20240710220219997

同时,阿里云服务器上对应的安全组端口也要确保打开:

路径一般是:控制台→云服务器ECS→安全组→入方向

image-20240710220113562

image-20240710220304488

03 后端安装

1. 安装python3.10.5

image-20240710211832670

image-20240710211857604

2. 从gitee上下载仓库

宝塔默认安装路径是

cd /www/wwwroot/
# clone时如果出现密码登录问题,从gitee后台生成一个key,输入密码时,直接用这个key,下次就不用再输入了。
git clone git@gitee.com:fengxiaoyang163/whale-coin1.git

image-20240710212507656

image-20240710212139594

3. 安装python后端项目

路径:网站→添加Python项目

image-20240710212743961

具体设置如下

项目名称:backend(任意,英文)
项目端口:8008
启动方式:命令行启动
项目路径:/www/wwwroot/whale-coin/backend
启动命令:gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app --bind 0.0.0.0:8008
环境变量:从文件加载
路径:/www/wwwroot/whale-coin/backend/.env.production(这里是自定义的,主要是github仓库上用的事sqlite,线上部署用的是mysql)

image-20240710212839817

安装完成后,可以浏览器打开查看:

  • ip:port

image-20240710213848928

  • ip:port/docs

image-20240710213923331

04 前端安装

这里前端是使用的vue3,前端安装时,有2种方法,法1是直pm run build生成静态文件。法2是安装服务器安装node环境,然后npm run build进行启动


```shell
cd fronted
npm run build
# 会在如下目录生成静态文件:
dist/www/wwwroot/whale-coin/frontend/dist
下面截图,dist我删除了,原来是有的

image-20240710214648367

1.1 查找Ngix设置路径

从 软件商店→设置→配置修改

下拉到最后,可以发现,ngix代理以下目录的所有conf

/www/server/panel/vhost/nginx/*.conf

image-20240711175002050

所以,我们可以在以下路径新建一个conf文件,进行ngix代理配置,文件名称可以任意

1.2 配置coin.conf

image-20240710215458534

下面是具体coif.conf的配置,只需要把服务器ip,修改成你自己的服务器即可

image-20240711175019756

server {
    listen 80;
    server_name 47.120.9.229;(服务器ip)

    # 配置前端
    location / {
        root /www/wwwroot/whale-coin/frontend/dist;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    # 配置API请求代理到后端
    location /api/ {
        proxy_pass http://127.0.0.1:8008/; # 假设FastAPI后端运行在8000端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        # 处理CORS
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT";
        add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Requested-With";

        if ($request_method = OPTIONS) {
            return 204;
        }
    }

法2:安装node,用开发模式npm run dev

下面方法不推荐,但是也可以使用

2.1 安装node环境

同理,node也是在侧边栏 网站→Node项目下,安装对应版本,我这里选择的是18.18.2

image-20240710214048232

image-20240710214149767

2.2 安装前端项目

路径

网站→添加Node项目

项目目录:/www/wwwroot/whale-coin/frontend
项目名称:frontend
启动选项:npm run dev
项目端口:5173
运行用户:www * 无特殊需求请选择www用户
包管理器:npm
* 请选择项目的包管理器
Node版本:v18.18.2

image-20240710220555164

2.3 配置coif.conf

使用npm run dev启动前端时,/www/server/panel/vhost/nginx/coin.conf的配置如下:

shell

server {
listen 80;
server_name 47.120.9.229;

# 前端开发服务器的代理设置
location / {
    proxy_pass http://127.0.0.1:5173;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

# 后端API的代理设置
location /api/ {
    proxy_pass http://127.0.0.1:8008/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    
    # 处理CORS
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT";
    add_header Access-Control-Allow-Headers "Authorization, Content-Type, X-Requested-With, token";

    if ($request_method = OPTIONS) {
        return 204;
    }
}

}

05 域名解析

最后在服务器后台,进行域名解析

shell

进入域名解析控制台后,点击“添加记录”按钮。你需要添加两个记录,分别是www和@。

解析www:

记录类型:选择“A”记录。
主机记录:填写“www”。
记录值:填写你的服务器IP地址。
TTL:默认即可。
解析@:

记录类型:选择“A”记录。
主机记录:填写“@”。
记录值:填写你的服务器IP地址。
TTL:默认即可。

06 验证

如果一切顺利,打开你自定义的域名http://christarter.com/

image-20240710221406434

看到以上页面,恭喜你,成功部署了一个前后端分离的网站!

07重要文件配置检查

如果出现问题,检查以下文件

1. whale-coin/frontend/src/request/base.ts

把baseURL直接改成 域名:8008 or 服务器ip:8008

import axios from 'axios'
import { useLoginStore } from "../store";
const loginstate = useLoginStore();
// 创建axios实例
const instance = axios.create({
	# baseURL: loginstate.iframeurl,
    baseURL: 'http://christarter.com:8008',// 所有的请求地址前缀部分(没有后端请求不用写)

2. whale-coin/frontend/vite.config.ts

确保这里api请求路径正确,

shell.
import { defineConfig } from “vite”;
import vue from “@vitejs/plugin-vue”;

// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
server: {
host: “0.0.0.0”,
proxy: {
“/api”: {
target: “http://localhost:8008”, // 你的FastAPI后端地址
changeOrigin: true,
rewrite: (path) => path.replace(/^/api/, “”),

  },
},

},
});

.

  1. 
    
    VITE_API_URL=http://christarter.com:8008
    #或则 VITE_API_URL=http://服务器ip:8008
    
    
    
    
    
本文介绍了一个基于Spring Boot、Spring Cloud和Vue前后端分离的项目实战。这个项目是一个简单的在线商城,包含了用户注册、登录、商品展示、购物车、订单管理等功能。通过这个项目,读者可以深入理解前后端分离的架构模式和互联网应用的开发方式。 首先,文章介绍了前后端分离的基本概念和优势。前后端分离是将应用的前端和后端代码分开来开发,使得前端和后端具有独立的开发周期和技术栈,进而提高了开发效率和代码质量。同时,前后端分离还可以提供更好的用户体验和灵活性,对于互联网应用来说尤为重要。 接下来,文章介绍了项目的架构和技术栈。项目采用了Spring Boot和Spring Cloud框架来实现后端代码,采用MyBatis作为ORM框架和Redis作为缓存中间件。同时,项目还采用了Vue.js作为前端框架和Element UI组件库来实现前端页面。通过这些开源框架和组件,可以快速搭建一个前后端分离的互联网应用。 然后,文章介绍了项目的核心功能和代码实现。在用户注册和登录方面,项目采用了Spring Security框架和JWT令牌来实现用户认证和授权,保证了用户信息的安全性。在商品展示和购物车方面,项目采用了Vue.js来实现前端页面和事件处理。在订单管理方面,项目采用了MyBatis Plus来实现订单数据的持久化和分页查询。 最后,文章介绍了项目的测试和优化。通过对项目的压力测试和性能测试,文章发现项目还存在一些性能瓶颈和安全隐患,可以通过优化数据库查询、缓存配置和代码实现来提高应用的性能和安全性。 总之,这篇文章介绍了一个基于Spring Boot、Spring Cloud和Vue前后端分离的项目实战,通过实现一个在线商城的功能,展示了前后端分离的开发模式和互联网应用的开发技术栈。本文可以作为前后端分离开发的入门教程,也可以作为互联网应用开发的参考文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值