linux 如何运行一个简单的python http服务器作为服务

jm81lzqq  于 2023-05-16  发布在  Linux
关注(0)|答案(1)|浏览(155)

这是我的script.py

from http.server import HTTPServer, BaseHTTPRequestHandler

class Serv(BaseHTTPRequestHandler):

    def do_GET(self):
        if self.path == '/':
            self.path = '/index.html'
        try:
            file_to_open = open(self.path[1:]).read()
            self.send_response(200)
        except FileNotFoundError:
            file_to_open = "Not Found!"
            self.send_response(404)
        self.end_headers()
        self.wfile.write(bytes(file_to_open, 'utf-8'))

httpd = HTTPServer(('0.0.0.0', 8000), Serv)
httpd.serve_forever()

这是我的/lib/systemd/system/python.service

[Unit]
Description=test
Documentation=test doc
[Service]
Type=notify
WorkingDirectory=/home/python
ExecStart=/usr/bin/python /home/python/server.py
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always
KillMode=process
[Install]
WantedBy=multi-user.target

当我运行这个命令时,它卡住了,不能让我返回终端:

systemctl daemon-reload
systemctl start python

但是我可以去http://ip:8000,我可以看到我的index.html内容。
这是一个简单的Web服务器,我想把它作为一个服务来运行(由于某些原因,我不想运行python -m http.server 8000)。
如何将此脚本作为服务运行?

qnzebej0

qnzebej01#

修复您的python.service文件:

Type=simple
ExecStart=/usr/bin/python /home/python/script.py

Type=notify意味着您的服务在完成启动时应该使用READY=1通知通知。

相关问题