【问题标题】:Program running as systemd service refuses connection作为 systemd 服务运行的程序拒绝连接
【发布时间】:2020-04-30 15:11:42
【问题描述】:

我有一个响应 HTTP 请求并与一些文件交互的 go 脚本。当我从命令行运行它时,它可以完美运行,但是当通过 systemd 作为服务运行时,它不会响应请求。

这是在 CentOS 8 虚拟机上运行的。

脚本是使用go build --ldflags "-s -w"编译/构建的

我已禁用 SELinux,所以这不是问题。

这是 Go 代码:

package main

import (
    "flag"
    "fmt"
    "log"

    "io/ioutil"

    "github.com/labstack/echo/engine"
    "github.com/labstack/echo/engine/standard"
    "github.com/labstack/echo/middleware"
    "github.com/mauri870/ransomware/repository"
    "github.com/mauri870/ransomware/web"
)

var (
    // BoltDB database to store the keys
    // Will be create if not exists
    database = "database.db"

    // Private key used to decrypt the ransomware payload
    privateKey = "private.pem"
)

func main() {
    port := flag.Int("port", 8080, "The port to listen on")
    flag.Parse()

    privkey, err := ioutil.ReadFile(privateKey)
    if err != nil {
        log.Fatalln(err)
    }

    db := repository.Open(database)
    defer db.Close()

    e := web.NewEngine()
    e.PrivateKey = privkey
    e.Database = db

    e.GET("/", e.Index)

    e.Use(middleware.Logger())
    e.Use(middleware.Recover())

    api := e.Group("/api", middleware.CORS())
    api.POST("/keys/add", e.AddKeys, e.DecryptPayloadMiddleware)
    api.GET("/keys/:id", e.GetEncryptionKey)

    log.Fatal(e.Run(standard.WithConfig(engine.Config{
        Address: fmt.Sprintf(":%d", *port),
    })))
}

这里是服务:

[Unit]
Description=Cryptor Service
After=network.target

[Service]
Type=simple
User=root
Restart=on-failure
WorkingDirectory=/RanServer
ExecStart=/RanServer/server

[Install]
WantedBy=multi-user.target

这里是服务状态:

● cryptor.service - Cryptor Service
   Loaded: loaded (/etc/systemd/system/cryptor.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-04-30 10:36:19 EDT; 6min ago
 Main PID: 3232 (server)
    Tasks: 6 (limit: 26213)
   Memory: 8.7M
   CGroup: /system.slice/cryptor.service
           └─3232 /RanServer/server

【问题讨论】:

  • 您可以与我们分享任何日志记录输出吗? netstat -tulpn | grep 8080 的输出是什么?
  • Jay 我刚刚意识到我忘记将 --port 8069 添加到服务的 ExecStart 行。我还是要感谢你提到 8080 端口让我思考这个问题。
  • 当你运行netstat -tulpn | grep 8069时,你看到什么了吗?
  • 是的。它现在正在工作。

标签: go centos systemd


【解决方案1】:

我忘记将 --port 8069 添加到服务的 ExecStart 行。

添加后一切都开始工作了。

【讨论】:

  • 如果您对某个答案感到满意,您应该将其标记为已接受的答案 - 即使这是您自己的答案。
猜你喜欢
  • 2019-11-19
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多