Python3自带HTTP服务:轻松开启与后台管理

Python3自带有http服务,可以在服务器,也可以在本地启动,并运行一些常用的网页程序。比如:我们可以把streamlit框架编写的网页放到服务器上,开启http服务,就可以通过网页来调用这个pythont程序了,如下面的单词批量查询工具。我们服务器某个端口上运行这个程序,再通过1panel为这个服务器建立一个反向代理,申请一个免费的证书,就可以通过域名来访问这个python程序了。

下面,我们一起来看看如何开启和使用web服务器。

一、开启Web服务

1. 基本方法

Python 3内置了简单的HTTP服务器,操作非常简便。

如果还没有在服务器上安装python,请自行查询相关资料安装。安装完成后,请按照以下步骤进行:

首先,进入www目录:

复制代码
cd www 

用python命令,启动HTTP服务器:

复制代码
python3 -m http.server 

如果是在本地,可以运行以下代码:

启动成功后,你会看到"Serving HTTP on 0.0.0.0 port 8000..."的提示,说明服务已在8000端口启动。

2. 后台运行服务

如果希望将服务放在后台运行,可以在命令后加上&,这样按Ctrl+C也不会关闭服务:

复制代码
python3 -m http.server & 

为了确保服务不会被挂起,可以使用nohup命令:

复制代码
nohup python3 -m http.server 8001 & 

二、指定端口

如果想使用其他端口,只需在命令中最后,附加端口号,例如:

复制代码
python3 -m http.server 8001 

这样就会在8001端口启动HTTP服务。默认会从8501这个端口开启,如果端口被占用会继续顺延。

三、使用Web服务

访问 http://0.0.0.0:8000/ 可以查看www目录下的网页文件。

如果没有index.html,则会显示目录内容。此外,可以用ifconfig命令查看本机IP并进行访问。

四、nohup后台运行与关闭程序

对于需要长时间运行或输出信息较多的程序,建议使用后台运行并将输出保存到日志中,具体步骤如下:

1. 运行命令

复制代码
nohup python3 -u test.py > test.log 2>&1 & 

例如,我要在我的服务器上运行一个dic.py的文件,可以cd到py文件所在dict目录运行以下代码:

复制代码
nohup python3 -m  streamlit run dic.py

2. 按回车键,输入exit命令退出终端

注意:请勿直接关闭终端。

3. 命令解析

&:后台运行程序

nohup:程序不受挂起影响,即使退出服务器,也能后台运行该程序

-u:不启用缓存,实时输出

test.py:要执行的Python文件

test.log:保存输出的日志文件

>:将打印信息重定向到日志文件

2>&1:将标准错误输出重定向到标准输出

五、查看与管理后台程序

你可以使用以下命令查看和管理后台运行的程序:

1. 查看当前终端任务

jobs命令

查看当前终端后台运行的任务,jobs -l 可显示任务PID。

2. 查看所有进程

ps命令:

查看所有进程。使用如下命令:bash

复制代码
ps -aux | grep "test.py" 

六、结束进程

使用kill命令结束进程的步骤:

通过jobs命令查看任务编号,然后执行:

复制代码
kill %jobnum 

通过ps命令获取进程号PID,执行:

复制代码
kill PID 

对于前台运行的程序,可以直接按 Ctrl+C 终止。

这样,你就能轻松地管理Python的HTTP服务,并有效地在后台运行你的程序!

相关推荐
Evan芙11 分钟前
DNS服务器类型,解析答案,正反解析域,资源记录定义总结
运维·服务器
wanhengidc17 分钟前
巨椰 云手机办公便利性高
运维·服务器·安全·智能手机·云计算
如竟没有火炬21 分钟前
四数相加贰——哈希表
数据结构·python·算法·leetcode·散列表
Saniffer_SH26 分钟前
【每日一题】PCIe答疑 - 接大量 GPU 时主板不认设备或无法启动和MMIO的可能关系?
运维·服务器·网络·人工智能·驱动开发·fpga开发·硬件工程
背心2块钱包邮35 分钟前
第9节——部分分式积分(Partial Fraction Decomposition)
人工智能·python·算法·机器学习·matplotlib
爱宇阳37 分钟前
Linux 安全加固:禁用 IPv4 ICMP 重定向发送
linux·运维·安全
木盏37 分钟前
三维高斯的分裂
开发语言·python
a程序小傲43 分钟前
京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?
java·后端·python·面试
Saniffer_SH44 分钟前
【每日一题】讲讲PCIe链路训练和枚举的前后关系
运维·服务器·网络·数据库·驱动开发·fpga开发·硬件工程
阿豪学编程1 小时前
动静态库制作与原理
linux·个人开发