centos golang项目部署配置要点
导读:CentOS Golang项目部署配置要点 1. 环境准备:安装Go及依赖 安装Go环境:通过YUM或手动下载安装包部署。例如,使用YUM命令sudo yum install golang快速安装;或从官网下载对应版本(如go1.18.l...
CentOS Golang项目部署配置要点
1. 环境准备:安装Go及依赖
- 安装Go环境:通过YUM或手动下载安装包部署。例如,使用YUM命令
sudo yum install golang
快速安装;或从官网下载对应版本(如go1.18.linux-amd64.tar.gz
),解压至/usr/local
,并配置环境变量(GOROOT=/usr/local/go
、GOPATH=$HOME/go
、PATH=$PATH:$GOROOT/bin:$GOPATH/bin
),通过source ~/.bashrc
生效。 - 安装编译依赖:若项目包含C代码(未禁用CGO),需安装编译工具链和库:
sudo yum install -y gcc gcc-c++ autoconf automake make zlib zlib-devel openssl openssl-devel pcre pcre-devel
,确保交叉编译时能正确链接依赖。
2. 项目编译:生成可执行文件
- 初始化模块(若使用Go Modules):在项目根目录执行
go mod init < module-name>
(如example.com/myapp
),生成go.mod
文件管理依赖。 - 交叉编译(推荐):针对CentOS(Linux amd64架构)编译,关闭CGO以提升可移植性:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp-linux-amd64 main.go
。使用-ldflags="-s -w"
去除调试信息和符号表,减小文件体积(如-ldflags="-s -w" CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp
)。
3. 部署与运行:基础执行配置
- 上传与授权:使用
scp
将编译后的可执行文件上传至服务器(如scp myapp-linux-amd64 user@server_ip:/opt/myapp
),并通过chmod +x /opt/myapp/myapp-linux-amd64
赋予执行权限。 - 后台运行:通过
nohup
命令让程序在后台持续运行,并将日志输出至文件:nohup /opt/myapp/myapp-linux-amd64 > /opt/myapp/log.log 2> & 1 &
。但此方式缺乏进程管理,仅适用于测试环境。
4. 进程管理:使用systemd实现守护进程
- 创建服务文件:在
/etc/systemd/system/
下创建.service
文件(如myapp.service
),内容示例:[Unit] Description=My Golang Application After=network.target [Service] User=www # 建议使用非root用户(如www) Group=www WorkingDirectory=/opt/myapp # 项目工作目录 ExecStart=/opt/myapp/myapp-linux-amd64 # 可执行文件路径 Restart=always # 失败时自动重启 Environment="APP_ENV=production" "DATABASE_URL=mysql://user:pass@localhost/db" # 环境变量 [Install] WantedBy=multi-user.target
- 启动与设置开机自启:执行
sudo systemctl daemon-reload
重新加载配置,sudo systemctl start myapp.service
启动服务,sudo systemctl enable myapp.service
设置开机自启。通过systemctl status myapp.service
查看状态。
5. 网络配置:防火墙与反向代理
- 开放防火墙端口:若项目监听8080端口,允许HTTP/HTTPS流量:
sudo firewall-cmd --permanent --add-service=http --add-service=https
,sudo firewall-cmd --reload
。若使用自定义端口(如8080),需添加--add-port=8080/tcp
。 - 配置Nginx反向代理(可选):安装Nginx(
sudo yum install nginx
),编辑配置文件(如/etc/nginx/conf.d/myapp.conf
),添加反向代理规则:
重启Nginx(server { listen 80; server_name your_domain_or_ip; location / { proxy_pass http://localhost:8080; # 转发至Go应用端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
sudo systemctl restart nginx
)后,可通过域名或IP访问应用。
6. 可选优化:Docker容器化部署
- 编写Dockerfile:在项目根目录创建
Dockerfile
,内容示例:FROM golang:1.18 AS builder WORKDIR /app COPY . . RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o myapp . FROM alpine:latest WORKDIR /app COPY --from=builder /app/myapp . EXPOSE 8080 CMD ["./myapp"]
- 构建与运行:执行
docker build -t myapp .
构建镜像,docker run -d -p 8080:8080 --name myapp-container myapp
运行容器。通过Docker Compose可管理多容器(如Nginx+Go应用)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos golang项目部署配置要点
本文地址: https://pptw.com/jishu/721439.html