在Linux系统上部署Golang应用程序通常涉及以下几个步骤:
下载并解压Go安装包:
访问Go官方下载页面下载最新版本的Go二进制安装包。使用 wget
命令下载并解压到 /usr/local
目录下。
wget https://golang.org/dl/go1.22.1.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
设置环境变量:
编辑 ~/.bashrc
或 ~/.zshrc
文件,添加以下行:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
保存文件并运行以下命令使更改生效:
source ~/.bashrc
验证安装: 运行以下命令来验证Go是否安装成功:
go version
你应该能看到类似 go version go1.22.1 linux/amd64
的输出。
创建一个简单的Golang应用程序,例如一个HTTP服务器:
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
})
http.ListenAndServe(":8080", nil)
}
在应用程序目录中,使用以下命令构建程序:
go build
该命令会将程序编译成可执行文件。执行完毕后,会在当前目录下生成一个名为 main
的文件。
直接运行可执行文件: 使用以下命令运行编译后的二进制文件:
./main
这将在本地8080端口启动HTTP服务。
使用systemd进行管理:
为了使应用程序在后台运行并在崩溃时自动重启,可以创建一个 systemd
服务文件。
创建一个名为 myapp.service
的配置文件,并将以下内容复制到文件中:
[Unit]
Description=My Golang App
After=syslog.target network.target
[Service]
Type=simple
User=root
WorkingDirectory=/path/to/your/app
ExecStart=/usr/local/go/bin/myapp
Restart=always
[Install]
WantedBy=multi-user.target
将该文件保存到 /etc/systemd/system
目录下,并使用以下命令重新加载 systemd
配置:
sudo systemctl daemon-reload
使用以下命令启动服务:
sudo systemctl start myapp
使用以下命令检查服务状态:
sudo systemctl status myapp
使用以下命令使服务开机自启动:
sudo systemctl enable myapp
安装Nginx:
sudo apt update
sudo apt install nginx
配置Nginx以反向代理到你的Golang应用:
sudo nano /etc/nginx/sites-available/myapp
添加以下内容:
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;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
打开浏览器并访问你的域名或IP地址,你应该能看到你的Golang应用正在运行。