发布时间:2024-11-23 16:05:18
```go package main import ( "os" "os/exec" "fmt" ) ```
然后,在main函数中,我们可以使用`os`和`os/exec`包来执行系统命令。例如,我们可以使用`exec.Command`函数来执行NGINX的启动命令:```go func main() { cmd := exec.Command("nginx", "-g", "daemon off;") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err := cmd.Run() if err != nil { fmt.Println(err) os.Exit(1) } } ```
在上述代码中,我们首先创建了一个命令`cmd`,然后将其标准输出和标准错误流分别设置为`os.Stdout`和`os.Stderr`。最后,我们使用`cmd.Run()`来执行命令,并在执行出错时打印错误信息。这样我们就可以通过运行Golang代码来启动NGINX。```go package main import ( "os" "os/exec" "fmt" "github.com/koding/multiconfig" ) type Config struct { Nginx struct { Port string } } func main() { m := multiconfig.NewWithPath("config.json") conf := new(Config) m.MustLoad(conf) cmd := exec.Command("nginx", "-g", fmt.Sprintf("daemon off; http { server { listen %s; } }", conf.Nginx.Port)) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err := cmd.Run() if err != nil { fmt.Println(err) os.Exit(1) } } ```
在上述代码中,我们将配置文件定义为一个结构体,并使用`multiconfig.NewWithPath`函数从指定路径加载配置文件。然后,我们使用`fmt.Sprintf`函数来根据配置文件中的端口号动态生成NGINX的启动命令。