部署项目前需要环境:阿里云云服务器ECS,宝塔面板
阿里云云服务器ECS实例创建过程
- 先登录阿里云网站注册账号,进入控制台左侧导航栏中云服务器ECS页面
- 根据自己的需求去创建一个新的实例(需要付费)
- 如果是学生的话,完成认证之后可以免费试用一个月,过期之前完成实验和测试任务拿到证书还可以再免费使用6月。
添加实例安全组
服务器是需要端口放行的,否则你的端口将无法访问,因为安全需要,所以云服务器存在安全组这个东西。常用需要放行的端口:tomcat 8080端口,mysql 3306端口 https 443和80端口
基于阿里云安装宝塔面板
注意事项:出于性能考虑,服务器的操作系统一定要选Linux版本(centos或者ubuntu),不要选Window。
-
阿里云的云服务器,即阿里云ECS,默认的用户名 root,密码的话建议修改。
-
远程连接云服务器,使用用户名密码登录workbench,使用的是公网ip
-
输入宝塔安装命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
中途会弹出是否安装,输入y,按照提示继续安装
不同系统的安装命令不同,具体可以在宝塔官网查看
https://www.bt.cn/new/download.html
宝塔面板安装成功后,如下图所示:
上面三个是很重要的参数,一定要记住!
打开上面的宝塔链接,输入用户名和密码,进入宝塔面板:
LNMP: Linux + Nginx + Mysql + PHP
LAMP: Linux + Apache + Mysql + PHP
两者区别:静态内容多建议选择Nginx内存占用更少。 动态内容较多建议选择Apache更稳定。
修改登录宝塔的路径以及用户名和,密码,重新登录即可
阿里云ecs参考视频:https://www.bilibili.com/video/BV12b4y18725?p=1&vd_source=d14cc35dc785edf94050c3a6a05600fc
宝塔面板部署go项目
我们都知道,部署项目,其实就是他的二进制文件,基本都是有多种方式部署:
- 将项目文件打包进入服务器,并下载go环境,build该go项目,并run起来;即和本地跑项目没太大区别;但是该方法不太适合大型的项目,因为build会占用较大的内存,而服务器内存通常都较小,会有概率失败,而且下载各种环境也是一个弊端,日常项目自然是没有问题的;
- 使用docker部署项目到服务器;
- 事先生成项目的linux版本二进制文件为main,单独将main拉进服务器,并配置启动项,若没有问题可直接运行,直接少了build和下载环境的步骤;
1.手动配置部署
环境配置
在go官方下载linux的go包,网址:
All releases - The Go Programming Language (google.cn)
下载完毕后上传到服务器
然后将文件解压(解压地址可以自己设置)
tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
将Go语言的可执行文件路径添加到系统的PATH环境变量中,以便在任何位置都能够访问到Go相关的命令。
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
然后运行以下命令使其生效:
source ~/.bashrc
验证安装: 执行以下命令验证Go语言是否成功安装:
go version
如果输出Go的版本信息,则表示安装成功。
然后设置go的代理地址,建议设置,不然可能会下载库很慢;
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn
将源代码拉入服务器并生成项目二进制文件
1.进入项目指定目录,上传自己本地项目的压缩包,效果图如下,并解压成文件夹;
进入项目根目录,打开终端,输入go mod tidy下载项目需要的依赖库,再使用go build main.go生成二进制可执行文件main;
创建项目
将项目生成的二进制main文件填入(仿照下边这个)
保存之后使用ip+端口+路由就可以访问了;
若想要配置域名,需要点击域名管理,增加域名,并申请ssl证书;
如果有数据库,也需要建立对应的数据库用户和密码,并将表结构导入;(同代码配置文件中写的一致);
2docker配置部署
为了能够更完整的演示docker部署,教程会先演示在本地生成docker镜像并提交到dockerhub,然后在服务器上拉取先前提交的docker镜像生成容器运行;
以一个启动main.go文件启动的项目示例
前置条件:
1.windows上下载docker desktop
2.注册dockerhub账号,并在本地登录dockerhub
好了,下边是演示:
首先要保证你的项目可以运行,新建一个Dockerfile文件,输入以下基础go项目配置
输入:
# 基于 golang 镜像构建 Docker 容器
FROM golang:latest
# 设置工作目录为 /app
WORKDIR /app
# 将当前目录下的所有文件复制到工作目录 /app 中
COPY . .
# 编译 Go 语言程序
RUN go build -o main .
# 暴露容器的端口,如果您的 Go 语言程序监听了某个端口,则需要暴露该端口
EXPOSE 8080
# 运行 Go 语言程序
CMD ["./main"]
在终端输入:
docker login
若第一次登录是需要输入账号密码;
生成docker镜像
docker build -t test:v1
-t 设置镜像名称和版本号 test是镜像名称 v1是版本号;
先测试运行下
docker run -p主机端口号:容器端口号 -d --name 容器名 镜像名:版本号;
如果项目能运行就将其推送到dockerhub;:
标记你的本地镜像以指定 Docker Hub 中的目标仓库和标签:
docker tag [本地镜像名称] [你的 Docker Hub 用户名]/[目标仓库名称]:[标签]
最后,推送镜像到 Docker Hub:
docker push [你的 Docker Hub 用户名]/[目标仓库名称]:[标签]
然后进入服务器,同样输入docker login登录
从 Docker Hub 拉取并运行镜像:
使用以下命令从 Docker Hub 拉取镜像:
docker pull [你的 Docker Hub 用户名]/[目标仓库名称]:[标签]
拉取完成后,你可以运行该镜像:
docker run [你的 Docker Hub 用户名]/[目标仓库名称]:[标签]
此时你的项目就在服务器上运行了,嗯,非常的方便;
3可执行文件配置
第三种是先生成main可执行文件,只将可执行文件拉入服务器中,之后过程和方法一配置网站一样…