天天看點

centos7注冊gohttp開機自啟動将上面的代碼編譯成http_test并放到/opt/http_test/目錄下進入下面目錄建立一個名為httptest.service檔案,内容填寫如下針對剛剛建立的檔案添加執行權限上面節點的含義分别如下Description服務的簡單描述After依賴,僅當依賴的服務啟動之後再啟動自定義的服務單元ExecStart 預設開啟8080端口--permanent永久生效,沒有此參數重新開機後失效,防火牆打開8080端口,同時重新整理防火牆

先上go http 服務代碼

package main

import (

"fmt"
"net"
"net/http"
"os"
"strconv"
"time"           

)

var (

g_localip string           

func main() {

var (
    port      = 8080
    host_addr string
    err       error
)
if len(os.Args) >= 2 {
    if port, err = strconv.Atoi(os.Args[1]); err != nil {
        fmt.Printf("param2 [%s] must in (1~65535)", os.Args[1])
        return
    }
}
g_localip = getLocalIP()
host_addr = fmt.Sprintf(":%d", port)
fmt.Printf("%s start httpsvr at [%s]", g_localip, host_addr)
http.HandleFunc("/", mainHandle)

http.ListenAndServe(host_addr, nil)           

}

func mainHandle(w http.ResponseWriter, r *http.Request) {

var (
    temp string
)
temp = fmt.Sprintf("%s, welcome! \ncurrent service machie is [%s], service time is [%s]",
    r.RemoteAddr, g_localip, formatTime())
w.Write([]byte(temp))           

func formatTime() string {

return fmt.Sprintf("%04d-%02d-%02d %02d:%02d:%02d.%03d", time.Now().Year(),
    time.Now().Month(), time.Now().Day(), time.Now().Hour(), time.Now().Minute(),
    time.Now().Second(), time.Now().Nanosecond()/1e6)           

func getLocalIP() string {

var (
    addrs   []net.Addr
    err     error
    address net.Addr
    ipnet   *net.IPNet
    ok      bool
)

if addrs, err = net.InterfaceAddrs(); err != nil {
    return ""
}
for _, address = range addrs {
    if ipnet, ok = address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() {
        if ipnet.IP.To4() != nil {
            return ipnet.IP.String()
        }
    }
}
return ""           

将上面的代碼編譯成http_test并放到/opt/http_test/目錄下

進入下面目錄

cd /etc/systemd/system/

建立一個名為httptest.service檔案,内容填寫如下

[Unit]

Description=httptest service

After=network.target

[Service]

Type=simple

ExecStart=/opt/http_test/http_test 8080 &

ExecStop=/bin/kill-s QUIT $MAINPID

User=root

Restart=on-abort

[Install]

WantedBy=multi-user.target

針對剛剛建立的檔案添加執行權限

chmod 754 httptest.service

上面節點的含義分别如下

Description服務的簡單描述

After依賴,僅當依賴的服務啟動之後再啟動自定義的服務單元

ExecStart 預設開啟8080端口

sudo systemctl daemon-reload

sudo systemctl enable httptest.service

sudo systemctl start httptest.service

--permanent永久生效,沒有此參數重新開機後失效,防火牆打開8080端口,同時重新整理防火牆

firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --reload

繼續閱讀