前言
- 本来想都用docker部署的,结果学艺实在是不精,只能先这么委曲求全
- 宝塔页面的反向代理一直无法生效,用了重定向跳转页面
- 宝塔的网站也可以构建go项目
背景
后端使用GoFrame
框架,前端使用Vue 3 + TypeScript + Vite
,服务器和域名均使用阿里云服务器。
后端部署
- 安装
docker
- 安装
git
,设置git config --global
和ssh
公钥,将项目clone
到服务器里,这里的目录是:/usr/local/goproject
- 设置
Dockerfile
,这里直接将该文件放到了项目里。
其中系统的版本号通过lsb_release -a
获得;golang
的版本要根据go.mod
确定,进入网站更换为对应的链接即可;MYPATH
要更换为对应的项目路径。
FROM centos:7.6.1810
FROM centos:7.6.1810
ENV MYPATH /usr/local/goproject
WORKDIR $MYPATH
RUN yum -y update \
&& yum -y install vim \
&& yum -y install git \
&& yum install -y gcc-c++ \
&& yum -y install wget \
&& wget -P /root/ https://studygolang.com/dl/golang/go1.15.15.linux-amd64.tar.gz \
&& tar -zxvf /root/go1.15.15.linux-amd64.tar.gz -C /usr/local \
&& echo export PATH=$PATH:/usr/local/go/bin >> /etc/profile \
&& source /etc/profile && go version \
&& echo "source /etc/profile" >> /root/.bashrc \
&& go env -w GOPROXY=https://goproxy.cn,direct \
&& go env -w GO111MODULE=on \
- 构建容器
docker build -f Dockerfile文件名 -t 镜像名 .
。为了方便文件名和镜像名都用的film_test_1
。 - 运行容器
docker run -it -v /usr/local/goproject:/usr/local/goproject -v /etc/localtime:/etc/localtime -p 8080:8000 --cap-add SYS_TIME --name film_test_1 film_test_1 /bin/bash
- 进入容器
docker exec -it film_test_1 /bin/bash
- 编译
go build -o film_test_1 main.go
- 运行
nohup /usr/local/goproject/film_book_go//film_test_1 > start.log 2>&1 &
项目的日志在start.log里
前端部署
借助宝塔页面进行部署
前提:解析域名并获得SSL证书
- 宝塔页面“网站”页面“添加站点”,注意根目录的写法
- 点击“设置”==“SSL”,加入SSL证书
- 在前端项目里运行
npm run build
,打包 - 将文件上传到服务器
在前面的根目录下面,文件夹名跟vite.config.ts
的base
一样
- 设置反向代理
用反向代理一直不好使,用重定向实现的
改后遇到了一个错误是原本请求是POST
请求,重定向后变成了GET
请求,在配置文件里手动将重定向方式改成307
参考博客
Docker部署golang项目
vite+vue3项目通过宝塔部署到服务器