在Debian系统下部署Golang项目通常涉及以下几个关键步骤:
sudo apt update
sudo apt install golang
wget https://golang.org/dl/go1.22.0.linux-amd64.tar.gz
/usr/local目录:sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
~/.bashrc或~/.zshrc文件,添加以下内容:export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
使配置生效:source ~/.bashrc
go version
在项目目录中,使用以下命令编译你的应用:
cd /path/to/your/project
go build -o myapp
这将在当前目录下生成一个名为myapp的可执行文件。
为了确保应用程序在后台稳定运行,可以使用nohup命令或systemd服务。
nohup命令nohup ./myapp &
这将使程序在后台运行,并将输出重定向到nohup.out文件。
systemd服务systemd服务文件,例如/etc/systemd/system/myapp.service:[Unit]
Description=My Golang App
After=syslog.target network.target
[Service]
Type=simple
ExecStart=/path/to/myapp
Restart=always
User=yourusername
Group=yourgroupname
Environment=PORT=8080
[Install]
WantedBy=multi-user.target
systemd配置:sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp
使用Docker可以简化部署过程,并且可以确保环境的一致性。
创建Dockerfile:
# 使用官方的Go镜像作为基础镜像
FROM golang:1.22
# 设置工作目录
WORKDIR /app
# 复制go.mod和go.sum文件
COPY go.mod go.sum ./
# 下载所有依赖
RUN go mod download
# 复制项目文件
COPY . .
# 编译项目
RUN go build -o myapp
# 暴露端口
EXPOSE 8080
# 运行编译后的二进制文件
CMD ["./myapp"]
构建Docker镜像:
docker build -t myapp .
运行Docker容器:
docker run -d -p 8080:8080 --name myapp-container myapp
如果你希望使用Nginx作为反向代理来提高安全性和性能,可以按照以下步骤进行配置:
安装Nginx:
sudo apt get install nginx
配置Nginx以反向代理到你的Golang应用端口:
编辑/etc/nginx/sites-available/default文件,添加以下内容:
server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://localhost:8080;
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;
}
}
重启Nginx:
sudo systemctl restart nginx
确保Nginx配置允许外部访问:
sudo ufw allow 'Nginx Full'