服务器部署--Flask项目
一、准备工作
假设你的服务器系统是 Linux(CentOS/Ubuntu均适用),公网IP是 111.229.204.102
,Flask 监听端口为 7777
。
二、Flask 项目示例代码
-
新建项目目录,比如
/www/demo_app
sudo mkdir -p /www/demo_app
sudo chown -R $(whoami) /www/demo_app
cd /www/demo_app
-
新建两个 Python 文件:
-
mycode.py
(普通 Python 模块)
# mycode.py
def add(a, b):return a + bdef greet(name):return f"Hello, {name}!"
-
app.py
(Flask 服务启动文件)
from flask import Flask
from flask_cors import CORS
import mycodeapp = Flask(__name__)
CORS(app) # 允许跨域访问@app.route('/')
def index():result = mycode.add(10, 20)greeting = mycode.greet("小明")return f"计算结果:10 + 20 = {result}<br>打招呼:{greeting}"if __name__ == '__main__':# 监听所有地址,端口7777app.run(host='0.0.0.0', port=7777)
三、安装 Python 和依赖
假设你的服务器没有 Python3 和 pip:
# 安装 Python3 和 pip (CentOS示例)
sudo yum install -y python3 python3-pip# 安装 Flask 和 flask-cors
pip3 install flask flask-cors
四、测试启动 Flask 服务
cd /www/demo_app
python3 app.py
启动后会看到:
* Running on http://0.0.0.0:7777/ (Press CTRL+C to quit)
这时在本机服务器用浏览器或 curl 测试:
curl http://127.0.0.1:7777/
应该能看到返回的 HTML:
计算结果:10 + 20 = 30
打招呼:Hello, 小明!
五、配置服务器防火墙和云服务安全组
-
开放端口 7777
-
如果你是阿里云、腾讯云等云服务器,登录云服务商控制台:
-
找到你实例对应的安全组设置
-
添加一条入站规则:TCP,端口7777,源地址
0.0.0.0/0
(允许所有IP访问)
-
-
服务器本地防火墙放通端口
-
CentOS 7+ 使用 firewalld:
sudo firewall-cmd --zone=public --add-port=7777/tcp --permanent
sudo firewall-cmd --reload
-
Ubuntu 使用 ufw:
sudo ufw allow 7777/tcp
sudo ufw reload
六、浏览器访问测试
在任意电脑浏览器打开:
http://111.229.204.102:7777/
应看到网页显示:
计算结果:10 + 20 = 30
打招呼:Hello, 小明!
七、后台运行 Flask 服务(测试用)
你可以用 nohup
让程序在后台运行,不受终端关闭影响:
nohup python3 app.py > flask.log 2>&1 &
查看日志:
tail -f flask.log
八、配置 systemd 实现开机自启动
-
创建 systemd 服务文件(统一放在
/etc/systemd/system/,比较好
)
用 root 权限编辑 /etc/systemd/system/flask_app.service
:
sudo vim /etc/systemd/system/flask_app.service
写入以下内容(根据实际路径和用户修改):
[Unit]
Description=Flask Demo App
After=network.target[Service]
User=ec2-user # 运行该服务的用户(你自己的用户)
WorkingDirectory=/www/demo_app # Flask项目目录
ExecStart=/usr/bin/python3 /www/demo_app/app.py
Restart=always # 程序异常退出自动重启
RestartSec=5s[Install]
WantedBy=multi-user.target
-
User
要写你实际登录服务器的用户名(用whoami
查看) -
ExecStart
填写 python3 路径和项目中 app.py 的绝对路径
-
重新加载 systemd 配置:
sudo systemctl daemon-reload
-
启动服务并测试:
sudo systemctl start flask_app.service
sudo systemctl status flask_app.service
确认服务状态为 active (running)
。
-
设置开机自启:
sudo systemctl enable flask_app.service
-
停止服务:
sudo systemctl stop flask_app.service
-
查看日志:
journalctl -u flask_app.service -f