Synology 网站简单的“hello world”快速入门使用 python、flask 和 uwsgi

s21*_*1jb 5 python flask uwsgi synology

我注意到 Synology 的本机网站使用 uwsgi 框架,最近添加了对 python 脚本的支持。我想知道是否有人可以帮我找出一个简单的 hello world 示例。我不清楚 uwsgi 文件中应放入什么内容。我按照 uwsgi 文档页面上的 python-flask 快速入门示例进行操作: uwsgi python-flask 快速入门

在 webstaion>service Portal 上:我设置了一个虚拟主机,其中 nginx 监听端口 8080: 网站虚拟主机配置文件

然后,在此配置文件中,我设置了包含 python 脚本、可调用入口函数和 uwsgi 文件的相应文件夹: 在此输入图像描述

该文件夹中的“main.py”Python 脚本是快速入门页面中的示例:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<span style='color:red'>I am app 1</span>"
Run Code Online (Sandbox Code Playgroud)

我采用了该示例中的命令行参数并制作了 uwsgi.ini 文件并将其放置在同一文件夹中:

[uwsgi]
socket = 127.0.0.1:8080
wsgi-file = main.py 
callable = app 
processes = 4
threads = 2 
stats = 127.0.0.1:9191
Run Code Online (Sandbox Code Playgroud)

在 webstation 的 script>python 页面中:我设置了一个“python-flask 配置文件”并添加了所需的 Flask 模块: 在此输入图像描述

在此输入图像描述

我在虚拟主机的 python 配置文件中添加了这个“python-flask 配置文件”,以确保 python 脚本可以访问所有模块。

但是,当我浏览到端口 8080 时,我的浏览器上收到错误代码 500;

Internal Server Error
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果有人可以在网站上尝试一下以找出正确的设置,我将不胜感激。看来 webstation 使部署基于 python 的网络应用程序变得相当容易,因此解决这个问题将极大地有利于像我这样正在 Synology NAS 上寻找快速简便的部署方法的新手。

提前致谢!

jua*_*tti 5

我没有完整的答案,但我能够让它发挥作用。这是我的设置。

Web Station应用程序中: 在此输入图像描述 在此输入图像描述 在此输入图像描述 在此输入图像描述

在我的路由器上: 在此输入图像描述

我在网络浏览器上可以看到的内容。使用和不使用 VPN 进行测试(模拟在本地网络之外)。适用于 HTTP 和 HTTPS。 在此输入图像描述

我在main.py的Python代码(与 OP 相同)是:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "<span style='color:green'>I am app 1</span>"

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

一些限制:

  • 我无法使其与另一个端口一起使用。例如8080
  • 必须设置“主机名”
  • 仅适用于端口 80/443
  • 清除浏览器缓存
  • 我找不到服务器日志
  • 如果代码崩溃,需要禁用启用虚拟主机


ete*_*el7 0

对于 Flask,我必须从 0.0.0.0 开始,以确保可以从 LAN/WAN 访问该应用程序。如果在 127.0.0.1 或 localhost 上启动,则只有计算机本身可以访问该应用程序。这对你来说可能是第一个提示?我设法使我的应用程序运行并可从网络访问,但我仍然必须手动启动它(ssh > 命令行),因此每次我关闭 Synology 用户会话时它都会关闭。在这方面你似乎远远领先于我。