go

发布静态网站并启动

  • 使用Go语言发布静态网站并自动打开浏览器 以下是一个完整的Go语言程序,它会:
    1. 启动静态文件服务器
    2. 自动打开默认浏览器访问网站
    3. 支持指定端口和目录
  • 完整代码
package main

import (
    "fmt"
    "net/http"
    "os"
    "os/exec"
    "path/filepath"
    "runtime"
    "time"
)

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)

    // 启动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)
    }
}

// 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()
}
  • 使用方法
    1. 将代码保存为 static_server.go
    2. 编译为可执行文件:
    go build -o static_server.exe static_server.go
    
    1. 运行程序:
    • 默认使用当前目录,端口8000:
      static_server.exe
      
    • 指定目录和端口:
      static_server.exe C:\my_website 8080
      
  • 功能说明
    1. 程序启动后会立即打开默认浏览器访问网站
    2. 服务器会在后台持续运行,直到按Ctrl+C停止
    3. 支持跨平台(Windows、macOS、Linux)
    4. 自动显示服务的目录和访问URL
  • 注意事项
    • 如果端口被占用,程序会报错退出
    • 首次运行时防火墙可能会弹出警告,需要允许访问
    • 对于生产环境,建议使用专业的Web服务器如Nginx

这个解决方案比单纯的EXE文件更透明,您可以看到所有源代码,并且可以自行编译,更加安全可靠。