Gradio 是一个 Python 库,允许您快速为您的机器学习模型和数据处理管道创建可定制的 Web 应用程序。Gradio 应用程序可以免费部署在 Hugging Face Spaces 上。
在某些情况下,您可能希望在自己的Web服务器上部署Gradio应用程序。您可能已经在使用Nginx,一个高性能的Web服务器,来为您的网站提供服务(例如https://www.example.com),并且您希望将Gradio附加到您网站的特定子路径上(例如https://www.example.com/gradio-demo)。
在本指南中,我们将指导您在自己的Web服务器上通过Nginx运行Gradio应用程序的过程,以实现这一目标。
先决条件
/etc/nginx/nginx.conf在 http 块中,添加以下行以从单独的文件中包含服务器块配置:
include /etc/nginx/sites-enabled/*;在/etc/nginx/sites-available目录中创建一个新文件(如果该目录不存在,请先创建),使用代表你应用程序的文件名,例如:sudo nano /etc/nginx/sites-available/my_gradio_app
将以下内容粘贴到您的文件编辑器中:
server {
listen 80;
server_name example.com www.example.com; # Change this to your domain name
location /gradio-demo/ { # Change this if you'd like to server your Gradio app on a different path
proxy_pass http://127.0.0.1:7860/; # Change this if your Gradio app will be running on a different port
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}提示: 设置 `X-Forwarded-Host` 和 `X-Forwarded-Proto` 头信息非常重要,因为 Gradio 使用这些头信息,结合下面讨论的 `root_path` 参数,来构建您的应用程序所服务的公共 URL。Gradio 使用公共 URL 来获取各种静态资源。如果这些头信息没有设置,您的 Gradio 应用程序可能会以损坏的状态加载。
注意: $host 变量不包括主机端口。如果您在原始IP地址和端口上提供Gradio应用程序,您应该在这些行中使用 $http_host 变量:
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;在启动你的Gradio应用之前,你需要将root_path设置为与你在nginx配置中指定的子路径相同。这对于Gradio在域名的根目录之外的任何子路径上运行是必要的。
注意: 除了子路径,你也可以为 root_path 提供一个完整的 URL(以 http 或 https 开头),在这种情况下,root_path 将被视为绝对 URL 而不是 URL 后缀(但在这种情况下,如果域名发生变化,你需要更新 root_path)。
这是一个简单的Gradio应用程序示例,其中包含与上述Nginx配置相对应的自定义root_path。
import gradio as gr
import time
def test(x):
time.sleep(4)
return x
gr.Interface(test, "textbox", "textbox").queue().launch(root_path="/gradio-demo")tmux并按回车键来启动一个tmux会话(可选)建议您在tmux会话中运行您的Gradio应用程序,以便您可以轻松地将其保持在后台运行
python,然后是你的Gradio Python文件的名称。默认情况下,你的应用将在localhost:7860上运行,但如果它在一个不同的端口上启动,你将需要更新上面的nginx配置文件。如果您在 tmux 会话中,可以通过键入 CTRL+B(或 CMD+B),然后按 "D" 键退出。
最后,通过运行sudo systemctl restart nginx来重启nginx。
就是这样!如果你在浏览器中访问 https://example.com/gradio-demo,你应该会看到你的 Gradio 应用程序在那里运行。