centos7注册gohttp开机自启动

简介:

先上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

目录
相关文章
|
Java Linux Docker
centos7 开机自启动自定义脚本
centos7 开机自启动自定义脚本
242 0
|
7月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
630 25
|
9月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
319 20
|
NoSQL 数据可视化 Linux
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
这篇文章提供了在CentOS 7上安装Redis的详细步骤,包括上传Redis安装包、解压安装、编译、安装、备份配置文件、修改配置以支持后台运行和设置密码、启动Redis服务、使用客户端连接Redis、关闭Redis服务、解决Redis Desktop Manager图形化工具连接失败的问题、设置Redis开机自启动,以及Redis服务的启动和停止命令。
2022 年超详细步骤讲解 CentOS 7 安装Redis 。解决Redis Desktop Manager 图形化工具连接失败解决 ;connection failed处理。开机自启Redis
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
|
Linux Shell 数据安全/隐私保护
centos 开机启动流程、开机运行级别
centos 开机启动流程、开机运行级别
|
消息中间件 RocketMQ
Centos7.6安装RocketMQ4.9.2并配置开机自启
Centos7.6安装RocketMQ4.9.2并配置开机自启
724 0
|
Linux Nacos
蓝易云 - CentOS7 Nacos设置开机自动重启
以上就是在CentOS 7上设置Nacos开机自动重启的详细步骤。
596 0
|
Go
CentOS6.4安装GO语言环境
CentOS6.4安装GO语言环境
152 0
|
Java Shell 应用服务中间件
centos7_tomcat开机自启的shell脚本参考
centos7_tomcat开机自启的shell脚本参考
239 0