go
发布静态网站并启动
- 使用Go语言发布静态网站并自动打开浏览器
以下是一个完整的Go语言程序,它会:
- 启动静态文件服务器
- 自动打开默认浏览器访问网站
- 支持指定端口和目录
- 完整代码
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()
}
- 使用方法
- 将代码保存为
static_server.go - 编译为可执行文件:
go build -o static_server.exe static_server.go- 运行程序:
- 默认使用当前目录,端口8000:
static_server.exe - 指定目录和端口:
static_server.exe C:\my_website 8080
- 将代码保存为
- 功能说明
- 程序启动后会立即打开默认浏览器访问网站
- 服务器会在后台持续运行,直到按Ctrl+C停止
- 支持跨平台(Windows、macOS、Linux)
- 自动显示服务的目录和访问URL
- 注意事项
- 如果端口被占用,程序会报错退出
- 首次运行时防火墙可能会弹出警告,需要允许访问
- 对于生产环境,建议使用专业的Web服务器如Nginx
这个解决方案比单纯的EXE文件更透明,您可以看到所有源代码,并且可以自行编译,更加安全可靠。