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服务,并有效地在后台运行你的程序!