溫馨提示×

centos golang項目部署配置要點

小樊
45
2025-10-08 23:16:01
欄目: 編程語言

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),添加反向代理規則:
    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;
        }
    }
    
    重啟Nginx(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應用)。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女