前言:
Chatglm、Stable Diffusion webui反向代理配置
最近在研究AI模型部署,遇到了一些问题,其中一个就是开放外网访问,像Chatglm、Stable Diffusion的webui普遍采用了Gradio这个高度封装的AI WebUI服务。Gradio如果不修改,默认启动后只会监听127.0.0.1,也就是只能本机使用,而对于局域网其他机器来说,肯定是需要访问的,所以需要修改启动脚本,这个启动脚本在不同模型的WebUI中配置大同小异,本质上都是最后在下面的代码中加入了server_name=0.0.0.0
Gradio包本身可以设定share=True启动参数,让Gradio官方帮我们创建一个公网链接。
但是这个方法网络很慢,而且链接24小时就生效了。
针对Stable Diffusion webui 则可以通过命令参数传入,如果是linux用户,执行./webui.sh --server-name 0.0.0.0 即可。
所以最好还是通过nginx在自己的云服务器上部署。另外一种方法是使用反向代理进行配置,反向代理一般就是nginx,像gradio这种服务,除了http服务外还有websocket服务,所以nginx需要配置两项,一项是默认的location / ,另一项是websocket的 location /queue。
为什么websocket要配置location /queue 呢,这是我通过浏览器请求的wss地址分析得出的,Gradio的wss都会走/queue这个路径,proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection Upgrade;可以理解为将https协议升级为wss协议。
如果还没安装nginx的话,建议使用Oneinstack脚本一次性安装LNPM环境。
并可以通过它的vhost.sh脚本创建nginx配置文件,很方便。
nginx的配置文件例子如下,
关键是proxy_pass http://127.0.0.1:17860;那几个location块,将外网访问ai.fat.plus的请求全部将代理到127.0.0.1:7860。
https://oneinstack.com/auto
最后点击 复制安装命令 到服务器执行即可。如果你仅安装 Nginx,你的链接应该是这样:
所以最好还是通过nginx在自己的云服务器上部署。另外一种方法是使用反向代理进行配置,反向代理一般就是nginx,像gradio这种服务,除了http服务外还有websocket服务,所以nginx需要配置两项,一项是默认的location / ,另一项是websocket的 location /queue。
为什么websocket要配置location /queue 呢,这是我通过浏览器请求的wss地址分析得出的,Gradio的wss都会走/queue这个路径,proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection Upgrade;可以理解为将https协议升级为wss协议。
nginx反向代理配置
如果还没安装nginx的话,建议使用Oneinstack脚本一次性安装LNPM环境。
并可以通过它的vhost.sh脚本创建nginx配置文件,很方便。
nginx的配置文件例子如下,
关键是proxy_pass http://127.0.0.1:17860;那几个location块,将外网访问ai.fat.plus的请求全部将代理到127.0.0.1:7860。
通过 OneinStack 安装 Nginx
如果linux 服务器上没有安装的NGINX 需要首先安装反向代理服务器,点击下方链接进入 OneinStack 官网,仅选择 安装 Nginx,其他的都可以取消选择。https://oneinstack.com/auto
最后点击 复制安装命令 到服务器执行即可。如果你仅安装 Nginx,你的链接应该是这样:
wget -c http://mirrors.oneinstack.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --reboot
出现下面的信息即代表安装成功:
出现下面的信息即代表安装成功:
以上为安装已经完成的,如果想要检测安装是否都已经完成,可以使用如下命令:
查看是否存活
sudo systemctl status nginx
查看进程
ps aux | grep nginx查看端口监听
sudo netstat -tulpn | grep :80
检测Nginx服务所在的位置:
- 查找Nginx的二进制文件位置:
1which nginx
这个命令会告诉你Nginx二进制文件的路径。
- 查找Nginx配置文件的位置:
Nginx的主配置文件通常位于/etc/nginx/nginx.conf
。你可以直接查看这个文件或者使用以下命令:
1nginx -t
这个命令会测试配置文件是否正确,并显示配置文件的位置。
- 查找Nginx服务文件的位置(如果使用systemd):
1systemctl status nginx
在输出中,你可以找到Loaded
一行,它会告诉你Nginx服务文件的确切位置。
创建 vhost
即创建一个站点,你可以通过这样的方式在你的服务器创建无限个站点。接下来的目的就是创建一个站点,并反向代理gradio。这一步在此教程使用 demo.halo.run 这个域名做演示,实际情况请修改此域名。进入到 oneinstack 目录,执行 vhost 创建命令
cd oneinstack
sh vhost.sh
按照提示选择或输入相关信息
What Are You Doing?
1. Use HTTP Only
2. Use your own SSL Certificate and Key
3. Use Let's Encrypt to Create SSL Certificate and Key
q. Exit
Please input the correct option:
这一步是选择证书配置方式,如果你有自己的证书,输入 2 即可。如果需要使用 Let's Encrypt 申请证书,选择 3 即可。
Please input domain(example: www.example.com):
输入自己的域名即可,前提是已经提前解析好了域名。
Please input the directory for the domain:demo.halo.run :
(Default directory: /data/wwwroot/demo.halo.run):
提示输入站点根目录,因为我们是使用 Nginx 的反向代理,所以这个目录是没有必要配置的,我们直接使用默认的即可(直接回车)。
Do you want to add more domain name? [y/n]:
是否需要添加其他域名,按照需要选择即可,如果不需要,输入 n 并回车确认。
Do you want to add hotlink protection? [y/n]:
是否需要做防盗链处理,按照需要选择即可。
Allow Rewrite rule? [y/n]:
路径重写配置,我们不需要,选择 n 回车确定即可。
Allow Nginx/Tengine/OpenResty access_log? [y/n]:
Nginx 的请求日志,建议选择 y。
这样就完成了 vhost 站点的创建,最终会输出站点的相关信息:
Your domain: demo.halo.run
Virtualhost conf: /usr/local/nginx/conf/vhost/demo.halo.run.conf
Directory of: /data/wwwroot/demo.halo.run
Nginx 的配置文件即 /usr/local/nginx/conf/vhost/demo.halo.run.conf。
参考
修改 Nginx 配置文件
上方创建 vhost 的过程并没有创建反向代理的配置,所以需要我们自己修改一下配置文件。
使用你熟悉的工具打开配置文件,此教程使用 vim。
vim /usr/local/nginx/conf/vhost/demo.halo.run.conf
删除一些不必要的配置
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
此段配置是针对 php 应用的,所以可以删掉。
参考配置文件如下:
重载 Nginx 使配置生效
验证 nginx 配置
nginx -t
如果输出如下提示则代表配置有效:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
重载 Nginx 配置:
nginx -s reload
至此,整个教程完毕,现在你可以访问域名检查是否已经配置成功。
参考文章: https://blog.fat.plus/archives/272
https://docs.halo.run/getting-started/install/other/oneinstack/
附件:
在Ubuntu上使用Nginx服务器,你可以按照以下步骤进行操作:这将会安装 Nginx 并启动它。你可以使用以下命令检查 Nginx 是否正在运行:
sudo systemctl status nginx
2. 基本配置
Nginx的主要配置文件是 /etc/nginx/nginx.conf
3. 管理 Nginx 服务
启动 Nginx 服务:
sudo systemctl start nginx
停止 Nginx 服务:
sudo systemctl stop nginx
重新启动 Nginx 服务:
sudo systemctl restart nginx
检查配置文件语法是否正确:
sudo nginx -t
评论
发表评论