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