【详细教程】国内部署ChatGPT镜像网站

news2024/9/23 15:22:38

文章目录

    • 一、准备阶段
      • 0、注册Open AI账号
      • 1、创建API密钥
      • 2、国内云服务器
      • 3、国外云服务器
      • 4、镜像网站代码
      • 5、效果
      • `重要:部署时会修改glibc库,为了防止云服务器被搞坏,请提前进行备份或者创建快照`
      • `重要:部署时会修改glibc库,为了防止云服务器被搞坏,请提前进行备份或者创建快照`
      • `重要:部署时会修改glibc库,为了防止云服务器被搞坏,请提前进行备份或者创建快照`
    • 二、开始部署
      • 1、部署HTTP代理
      • 2、安装nodejs环境
      • 3、安装pnpm
      • 4、更新make、gcc、g++
      • 5、安装Docker
      • 6、部署镜像网站
      • 7、使用反向代理部署网站

一、准备阶段

国内云服务器主要用来部署镜像网站,,国外服务器主要用来部署HTTP/HTTPS代理,因为目前国内环境访问Open AI的API服务器会有问题,所以最好有一个在美国的服务器,部署完成后就能达到快速访问ChatGPT的效果。

0、注册Open AI账号

参考链接:教程:在国内如何注册OpenAI账号并试用ChatGPT

1、创建API密钥

参考链接:如何在OpenAI创建一个api key

2、国内云服务器

链接:【Tencent云服务器】

3、国外云服务器

V-u-l-t-r-服务器有些新地区刚开比较划算,性能基本能满足搭建梯子和HTTP代理

4、镜像网站代码

GitHub地址:chatgpt-mirror
蓝奏云:https://wwvb.lanzout.com/ik7Wy0tbx1vg 密码:ccng

5、效果

我是使用自己的域名部署了一个网站,可以直接在浏览器输入网址后访问,这里就不放出来了,因为我这种部署方式用的是自己的API密钥,目前免费额度只有5$ ,太多人用很快就没了,你们可以用自己的API key,这个会在后面讲到!!![/狗头保命]
请添加图片描述


重要:部署时会修改glibc库,为了防止云服务器被搞坏,请提前进行备份或者创建快照

重要:部署时会修改glibc库,为了防止云服务器被搞坏,请提前进行备份或者创建快照

重要:部署时会修改glibc库,为了防止云服务器被搞坏,请提前进行备份或者创建快照

二、开始部署

1、部署HTTP代理

在Vultr服务器上部署代理

yum install tinyproxy

# 修改配置文件
# 可以修改listen的IP还有监听的端口
vim /etc/tinyproxy/tinyproxy.conf

# 启动 
systemctl start tinyproxy
# 开机自启 
systemctl enable tinyproxy

2、安装nodejs环境

在云服务器上部署
该项目明确表明需要用到Node.js 18.x
否则构建时会出现问题
请添加图片描述

因为系统中不同的项目可能需要不同的Node.js版本,为了方便管理,安装nvm

# nvm允许您通过命令行快速安装和使用不同版本的node

# 安装脚本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

# 运行上述命令下载脚本并运行它。该脚本将 nvm 存储库克隆到~/.nvm,并尝试将下面代码段中的源代码行添加到正确的配置文件(~/.bash_profile、~/.zshrc、~/.profile或~/.bashrc)。

# 使配置生效
source .bashrc

验证:
      a:nvm ls-remote
      查看所有可安装的node版本号
    b:nvm install 13.0.0
      安装13.0.0版本的node
    c:nvm install 15
      安装15系列中最高版本的node
      比如15系列有15.0.0,  15.0.1,  15.1.1,  15.1.2,  15.2.1,  15.3.0,那么最后安装的就是15.3.0
    d:nvm install 14.2
        安装14.2系列中最高版本的node
    e:nvm list
      查看已安装的所有node版本以及默认的版本
    f:nvm use 13.0.0
      使用13.0.0版本的node
    g:nvm use 14.2
      使用14.2系列的最高版本node
    h:nvm uninstall 13.0.0
      卸载13.0.0版本的node

# 安装对应版本node.js
nvm ls-remote
nvm install v18.16.0

请添加图片描述

3、安装pnpm

安装好nvm和nodejs后

# 版本切换
nvm use 18.16.0

# 安装pnpm
npm install pnpm -g

# 环境验证
nvm list
node -v
npm -v
pnpm -v

请添加图片描述

4、更新make、gcc、g++

在上述步骤中会出现一些报错,例

node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)

这是因为node.js 18.0依赖与高版本的glibc库,所以需要进行更新,从报错可知,我需要的最高版本为GLIBC_2.28,所有我需要安装这个版本

先更新gcc与g++,最新版的也不兼容,需要下载gcc-8.2.0

# 安装make
wget http://ftp.gnu.org/pub/gnu/make/make-4.3.tar.gz
tar -zxvf make-4.3.tar.gz 
cd make-4.3 
./configure --prefix=/usr
type make 
make check 
make install


# 安装gcc、g++ 
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz 
tar -zxvf gcc-8.2.0.tar.gz 
cd gcc-8.2.0 
# 下载gmp mpfr mpc等供编译需求的依赖项 
./contrib/download_prerequisites

# 配置 
mkdir build 
cd build 
../configure --prefix=/usr/local/gcc-8.2.0 --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib 

# 编译安装 需要很久很久很久
make -j 2 
make install 

更新glibc库

wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.28.tar.gz
tar -zxvf glibc-2.28.tar.gz
cd glibc-2.28/
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

make && make install

# 查看文件软链接
ls -l /lib64/libc.so.6 

# 再次查看系统中可使用的glibc版本 
strings /lib64/libc.so.6 |grep GLIBC_
strings /usr/local/gcc-8.2.0/lib64/libstdc++.so.6 | grep GLIBCXX_


# 升级GLIBCXX
cd /usr/local/gcc-8.2.0/lib64
strings ./libstdc++.so.6 |grep GLIBCXX_

cp libstdc++.so.6.0.25 /usr/lib64/

# 重新链接libstdc++.so.6
cd /usr/lib64/
rm libstdc++.so.6 -f
ln -s ./libstdc++.so.6.0.25 ./libstdc++.so.6

# 查看可用版本
strings /lib64/libstdc++.so.6 |grep GLIBCXX_

5、安装Docker

因为我采用的是用docker容器的方式部署,所以需要安装docker

cd /etc/yum.repos.d/
wget https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r

yum install docker-ce-18.06.3.ce-3.el7 -y

# 启动docker服务
systemctl start docker

# 设置docker服务开机自启
systemctl enable docker

6、部署镜像网站

git clone https://github.com/yuezk/chatgpt-mirror.git

cd chatgpt-mirror

# 新建一个 .env 文件,输入 OPENAI_API_KEY:使用自己申请的API密钥
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# optional, support http or socks proxy
# 代理配置
HTTP_PROXY=http://proxy-server-ip:port

# 构建镜像
$ docker build -t chatgpt-mirror .

# 运行容器
docker run -itd -p 0.0.0.0:3000:3000 --name chatgpt -h chatgpt -m 1024m --cpus=1 --env-file .env chatgpt-mirror

此时输入http://IP:3000便可以访问网址,记得在云服务器管理后台开放该端口

7、使用反向代理部署网站

此时可以将之前创建的容器进行删除,同时云服务器那边只需要开发80443端口

docker stop chatgpt && docker rm chatgpt

# 启动容器
docker run -itd -p 127.0.0.1:3000:3000 --name chatgpt -h chatgpt -m 1024m --cpus=1 --env-file .env chatgpt-mirror

使用宝塔后台添加网站请添加图片描述
添加反向代理
在这里插入图片描述
此时直接访问配置好的域名便可访问镜像网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/431245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Echarts 如何添加页脚元素

要在 Echarts 图表中添加页脚元素,可以通过在 Echarts 实例的配置对象中添加 graphic 元素来实现。graphic 元素是一个数组形式的配置项,可以通过其中的 text 元素添加文字,rect 元素添加矩形,image 元素添加图片等,从…

JavaSE注解

注解分类和说明点 注解:可对程序做解释可被其他程序读取 元注解:Target:表明注解的使用范围,Retention:表示要在什么级别保存注解信息,Document,Inherited 自定义注解:interface …

一文说透安全沙箱技术

在数字经济的东风中,数据安全至关重要。目前已经颁布了包括《数据安全法》、《个人信息保护法》和《数据安全管理办法》在内的国家政策,以促进整个数据要素的发展。 而近年来,随着移动应用程序的普及和小程序技术的崛起,安全沙箱…

RB-PEG-MAL,罗丹明-聚乙二醇-马来酰亚胺;Rhodamine PEG Maleimide;RB-PEG2000-MAL

RB-PEG-MAL,罗丹明-聚乙二醇-马来酰亚胺 中文名称:罗丹明-聚乙二醇-马来酰亚胺 英文名称:Rhodamine PEG Maleimide RB-PEG-MAL 性状:粉红色或暗红色固体或者液体,取决于分子量。 溶剂:溶于大部分有机溶剂,在水中有很好的溶解…

( “树” 之 BFS) 513. 找树左下角的值 ——【Leetcode每日一题】

513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 提示: 二叉树的节点个数的范围是 […

2020年团体程序设计天梯赛-模拟赛

L1-5 判断题 判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。 输入格式: 输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数&#xf…

ChatGPT和Claude 对比测试(以Review MLIR Codegen代码为例)

Claude在MLIR代码分析上完全超越了ChatGPT并表现十分惊艳,请阅读全文或者自己注册感受它的强大。 0x0. 前言 这里将以oneflow IR部分中的一个Codegen任务(目标是在mlir codegen中支持oneflow stream,用oneflow stream替换pass中自己生成的st…

10个前端开发者需要掌握的DOM技巧

Web开发不断发展,掌握最新的趋势和最佳实践对每位开发者来说都至关重要。Web开发的最重要方面之一就是使用文档对象模型(DOM)。这篇文章中,小蓝将与大家共同探讨10个必须掌握的DOM技巧,帮助您成为更高效、更有效的开发…

CSS—javaEE

文章目录1.引入的方式1.1作为HTML的标签属性1.2style标签1.3link标签外部引入css文件2.基础选择器2.1标签选择器2.2类选择器2.3id选择器2.4通配符选择器3.复合选择器3.1后代选择器3.2子选择器3.3并集选择器3.4伪类选择器4.设置样式4.1字体4.2文本4.3背景4.4圆角5.显示模式6.盒模…

【Linux】HTTP超文本传输协议

http主要用在浏览器和web服务器通信,是基于TCP协议的应用层无连接的传输协议。 HTTP与HTTPS http是明文数据传输,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。协议使用端口号:80。 https更…

AIGC:数字内容创新的新引擎,还有藏着更多你知道的细节

随着技术的不断发展进步,在前两年对我们还是天方夜谭,可望而不可即的科技,现在不仅在逐步实现,甚至在广泛地普及应用中。人工智能技术应用在越来越多的行业中,在一定程度上对各行业的发展起了不小的推动作用&#xff0…

教你如何将PDF文件转换成PPT演示文稿

在工作和学习中,我们可能需要将一些PDF文件转换成PPT演示文稿,以便于更好地展示和分享。虽然PPT和PDF是两种不同的文档格式,但是我们可以使用一些专业的软件或在线工具来实现这种转换。下面就让我们来教你如何将PDF文件转换成PPT演示文稿。 …

Java 简介

Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。由 James Gosling和同事们共同研发,并在 1995 年正式推出。 后来 Sun 公司被 Oracle (甲骨文)公司收购,Java 也随之成为 O…

RabbitMQ 发布确认 交换机 死信队列 延迟队列

RabbitMQ 发布确认开启发布确认的方法单个确认发布批量消息确认发布异步确认发布如何处理异步未确认消息 交换机绑定Fanout交换机Fannout交换机(消费者)Fannout交换机(生产者) Direct exchage(直接交换机)生产者消费者 Topic交换机…

遥感影像变化检测新方法:MLDANets

来源:投稿 作者:xin 编辑:学姐 论文标题: Multilevel Deformable Attention-Aggregated Networks for Change Detection in Bitemporal Remote Sensing Imagery Motivation 本文指出: (1)当前基于自注意…

Spring AOP通知类型

我们之前的文章介绍了AOP通知描述了抽取的共性功能,根据共性功能抽取的位置不同,最终运行代码时要将其加入到合理的位置。 先来认识一下五种通知的具体类型: 前置通知后置通知环绕通知(重点)返回后通知(了解)抛出异常后通知(了解) &#x1f…

(4)(4.6) 强制性硬件配置

文章目录 前言 1 ArduPilot操作的简单概述 2 框架类和类型配置 3 电机编号和方向 4 无线电控制校准 5 加速度计校准 6 罗盘校准 7 遥控发射器飞行模式配置 8 电子调速器(ESC)校准 9 配置电机范围(可选) 10 失控保护机制 11 飞行模式 前言 作为首次安装的一部分&am…

深度卷积神经网络DCNN简介

1. 背景 卷积神经网络CNN(Convolutional Neural Network,又称ConvNet)保留了空间信息,因此可以更好地用于图像分类。 卷积操作基于仔细甄选的局部感受野,在多个特征平面共享权值;之后全连接层基于传统的多层…

C++之 多态(Polymorphism)

目录 一、基本概念 多态的使用: 案例一——计算机类 多态的优点: 二、纯虚函数与抽象类 特点: ①无法实例化对象 ②子类必须重写父类中的纯虚函数,否则也属于抽象类 案例二——制作饮品 三、虚析构与纯虚析构 因为父类指…

【C++】结构体嵌套结构体

目录 1、缘起 2、结构体嵌套结构体 3、总结 1、缘起 结构体嵌套结构体 是一种数据组织方式,就像 俄罗斯套娃 一样,一个数据结构可以包含另一个数据结构。这种嵌套结构使得程序可以更加灵活地处理数据,从而更好地满足复杂的需求。类比生活中…