CentOS Golang部署怎样进行
导读:CentOS上部署Golang应用的完整流程 1. 安装Golang环境 1.1 手动安装(推荐特定版本) 下载安装包:通过wget获取Go官方压缩包(以1.20.5为例): wget https://golang.org/dl/go1....
CentOS上部署Golang应用的完整流程
1. 安装Golang环境
1.1 手动安装(推荐特定版本)
- 下载安装包:通过wget获取Go官方压缩包(以1.20.5为例):
wget https://golang.org/dl/go1.20.5.linux-amd64.tar.gz - 解压到系统目录:将压缩包解压至
/usr/local(系统级安装路径):
sudo tar -C /usr/local -xzf go1.20.5.linux-amd64.tar.gz - 配置环境变量:编辑用户级配置文件(如
~/.bashrc),添加以下内容:执行export GOROOT=/usr/local/go # Go安装路径 export GOPATH=$HOME/go # 工作目录(存放项目及依赖) export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 将Go命令加入全局路径 export GO111MODULE=on # 启用Go Modules(依赖管理)source ~/.bashrc使配置生效。
1.2 使用Yum快速安装(默认版本)
- CentOS 8及以上版本使用dnf:
sudo dnf install golang -y - CentOS 7及以下版本使用yum:
sudo yum install golang -y - 验证安装:
go version(显示版本号则成功)。
2. 编译Golang项目
-
本地开发与交叉编译:在项目根目录(含
main.go)下,使用以下命令生成Linux系统的可执行文件(避免依赖目标服务器的Go环境):
GOOS=linux GOARCH=amd64 go build -o myapp
(GOOS指定操作系统,GOARCH指定架构,-o指定输出文件名)。 -
使用Go Modules管理依赖:若项目需第三方库,进入项目目录初始化模块:
go mod init < 项目名>(如go mod init myproject)
安装依赖:go get < 依赖包路径>(如go get github.com/gin-gonic/gin)。
3. 部署到CentOS服务器
3.1 上传可执行文件
- 使用
scp命令将编译好的myapp上传至服务器(替换user、server_ip、/deploy为实际值):
scp myapp user@server_ip:/deploy。
3.2 设置运行权限
- 登录服务器,为可执行文件添加运行权限:
chmod +x /deploy/myapp - 后台运行应用(输出日志至
app.log):
nohup /deploy/myapp > /deploy/app.log 2> & 1 &
(nohup防止进程因终端关闭终止,2> & 1将标准错误合并至标准输出)。
4. 使用Systemd管理服务(推荐)
- 创建服务文件:在
/etc/systemd/system/下新建myapp.service(替换/deploy/myapp、user为实际路径和用户):[Unit] Description=My Golang Application After=network.target # 确保网络就绪后启动 [Service] Type=simple # 简单服务类型(适用于前台运行的应用) User=user # 运行服务的用户(避免使用root) WorkingDirectory=/deploy # 应用工作目录 ExecStart=/deploy/myapp # 启动命令 Restart=always # 进程退出时自动重启 Environment=GO_ENV=production # 设置环境变量(如生产环境) [Install] WantedBy=multi-user.target # 多用户模式下启动 - 加载并启动服务:
sudo systemctl daemon-reload # 重新加载systemd配置 sudo systemctl start myapp # 启动服务 sudo systemctl status myapp # 查看服务状态(确认是否运行) - 设置开机自启:
sudo systemctl enable myapp。
5. 配置防火墙(允许外部访问)
- 若应用监听8080端口(或其他端口),需放行该端口:
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp # 永久添加端口规则 sudo firewall-cmd --reload # 重新加载防火墙配置 - 验证端口是否开放:
sudo firewall-cmd --zone=public --query-port=8080/tcp(返回yes则成功)。
6. 可选优化:Docker容器化部署
- 编写Dockerfile:在项目根目录创建
Dockerfile(简化部署流程):FROM golang:1.20-alpine # 使用轻量级Alpine镜像 WORKDIR /app COPY . . # 复制项目文件至容器 RUN go build -o myapp . # 编译项目 EXPOSE 8080 # 暴露端口 CMD ["./myapp"] # 启动命令 - 构建与运行镜像:
docker build -t myapp . # 构建镜像(标签为myapp) docker run -d -p 8080:8080 --name myapp_container myapp # 运行容器(映射端口) - 验证容器状态:
docker ps(查看容器是否运行)。
关键注意事项
- 环境变量一致性:确保服务器上的
GOROOT、GOPATH与开发环境一致,避免依赖问题。 - 日志管理:通过
nohup输出的日志文件(如app.log)需定期清理,或使用logrotate工具管理。 - 端口冲突:若端口已被占用,可通过
netstat -tulnp | grep < 端口>查找占用进程,或更换端口。 - 安全性:生产环境建议使用HTTPS(通过Nginx反向代理配置SSL证书),并限制应用用户权限(避免使用root)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Golang部署怎样进行
本文地址: https://pptw.com/jishu/743579.html
