【Linux】阿里云服务器搭建gradio实例
0 前言因为课程原因,需要做一个大模子相关的大作业,想到之前买的阿里云服务器,便想在服务器基于大模子API部署一个聊天呆板人 。 因为是新手,专程做个记录,供初学者参考。
1 团体布局
聊天呆板人主要就是前端的交互界面和配景的大模子处理两个部分。其中前端的交互界面是基于 gradio 库来实现的(官网:https://www.gradio.app/);后端大模子是基于 langchain 这个一站式部署的库实现的(官网:https://www.langchain.com.cn/,API用的是国内大模子的免费API。接下来将分别介绍。
2 Python开放情况搭建
在开始介绍之前,还需要搭建一个Python情况。
阿里云服务器系统(CentOS 7.3)默认的python版本是3.6,实测在使用gradio时出现许多题目,所以建议安装高版本的Python,这里选择的是Python 3.10.14。
起首从官网下载安装包
由于gradio库需要使用到ssl,加上python 3.10支持的ssl版本要大于1.1.1,所以这里先安装SSL
2.1 SSL安装
到SSL的GitHub下载源码。
https://github.com/openssl/openssl/releases/tag/OpenSSL_1_1_1w
https://i-blog.csdnimg.cn/blog_migrate/66e0868d351691cbbda686aa9537eb94.png
先解决依靠
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
解压openssl并编译安装
# 解压
tar -zxvf openssl-1.1.1w.tar.gz
# 进入到安装目录
cd openssl-1.1.1w/
# 配置安装路径
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl enable-shared
# 编译
make # -j 4
# 安装
make install
安装好之后,还需要将openssl的可执行文件和库文件添加到系统能辨认的位置,如许后续编译运行对此有依靠的软件步伐就能正常执行。
# 先把原先老版本的openssl重命名一下备份
mv /usr/bin/openssl /usr/bin/openssl_backup
# 执行文件和库文件软链接,注意前面是实际位置,后面是链接存放的位置
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1
ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
如果加上软链接还提示找不到的话,可以将软链接放到lib64文件夹下,二者都是存放共享库,但是一个是32位步伐调用,一个是64位步伐调用。
安装好之后测试一下openssl的版本:
openssl version
2.2 python安装
接下来开始安装python
和上面一样,先解决一下依靠
yum -y install gcc make
yum install libffi-devel
yum -y install zlib zlib-devel
yum -y install bzip2 bzip2-devel
yum -y install ncurses ncurses-devel
yum -y install readline readline-devel
yum -y install openssl openssl-devel
yum -y install openssl-static
yum -y install xz lzma xz-devel
yum -y install sqlite sqlite-devel
yum -y install gdbm gdbm-devel
yum -y install tk tk-devel
yum -y install mesa-libGL.x86_64
这些依靠不肯定都要安装,可以先往后走,遇到报错再来安装
然后再到官网下载源码包,https://i-blog.csdnimg.cn/blog_migrate/d1ba9139f302375de693fed56795fc60.png
解压python并编译安装
# 解压
tar -zxvf Python-3.10.14.tgz
# 进入到安装目录
cd Python-3.10.14/
# 配置安装路径和openssl路径
./configure
-C --with-openssl=/usr/local/openssl --with-openssl-rpath=auto --prefix=/usr/local/python310
# 编译
make # -j 4
# 安装
make install
安装好之后,还需要将python的可执行文件的链接放到系统的情况变量中,如许就不消每次运行python还要找一波路径。
# 可以直接覆盖原来的python3,也可以像下面一样指定一个别名
ln -s /usr/local/python3/bin/python3.10 /usr/bin/python310
# pip这个可以不需要,因为实际使用时可以用python -m pip,或者虚拟环境中直接使用
ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3
# 配置文件,根据自己的需要选择
ln -s /usr/local/python3/bin/python3.10-config /usr/bin/python3-config
验证一下ssl是否安装成功
# 先在终端输入python310
python310
# 再导入一下ssl模块
import ssl
如果不报错,就分析ssl安装成功。
参考链接
3 开发
搭建好python情况之后,接下来就可以正常开发了。
3.1 工具使用
起首是使用的工具,还是首推VS Code,使用内部的Remote Development插件套装,可以实现本地开发云端步伐,操作和本地基本一致,完全没有入门门槛,比力简朴,不再赘述。
3.2 gradio
工具确定了,接下来就是实际撸代码了。
gradio是主角之一。它可以快捷地实现一个前端,快到什么水平呢,基本几行代码就能实现一个前端交互界面,非常适合一些呆板学习等人工智能应用的快速可视化。
这里枚举一些参考资料
ChatInterface:https://www.gradio.app/docs/gradio/chatinterface
几行代码实现一个聊天交互界面。
gradio快速创建一个目的辨认的应用:
https://blog.csdn.net/weixin_44162814/article/details/138153029
3.3 langchain
langchain是一个一站式部署大模子的库,内部实现了许多国内外大模子的接口,比如OpenAI,智普AI等,除了官方文档,也可以参考一下这个文档:
https://github.com/aihes/LangChain-Tutorials-and-Examples
4 nginx部署
4.1 下载安装
先下载
wget -c https://nginx.org/download/nginx-1.14.0.tar.gz
版本可以根据自己需要选择,现在官网最新版似乎是1.27.0:
https://i-blog.csdnimg.cn/blog_migrate/21effb628e36ec3000576adfceae0cca.png
解压并进入目录
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
使用nginx的默认配置
./configure
最后再编译安装
make
make install
现在安装好之后,由于还没有添加到情况变量中,所以还不能直接在终端运行nginx,也不能用which去查找,可以使用whereis去查找
> whereis nginx
nginx: /usr/local/nginx
这里输出的是安装目录,执行文件在安装目录下的sbin文件夹,所以运行nginx时,需要:
/usr/local/nginx/sbin/nginx
这个相当于是一个服务,运行起来之后就不会关闭。
如果需要关闭可以参考以下操作
# 先用ps指令查找对应的进程
ps -ef | grep nginx
kill <pid># 对应进程的PID值
关闭之后,如果想要重新运行,可以:
/usr/local/nginx/sbin/nginx
-s reopen 正常运行之后,欣赏器访问服务器链接(80端口),应该可以看到一个欢迎界面:
https://i-blog.csdnimg.cn/blog_migrate/816c1512fbeed4730c34eadc6068c4a0.png
nginx就是如许运行,比力简朴。复杂的地方在于这个配置的题目
可以使用vim编辑nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
具体的配置部分明白继续看下一节。
参考链接
4.2 配置访问gradio
前面介绍gradio可以看到,运行代码之后,会出现一个本地链接和端口。
如果有在Windows上运行gradio的可能会有如许的疑惑:这不是跟flask一样,运行完成之后直接点击链接就能访问吗?那如果在服务器上面,只需要输入服务器对应公网IP不就行了?一开始我也是如许想的,但是在查找教程过程中,无意看到一句话:gradio只能提供内部访问,外部访问需要使用nginx如许的反向署理服务器。
在开始之前,先简朴介绍一下nginx的配置文件的布局
[*]全局块:配置全局的指令,对整个Nginx服务器起作用。
[*]events块:配置与连接相关的指令,如工作历程数和连接超时时间等。
[*]http块:配置HTTP服务器的指令,如监听端口、虚拟主机和HTTP模块等。
[*]server块:配置虚拟主机的指令,可以配置多个server块来支持多个域名或IP地址。
[*]location块:配置URL路径的指令,可以在server块或http块中使用。
其中,我们主要需要配置的就是location块,即实现将默认访问80端口的哀求导向gradio的本地链接。
参考链接
幸亏gradio官网也提供的相应的教程:https://www.gradio.app/guides/running-gradio-on-your-web-server-with-nginx
不消到处去找博客视频之类的了
团体思路参考这个链接,具体的配置方式还是看上面谁人官网教程。
5 服务编写
为了避免每次都要用python运行步伐,可以考虑将这一指令写成服务的形式。
创建一个新的service文件,通常以.service作为后缀名。在终端中使用以下命令创建一个新的服务文件:
sudo vi /etc/systemd/system/myservice.service
在打开的编辑器中,输入以下内容:
Description=My Service
After=network.target
ExecStart=/path/to/your/service_executable
Type=simple
Restart=always
RestartSec=3
User=your_username
WantedBy=default.target
其中,
Description是对服务的描述;
After指定服务应该在哪些目的之后启动;
ExecStart指定要运行的服务可执行文件的路径;
Type指定服务的类型,这里简朴地使用simple;
Restart指定服务在失败后应该如何重启,这里选择always;
RestartSec指定服务在重启之前应该等待的时间,这里选择3秒;
User指定服务应该以哪个用户的身份运行;
WantedBy指定在哪个目的之前安装此服务。
保存并关闭文件。
更新systemctl并启动新服务。在终端中运行以下命令:
sudo systemctl daemon-reload
sudo systemctl start myservice.service
验证服务是否成功启动。可以使用以下命令查抄服务的状态:
sudo systemctl status myservice.service
如果服务已成功启动,将在终端中看到服务的状态信息。
设置服务开机自启动。运行以下命令来启用服务自启动:
sudo systemctl enable myservice.service
现在,服务将在系统启动时自动启动。
如许就创建了一个CentOS 7的service。根据实际情况,需要修改和部分的内容以顺应您的具体服务需求。
参考链接
6 扩展:安装软件步骤总结
从上面安装的几个软件来看,其实Linux端安装软件还是有规律可循的,主要就是那么几步:configure,make,make install
参考链接:link1,link2
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]