Golang
go
发布静态网站并启动
使用Go语言发布静态网站并自动打开浏览器 以下是一个完整的Go语言程序,它会:
启动静态文件服务器
自动打开默认浏览器访问网站
支持指定端口和目录
完整代码
package main
import (
"fmt"
"net/http"
"os"
"os/exec"
"path/filepath"
"runtime"
"time"
"sync"
)
func main() {
port := "8000"
dir := "."
// 解析命令行参数
if len(os.Args) > 1 {
dir = os.Args[1]
}
if len(os.Args) > 2 {
port = os.Args[2]
}
absDir, _ := filepath.Abs(dir)
url := fmt.Sprintf("http://localhost:%s", port)
var wg sync.WaitGroup
wg.Add(1)
// 启动HTTP服务器
go func() {
fmt.Printf("Serving %s at %s\n", absDir, url)
fmt.Println("Press Ctrl+C to stop")
http.Handle("/", http.FileServer(http.Dir(dir)))
if err := http.ListenAndServe(":"+port, nil); err != nil {
fmt.Printf("Error starting server: %v\n", err)
os.Exit(1)
}
}()
// 给服务器一点时间启动
time.Sleep(100 * time.Millisecond)
// 打开浏览器
if err := openBrowser(url); err != nil {
fmt.Printf("Failed to open browser: %v\n", err)
}
// 等待HTTP服务器(实际上会一直运行,直到被中断)
wg.Wait()
}
// openBrowser 根据操作系统打开默认浏览器
func openBrowser(url string) error {
var cmd string
var args []string
switch runtime.GOOS {
case "windows":
cmd = "cmd"
args = []string{"/c", "start", url}
case "darwin":
cmd = "open"
args = []string{url}
default: // "linux", "freebsd", "openbsd", "netbsd"
cmd = "xdg-open"
args = []string{url}
}
return exec.Command(cmd, args...).Start()
}使用方法
将代码保存为 `static_server.go`
编译为可执行文件:
linux:GOOS=linux GOARCH=amd64 go build -o static-server-linux static-server.go
macos:GOOS=darwin GOARCH=amd64 go build -o static-server-macos static-server.go
windows:GOOS=windows GOARCH=amd64 go build -o static-server-windows.exe static-server.go运行程序:
默认使用当前目录,端口8000:
static_server.exe指定目录和端口:
static_server.exe C:\my_website 8080
功能说明
程序启动后会立即打开默认浏览器访问网站
服务器会在后台持续运行,直到按Ctrl+C停止
支持跨平台(Windows、macOS、Linux)
自动显示服务的目录和访问URL
注意事项
如果端口被占用,程序会报错退出
首次运行时防火墙可能会弹出警告,需要允许访问
对于生产环境,建议使用专业的Web服务器如Nginx
这个解决方案比单纯的EXE文件更透明,您可以看到所有源代码,并且可以自行编译,更加安全可靠。