zoukankan      html  css  js  c++  java
  • systemd socket activation golang demo

    service define

    rongapp.service

    [Unit]
    Description=rong Hello World HTTP
    Requires=network.target rongapp.socket
    After=multi-user.target
    [Service]
    Type=simple
    ExecStart=/usr/bin/rong
    [Install]
    WantedBy=multi-user.target

    socket define

    [Socket]
    ListenStream=8076
    Accept=yes 
    [Install]
    WantedBy=sockets.target

    main.go

    package main
    import (
     "io"
     "net/http"
     "github.com/coreos/go-systemd/activation"
    )
    func HelloServer(w http.ResponseWriter, req *http.Request) {
     io.WriteString(w, "hello socket activated world!
    ")
    }
    func main() {
     listeners, err := activation.Listeners()
     if err != nil {
      panic(err)
     }
     if len(listeners) != 1 {
      panic("Unexpected number of socket activation fds")
     }
     http.HandleFunc("/", HelloServer)
     http.Serve(listeners[0], nil)
    }

    go mod

    go mod init  github.com/rongfengliang/appdemo
    gp  get github.com/coreos/go-systemd/activation

    start service

    • copy define files
    location  /usr/lib/systemd/system/
    • start socket
    systemctl start rongapp.socket
    systemctl start rongapp.service
    systemctl  enable rongapp.socket
    systemctl  enable rongapp.service

    test

    curl http://127.0.0.1:8076

    https://github.com/coreos/go-systemd/tree/master/examples/activation/httpserver

  • 相关阅读:
    5.3二叉树的运算
    hadoop namenode切换
    org.apache.hadoop.security.AccessControlException
    Hive中的日志
    命令大全详解
    python深浅copy
    awk命令
    head&tail命令
    cut命令
    理解inode
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11763150.html
Copyright © 2011-2022 走看看