Ubuntu 20.04服务器下如何在指定端口运行Python应用并通过PuTTY连接?
解决Ubuntu 20.04 Server上Python消息应用端口暴露与PuTTY直接连接问题
一、确保Python应用监听正确地址
你的Python应用必须绑定到0.0.0.0而非默认的127.0.0.1,否则仅能本地访问,外部(包括PuTTY)无法连接。示例代码如下:
- 原生Socket实现:
import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('0.0.0.0', 8000)) # 8000替换为你指定的端口 server.listen(5)
- Flask框架示例:
from flask import Flask app = Flask(__name__) if __name__ == '__main__': app.run(host='0.0.0.0', port=8000)
二、开放服务器端口(UFW防火墙)
Ubuntu默认启用UFW,需手动放行目标端口:
sudo ufw allow 8000/tcp sudo ufw reload
验证规则:
sudo ufw status
输出中出现8000/tcp ALLOW Anywhere即为生效。
三、让应用后台持久运行(替代Screen的可靠方案)
Screen会话易因意外断开终止,推荐以下两种方式:
方法1:nohup快速后台启动
在SSH会话中执行:
nohup python3 your_app.py > app.log 2>&1 &
nohup确保进程脱离终端,断开SSH后仍运行> app.log 2>&1将日志输出到文件,方便排查问题- 查看进程:
ps aux | grep your_app.py - 终止进程:
kill <进程PID>
方法2:Systemd服务(支持开机自启)
- 创建服务配置文件:
sudo nano /etc/systemd/system/messaging-app.service
- 写入配置(替换占位内容):
[Unit] Description=Messaging Application Service After=network.target [Service] User=your_username # 替换为你的服务器用户名 WorkingDirectory=/path/to/your/app # 替换为应用所在目录 ExecStart=/usr/bin/python3 /path/to/your/app/your_app.py # 应用绝对路径 Restart=always # 进程异常终止时自动重启 [Install] WantedBy=multi-user.target
- 启动并设置开机自启:
sudo systemctl daemon-reload sudo systemctl start messaging-app.service sudo systemctl enable messaging-app.service
- 查看服务状态:
sudo systemctl status messaging-app.service
四、PuTTY直接连接应用端口
打开PuTTY,在Connection type选择Raw,Host Name填入服务器公网IP,Port填入你指定的端口(如8000),点击Open即可直接连接到消息应用。
注意:若服务器在云平台(阿里云、AWS等),需在云控制台安全组中放行对应TCP端口,否则外部无法访问。
内容的提问来源于stack exchange,提问作者supervoaleh32
相关产品推荐
相关产品推荐

