在Windows下将Golang后端和Nuxt前端项目打包,并使用宝塔面板部署的步骤如下
一、Golang后端打包
交叉编译为Linux可执行文件
在Windows PowerShell中执行:
- powershell复制下载
$env:GOOS = "linux"
$env:GOARCH = "amd64"
go build -o app-linux main.go
- 压缩文件
二、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进入服务器,执行:
- bash复制下载chmod +x /www/wwwroot/backend/app-linux
- 端口占用
修改后端代码中的监听端口,或在PM2中重启进程。
本文同步在我的博客 O(∩_∩)O