Как развернуть (задеплоить) GO (Golang) WEB приложение на VPS Ubuntu 20 с Nginx

https://www.8host.com/blog/razvertyvanie-veb-prilozheniya-go-na-nginx-v-ubuntu-18-04/

https://www.youtube.com/watch?app=desktop&v=50LfgfveD_A

 

https://chatgpt.com/share/6713b029-47d0-800a-8b85-af7fe6af9a72


Установка GO

cd ~

curl -O https://go.dev/dl/go1.23.2.linux-amd64.tar.gz

sha256sum go1.12.1.linux-amd64.tar.gz

542d3c1705f1c6a1c5a80d5dc62e2e45171af291e755d591c5e6531ef63b454e

sudo tar -xvf go1.23.2.linux-amd64.tar.gz -C /usr/local

sudo chown -R root:root /usr/local/go

mkdir -p $HOME/go/{bin,src}

nano ~/.profile

export GOPATH=$HOME/go

export PATH=$PATH:$GOPATH/bin

export PATH=$PATH:$GOPATH/bin:/usr/local/go/bin

. ~/.profile

echo $PATH

go version

nano hello.go

package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}

go run hello.go


Запуск Вебсервера на Go через service

sudo nano /lib/systemd/system/goweb.service

[Unit]
Description=goweb

[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/home/andres/go/go-web/main

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload

sudo service goweb start

sudo service goweb status

curl localhost:9990

Пример приложения Web-сервера на Go

package main;

import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World")
})
http.ListenAndServe(":9990", nil)
}


Настройка nginx

sudo nano /etc/nginx/sites-available/notes

server {
        listen 80;
        listen [::]:80;

    location / {
        proxy_pass http://localhost:9990;
    }
}
 

sudo ln -s /etc/nginx/sites-available/notes /etc/nginx/sites-enabled/

sudo nginx -t

sudo systemctl restart nginx

Конфиг для раздачи файлов вместе с Go приложением:

server {

       server_name your_domain www.your_domain;

       location / {
              proxy_pass http://localhost:9990;
       }

       location /download/ {
              alias /home/andres/go/go-web/download/;
              autoindex on;
    }

 }


ydl

  •  

    youtube-dl --proxy http://127.0.0.1:8888 https://www.youtube.com/watch?v=VIDEO_ID

  •  


В кратце приложение запускается скомпилиным бинарником.

/home/andres/go/go-web/main

(собран из /home/andres/go/go-web/main.go)

Как отредактировать собранное и запущенное приложение?

cd /home/andres/go/go-web

go build main.go

sudo systemctl restart goweb

Или: 

go build main.go && sudo systemctl restart goweb

Связаться с автором Поддержать деньгами (что?)