Windows下Golang与Nuxt项目宝塔部署指南

news2025/4/23 7:22:13

在Windows下将Golang后端和Nuxt前端项目打包,并使用宝塔面板部署的步骤如下


一、Golang后端打包

交叉编译为Linux可执行文件
在Windows PowerShell中执行:

  1. powershell复制下载
$env:GOOS = "linux"
$env:GOARCH = "amd64"
go build -o app-linux main.go

  1. 压缩文件


二、Vue前端打包

安装依赖并构建
在Windows本地项目根目录执行:

bash复制下载
npm install
npm run build       第一种
npm run generate    第二种

这个之后会生成.nuxt黄色的文件

第二种打包指令为例
npm run generate

如果是用generate,需要更改下nuxt.config.js配置文件的路径,生成一个dist文件,类似Vue

如果前端执行打包命令npm run build/genergate报错

npm命令无法执行

查看自己是否安装了node,需要编辑环境变量

需要自行下载官网的安装包,根据教程配置系统环境变量,这里就不延申了。

检查是否安装成功

node -v

npm -v


三、宝塔面板部署

1. 上传文件到服务器
  • 登录宝塔面板,进入 文件管理,上传两个压缩包到服务器
  • 解压文件

2. 部署前端
  • 添加静态网站
    在宝塔面板

3. 部署后端

宝塔面板部署文档

4. 配置Nginx(可选)

在网站设置的 配置文件 中添加API路由转发:

location /api/ {
    proxy_pass http://127.0.0.1:8080/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}
5. 开放端口

6.使用docker 部署(可选)

【Docker 模块】使用手册 - Linux面板 - 宝塔面板论坛

按照教程拉取需要的镜像和部署自己的容器

在上传的文件夹新增两个文档,一个是dockerfile,一个是docker-compose

然后打开宝塔面板的终端,cd 文件目录进入文件,执行命令

进入终端

容器目录

/etc/mysql/my.cnf
/var/lib/mysql

docker-entrypoint.sh


com.docker.compose.config-hash=
com.docker.compose.container-number=1
com.docker.compose.depends_on=
com.docker.compose.image=
com.docker.compose.oneoff=False
com.docker.compose.project=test
com.docker.compose.project.config_files=/www/wwwroot/docker-compose.yml
com.docker.compose.project.working_dir=/www/wwwroot/test
com.docker.compose.service=mysql
com.docker.compose.version=2.27.1


MYSQL_ROOT_PASSWORD=
TZ=Asia/Shanghai
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
GOSU_VERSION=1.17
MYSQL_MAJOR=8.0
MYSQL_VERSION=8.0.36-1.el8
MYSQL_SHELL_VERSION=8.0.36-1.el8

查看数据库运行状态

检测mysqk当前占用的端口号

数据库连接错误:错误代码1045
2025-04-22T14:20:35.175+0800    info    cmd/root.go:120 config  {"Using config file:": "/www/wwwroot/qibuDoc/server/app.toml", "config": {"Level":"debug","LogEncoding":"console","Logger":{"Filename":"","MaxSizeMB":10,"MaxBackups":10,"MaxDays":30,"Compress":true},"Port":8881,"Database":{"DSN":"root:sevenstep0628@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true","ShowSQL":false,"MaxIdle":10,"MaxOpen":10,"Prefix":"mnt_"},"Redis":{"Addr":"localhost:6379","Password":"","DB":1,"PoolSize":200,"MinIdleConns":10,"MaxIdleConns":100,"ConnMaxIdleTime":"3m"},"JWT":{"Secret":"qibu","ExpireDays":365}}}
2025-04-22T14:20:35.176+0800    error   model   model/init.go:107       NewDBModel      {"error": "Error 1045: Access denied for user 'root'@'localhost' (using password: YES)", "config": {"DSN":"root:sevenstep0628@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true","ShowSQL":false,"MaxIdle":10,"MaxOpen":10,"Prefix":"mnt_"}}
moredoc/model.NewDBModel
        E:/worksapce/qibu_work/moredoc/moredoc-master/model/init.go:107
moredoc/service.Run
        E:/worksapce/qibu_work/moredoc/moredoc-master/service/serve.go:56
moredoc/cmd.runServer
        E:/worksapce/qibu_work/moredoc/moredoc-master/cmd/root.go:274
github.com/mnt-ltd/daemore.(*Daemon).Run
        E:/worksapce/qibu_work/goPath/pkg/mod/github.com/mnt-ltd/daemore@v0.0.0-20240227053424-d57afb9f5e67/daemore.go:65
2025-04-22T14:20:35.176+0800    fatal   service/serve.go:58     NewDBModel      {"error": "Error 1045: Access denied for user 'root'@'localhost' (using password: YES)"}
moredoc/service.Run
        E:/worksapce/qibu_work/moredoc/moredoc-master/service/serve.go:58
moredoc/cmd.runServer
        E:/worksapce/qibu_work/moredoc/moredoc-master/cmd/root.go:274
github.com/mnt-ltd/daemore.(*Daemon).Run
        E:/worksapce/qibu_work/goPath/pkg/mod/github.com/mnt-ltd/daemore@v0.0.0-20240227053424-d57afb9f5e67/daemore.go:65
om.docker.compose.config-hash=495ea4852518e4dfc1e3b3c50ff0a38035f2cd82f67263948bb259c6cfecec47
com.docker.compose.container-number=1
com.docker.compose.depends_on=qibudoc-mysql:service_started:false,qibudoc-redis:service_started:false
com.docker.compose.image=sha256:d4adc55fc9708944836bfef4e4189b3c1ae8a7f6407e00126f41858c2431ed1c
com.docker.compose.oneoff=False
com.docker.compose.project=qibudoc-test
com.docker.compose.project.config_files=/www/wwwroot/test/qibudoc-test/docker-compose.yml
com.docker.compose.project.working_dir=/www/wwwroot/test/qibudoc-test
com.docker.compose.service=qibudoc-server
com.docker.compose.version=2.27.1
org.opencontainers.image.ref.name=ubuntu
org.opencontainers.image.version=22.04

MOREDOC_REDIS_ADDR=qibudoc-redis:6379
MOREDOC_REDIS_PASSWORD=qibu
MOREDOC_REDIS_DB=0
MOREDOC_DATABASE_DSN=root:qibudoc@tcp(qibudoc-mysql:3306)/qibudoc?charset=utf8mb4&loc=Local&parseTime=true
MOREDOC_JWT_SECRET="qibu"
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

重新指定

docker run -d 
  --name doc-mysql 
  -p 3306:3306 
  -v /path/to/mysql/data:/var/lib/mysql 
  -e MYSQL_ROOT_PASSWORD= 123456
  mysql:8.0.36

出错,定位到文件,执行不了

root@hcss-ecs-1d46:/www/wwwroot/qibuDoc/server# ./qibudoc serve
2025-04-22T14:34:57.741+0800    info    cmd/root.go:120 config  {"Using config file:": "/www/wwwroot/qibuDoc/server/app.toml", "config": {"Level":"debug","LogEncoding":"console","Logger":{"Filename":"","MaxSizeMB":10,"MaxBackups":10,"MaxDays":30,"Compress":true},"Port":8881,"Database":{"DSN":"root:sevenstep0628@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true","ShowSQL":false,"MaxIdle":10,"MaxOpen":10,"Prefix":"mnt_"},"Redis":{"Addr":"localhost:6379","Password":"","DB":1,"PoolSize":200,"MinIdleConns":10,"MaxIdleConns":100,"ConnMaxIdleTime":"3m"},"JWT":{"Secret":"qibu","ExpireDays":365}}}
2025-04-22T14:34:57.743+0800    error   model   model/init.go:107       NewDBModel      {"error": "Error 1045: Access denied for user 'root'@'localhost' (using password: YES)", "config": {"DSN":"root:sevenstep0628@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true","ShowSQL":false,"MaxIdle":10,"MaxOpen":10,"Prefix":"mnt_"}}
moredoc/model.NewDBModel
        E:/worksapce/qibu_work/moredoc/moredoc-master/model/init.go:107
moredoc/service.Run
        E:/worksapce/qibu_work/moredoc/moredoc-master/service/serve.go:56
moredoc/cmd.runServer
        E:/worksapce/qibu_work/moredoc/moredoc-master/cmd/root.go:274
github.com/mnt-ltd/daemore.(*Daemon).Run
        E:/worksapce/qibu_work/goPath/pkg/mod/github.com/mnt-ltd/daemore@v0.0.0-20240227053424-d57afb9f5e67/daemore.go:65
2025-04-22T14:34:57.743+0800    fatal   service/serve.go:58     NewDBModel      {"error": "Error 1045: Access denied for user 'root'@'localhost' (using password: YES)"}
moredoc/service.Run
        E:/worksapce/qibu_work/moredoc/moredoc-master/service/serve.go:58
moredoc/cmd.runServer
        E:/worksapce/qibu_work/moredoc/moredoc-master/cmd/root.go:274
github.com/mnt-ltd/daemore.(*Daemon).Run
        E:/worksapce/qibu_work/goPath/pkg/mod/github.com/mnt-ltd/daemore@v0.0.0-20240227053424-d57afb9f5e67/daemore.go:65

解决方案:

新建数据库,重新设置数据库密码,再执行连接命令

部署成功:下面是打印的日志

显示后端运行的监听端口号,则运行成功,类似再idea的窗口运行项目。

四、验证部署


遇到的部分问题

二进制文件无法执行
通过SSH进入服务器,执行:

  1. bash复制下载chmod +x /www/wwwroot/backend/app-linux
  2. 端口占用
    修改后端代码中的监听端口,或在PM2中重启进程。


本文同步在我的博客 O(∩_∩)O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2340599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

真实趋势策略思路

该交易策略通过一系列技术指标的计算与逻辑判断,旨在捕捉市场趋势的反转与延续点,以实现盈利。其主要交易逻辑思路可以概括如下: 1. 趋势与动量分析 策略首先利用动量函数计算收盘价的短期(3周期)变化,通过…

江奇霖惊喜亮相泡泡岛音乐节,新歌首唱+合作舞台燃动现场

2025年4月20日,江奇霖受邀参加2025泡泡岛音乐与艺术节东南站。现场献唱三首歌曲,超5万名观众现场一同感受音乐的魅力。 在泡泡岛SPECIAL SET特别企划舞台中,江奇霖带来新歌的首唱,温暖的旋律如低语倾诉,观众们也纷纷喊…

【HarmonyOS】ArKUI框架

目录 概述 声明式开发范式 基于ArKUI的项目 • 1.创建资源文件 • 2.引用资源 • 3.引用系统资源: • 系统资源有哪些 • 4. 在配置和资源中引用资源 声明式语法 UI描述规范 UI组件概述 组件化 组件渲染控制语法 修改…

计算机网络八股——HTTP协议与HTTPS协议

目录 HTTP1.1简述与特性 1. 报文清晰易读 2. 灵活和易于扩展 3. ⽆状态 Cookie和Session 4. 明⽂传输、不安全 HTTP协议发展过程 HTTP/1.1的不足 HTTP/2.0 HTTP/3.0 HTTPS协议 HTTP协议和HTTPS协议的区别 HTTPS中的加密方式 HTTPS中建立连接的方式 前言&#xff…

webpack基础使用了解(入口、出口、插件、加载器、优化、别名、打包模式、环境变量、代码分割等)

目录 1、webpack简介2、简单示例3、入口(entry)和输出(output)4、自动生成html文件5、打包css代码6、优化(单独提取css代码)7、优化(压缩过程)8、打包less代码9、打包图片10、搭建开发环境(webpack-dev-server&#xf…

微信小程序 van-dropdown-menu

点击其他按钮,关闭van-dropdown-menu下拉框 DropdownMenu 引入页面使用index.wxmlindex.scssindex.ts(重点)index.ts(全部) DropdownMenu 引入 在app.json或index.json中引入组件 "usingComponents": {"van-dropdown-menu": "vant/weapp…

智驱未来:AI大模型重构数据治理新范式

第一章 数据治理的进化之路 1.1 传统数据治理的困境 在制造业巨头西门子的案例中,其全球200个工厂每天产生1.2PB工业数据,传统人工清洗需要300名工程师耗时72小时完成,错误率高达15%。数据孤岛问题导致供应链决策延迟平均达48小时。 1.2 A…

C++ 蓄水池抽样算法

(1)概念 蓄水池抽样算法(Reservoir Sampling)是一种用于从 大规模数据集(尤其是 流式数据 或 无法预先知晓数据总量 的场景)中 等概率随机抽取固定数量样本 的算法。 (2)实现 我们…

分布式光纤测温技术让森林火灾预警快人一步

2025年春季,多地接连发生森林火灾,累计过火面积超 3万公顷。春季历来是森林草原火灾易发、多发期,加之清明节已到来,生产生活用火活跃,民俗祭祀用火集中,森林火灾风险进一步加大。森林防火,人人…

Vue2 el-checkbox 虚拟滚动解决多选框全选卡顿问题 - 高性能处理大数据量选项列表

一、背景 在我们开发项目中,经常会遇到需要展示大量选项的多选框场景,比如权限配置、数据筛选等。当选项数量达到几百甚至上千条时,传统的渲染方式全选时会非常卡顿,导致性能问题。本篇文章,记录我使用通过虚拟滚动实现…

KUKA机器人KR 3 D1200 HM介绍

KUKA KR 3 D1200 HM是一款小型机器人,型号中HM代表“Hygienic Machine(卫生机械)用于主副食品行业”,也是一款并联机器人。用于执行高速、高精度的抓取任务。这款机器人采用食品级不锈钢设计,额定负载为3公斤&#xff…

【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出)

【MATLAB第117期】#源码分享 | 基于MATLAB的SSM状态空间模型多元时间序列预测方法(多输入单输出) 引言 本文使用状态空间模型实现失业率递归预测,状态空间模型(State Space Model, SSM)是一种用于描述动态系统行为的…

【Linux】线程ID、线程管理、与线程互斥

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 上篇文章: 【Linux】线程:从原理到实战,全面掌握多线程编程!-CSDN博客 下…

【锂电池SOH估计】RF随机森林锂电池健康状态估计,锂电池SOH估计(Matlab完整源码和数据)

目录 效果一览程序获取程序内容代码分享研究内容基于随机森林(RF)的锂电池健康状态(SOH)估计算法研究摘要1. 引言2. 锂电池SOH评估框架3. 实验与结果分析4. 未来研究方向6. 结论效果一览 程序获取 获取方式一:文章顶部资源处直接下载:【锂电池SOH估计】RF随机森林锂电池…

【Pytorch 中的扩散模型】去噪扩散概率模型(DDPM)的实现

介绍 广义上讲,扩散模型是一种生成式深度学习模型,它通过学习到的去噪过程来创建数据。扩散模型有很多变体,其中最流行的通常是文本条件模型,它可以根据提示生成特定的图像。一些扩散模型(例如 Control-Net&#xff0…

121.在 Vue3 中使用 OpenLayers 实现去掉鼠标右键默认菜单并显示 Feature 信息

🎯 实现效果 👇 本文最终实现的效果如下: ✅ 地图初始化时绘制一个多边形; ✅ 鼠标 右键点击地图任意位置; ✅ 若命中 Feature,则弹出该图形的详细信息; ✅ 移除浏览器默认的右键菜单,保留地图交互的完整控制。 💡 整个功能基于 Vue3 + OpenLayers 完成,采用 Com…

进阶篇 第 6 篇:时间序列遇见机器学习与深度学习

进阶篇 第 6 篇:时间序列遇见机器学习与深度学习 (图片来源: Tara Winstead on Pexels) 在上一篇中,我们探讨了如何通过精心的特征工程,将时间序列预测问题转化为机器学习可以处理的监督学习任务。我们学习了如何创建滞后特征、滚动统计特征…

【音视频】音频解码实战

音频解码过程 ⾳频解码过程如下图所示: FFmpeg流程 关键函数 关键函数说明: avcodec_find_decoder:根据指定的AVCodecID查找注册的解码器。av_parser_init:初始化AVCodecParserContext。avcodec_alloc_context3:为…

DOCA介绍

本文分为两个部分: DOCA及BlueField介绍如何运行DOCA应用,这里以DNS_Filter为例子做大致介绍。 DOCA及BlueField介绍: 现代企业数据中心是软件定义的、完全可编程的基础设施,旨在服务于跨云、核心和边缘环境的高度分布式应用工作…

# 利用迁移学习优化食物分类模型:基于ResNet18的实践

利用迁移学习优化食物分类模型:基于ResNet18的实践 在深度学习的众多应用中,图像分类一直是一个热门且具有挑战性的领域。随着研究的深入,我们发现利用预训练模型进行迁移学习是一种非常有效的策略,可以显著提高模型的性能&#…