AI聊天GPT的服务器选型及服务器初始化

部署服务器选型及服务器初始化

我这边选的是腾讯云海外服务器
必须为海外服务器,因为我们需要直调国外的API,当然你也可以通过nginx代理chatgpt的api,然后购买国内服务器

点击跳转选购服务器

来到这里!往下滑

在这里插入图片描述

选择服务器

一般2核2g或者2核4g已经足够撑起当前网站的运行了

系统选择 CentOS Stream 8
在这里插入图片描述

跳转到控制台

点击我跳转轻量级服务器控制台

这就是刚刚购买的那台服务器

在这里插入图片描述

密码重置

点击更多

在这里插入图片描述

重置完成后,开始用Xshell工具连接刚刚的服务器

Xshell下载地址,点击跳转

连接成功

输入账户root
密码为刚刚重置的那个
在这里插入图片描述

开始安装JDK

这边使用openjdk,一键安装,为了方便快速

命令:yum -y list java*

在这里插入图片描述
安装JDK1.8

命令:yum install -y java-1.8.0-openjdk.x86_64

查看jdk版本
java -version
显示版本号,说明安装成功了
在这里插入图片描述

安装宝塔

命令:yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

在这里插入图片描述
后续操作(y/n)? 输入y即可

在这里插入图片描述

安装成功

在这里插入图片描述

输入BT命令,调起面板

输入:bt
在这里插入图片描述
这边我一般只修改3个东西,面板端口,用户名,和登录密码

修改用户名

输入对应的账号
在这里插入图片描述

修改密码

输入对应的密码
在这里插入图片描述

更改端口

我这边更改端口为5000
在这里插入图片描述

注意!更改为5000端口后,我们需要去腾讯云服务器控制台的防火墙放开当前这个端口号

点击它

在这里插入图片描述

选择防火墙

在这里插入图片描述

添加规则

在这里插入图片描述

添加5000端口

在这里插入图片描述

打开Xshell

命令:bt default

复制这个外网面板地址,在浏览器打开

在这里插入图片描述

在浏览器打开

点击高级

在这里插入图片描述

点击继续

在这里插入图片描述

输入刚刚的账号密码

在这里插入图片描述

登录成功

在这里插入图片描述

有账号则绑定,没账号注册

在这里插入图片描述

宝塔开始安装必要的软件

选择商店
在这里插入图片描述

安装redis

在这里插入图片描述

点击安装

在这里插入图片描述

安装nginx

在这里插入图片描述
在这里插入图片描述

安装mysql

在这里插入图片描述
在这里插入图片描述

等待安装完成

大概过程需要15分钟左右

在这里插入图片描述

调整为首页展示

开启首页展示
在这里插入图片描述

放行3306端口

在这里插入图片描述

腾讯云服务器端口放行3306

在这里插入图片描述

重置root数据库密码

在这里插入图片描述

提交

在这里插入图片描述

初始化Plum-GPT数据库

打开后端工程下面的默认SQL

在这里插入图片描述

修改SQL,配置请求key

注意这个key已经过期了,用不了,需要你们自己拿自己的key配上去,
如果你没有key,请加作者微信:typsusan(key是120额度,速度快,收费,不贵)
我不卖,但是你需要,我可以给你去买
在这里插入图片描述

添加数据库

在这里插入图片描述

添加数据库

这个账号密码需要记住哦!
放到chatgpt-template工程的application.yml文件
在这里插入图片描述

导入数据库

导入刚刚那个SQL文件
在这里插入图片描述

上传后,点击导入

在这里插入图片描述

导入成功

在这里插入图片描述

配置服务器文件地址

创建图片默认文件夹

命令:mkdir -p /data/chat

在这里插入图片描述

命令:mkdir -p /data/chat/identify

在这里插入图片描述

命令:mkdir -p /data/chat/default

在这里插入图片描述

创建完成

在这里插入图片描述

上传默认的头像

/data/chat/default 下面是用户的默认头像 jpg结尾格式,名称为0~51的图片

在这里插入图片描述
在这里插入图片描述

nginx配置https

选购域名

https://buy.cloud.tencent.com/domain

搜索你想要的名称

域名一般都是购买期限为1年,价格为10~60价格不等,还有免费的ssl

在这里插入图片描述

购买完成后

跳转到域名控制台

在这里插入图片描述

域名开始解析服务器ip

在这里插入图片描述

快速解析

在这里插入图片描述

选择刚刚购买的那台服务器

在这里插入图片描述

开始配置nginx配置

以下是全部的配置,部分需要根据你实际情况修改

user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;

stream {
    log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
  
    access_log /www/wwwlogs/tcp-access.log tcp_format;
    error_log /www/wwwlogs/tcp-error.log;
    include /www/server/panel/vhost/nginx/tcp/*.conf;
}

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       mime.types;
		#include luawaf.conf;

		include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
		fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
		limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;
server
    {
        listen 80;
        server_name www.plumgpt.com plumgpt.com;
        index index.html index.htm index.php;
        add_header Content-Security-Policy upgrade-insecure-requests;
        #error_page   404   /404.html;
        include enable-php.conf;
        
        
        if ($http_host ~ "^www.plumgpt.com$") {
          rewrite ^(.*) https://plumgpt.com$1 permanent;
        }
        
        if ($http_host ~ "^http://plumgpt.com/#/chat$") {
          rewrite ^(.*) https://plumgpt.com$1 permanent;
        }
        
        if ($http_host ~ "^plumgpt.com/#/chat$") {
          rewrite ^(.*) https://plumgpt.com$1 permanent;
        }
        
        
        location / {
          root /www/wwwroot/dist;
          if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) {
          	  root /www/wwwroot/h5;
          }
        }
        
        
        
        location /request/open {
            proxy_pass http://你服务器的ip:8099;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_connect_timeout 30s;
            proxy_read_timeout 86400s;
            proxy_send_timeout 30s;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        
            add_header Cache-Control no-cache;
            add_header Cache-Control private;
            
            if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
            	return 403;
            }
            if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
            {
            	return 403;
            } 
            if ($request_method !~ ^(GET|HEAD|POST)$) {
            	return 403;
            }
            if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
            	return 404;
            }
            if ($proxy_add_x_forwarded_for != $remote_addr){
            	return 444;
            }
        
            expires -1s;
        }
        
        location /webSocket/  {   
           proxy_pass http://你服务器的ip:8099;    
           proxy_http_version 1.1;    
           proxy_read_timeout 3600s;
           proxy_set_header Upgrade $http_upgrade;    
           proxy_set_header Connection "Upgrade";    
           proxy_set_header X-real-ip $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
                       if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
            	return 403;
            }
            if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
            {
            	return 403;
            } 
            if ($request_method !~ ^(GET|HEAD|POST)$) {
            	return 403;
            }
            if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
            	return 404;
            }
            if ($proxy_add_x_forwarded_for != $remote_addr){
            	return 444;
            }
        }
        
        rewrite ^(.*) https://$server_name$request_uri permanent;
        

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /www/wwwlogs/access.log;
    }
server
    {
        listen 80;
        listen 443 ssl http2;
        server_name www.plumgpt.com plumgpt.com;
        index index.html index.htm index.php;
        add_header Content-Security-Policy upgrade-insecure-requests;
        
       
        
        if ($http_host ~ "^www.plumgpt.com$") {
          rewrite ^(.*) https://plumgpt.com$1 permanent;
        }
      
        if ($server_port !~ 443){
            rewrite ^(/.*)$ https://$host$1 permanent;
         }
        ssl_certificate /www/wwwroot/plumgpt.com_nginx/plumgpt.com_bundle.pem;
        ssl_certificate_key /www/wwwroot/plumgpt.com_nginx/plumgpt.com.key;
        ssl_session_timeout 10m;
        ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_session_cache shared:SSL:10m;
        #error_page   404   /404.html;
        include enable-php.conf;
        
        
        location / {
          root /www/wwwroot/dist;
          if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT-)|(SonyEricsson)|(NEC-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC-)|(SED-)|(EMOL-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ) {
          	  root /www/wwwroot/h5;
          }
        }
        

        
        location /request/open {
            proxy_pass http://你服务器的ip:8099;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_connect_timeout 30s;
            proxy_read_timeout 86400s;
            proxy_send_timeout 30s;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        
            add_header Cache-Control no-cache;
            add_header Cache-Control private;
        
            if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
            	return 403;
            }
            if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
            {
            	return 403;
            } 
            if ($request_method !~ ^(GET|HEAD|POST)$) {
            	return 403;
            }
            if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
            	return 404;
            }
            if ($proxy_add_x_forwarded_for != $remote_addr){
            	return 444;
            }
        
            expires -1s;
        }
        
        location /chat {
          rewrite ^/chat/(.*)$ /$1 break;
          root /data/chat;
        }
        
        location /webSocket/  { 
           proxy_pass http://你服务器的ip:8099;    
           proxy_http_version 1.1;    
           proxy_read_timeout 3600s;
           proxy_set_header Upgrade $http_upgrade;    
           proxy_set_header Connection "Upgrade";    
           proxy_set_header X-real-ip $remote_addr;
           proxy_set_header X-Forwarded-For $remote_addr;
           
                       if ($http_user_agent ~* "Scrapy|Sogou web spider|Baiduspider") {
            	return 403;
            }
            if ($http_user_agent ~ "FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$" )
            {
            	return 403;
            } 
            if ($request_method !~ ^(GET|HEAD|POST)$) {
            	return 403;
            }
            if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") {
            	return 404;
            }
            if ($proxy_add_x_forwarded_for != $remote_addr){
            	return 444;
            }
        }

        access_log  /www/wwwlogs/access.log;
    }
include /www/server/panel/vhost/nginx/*.conf;
}


修改nginx配置 替换你服务器ip

所以的地方都替换
可以自己检索一下文字 “你的服务器的ip”
在这里插入图片描述

域名替换

注意所以的地方都需要替换
1,黄色框框替换为你自己购买的域名
2,蓝色框框是PC前端vue打包好后存放的地址
3,绿色框框是手机端打包好后存放的地址

在这里插入图片描述

域名证书

这个地方替换为你域名证书存放的地址
在这里插入图片描述

写入到nginx

在这里插入图片描述

更改配置

将刚刚配置好的全部替换到这里面来

在这里插入图片描述

如果对以上步骤有疑惑,不懂的可以加博主vx:typsusan

### 构建和部大规模语言模型及其RAG工作流 为了满足快速开发、构建并部GPT这样的大规模语言模型的需求,尤其是带有检索增强生成(RAG)功能的支持自定义和多种开源模型的应用程序,可以考虑利用现有的工具和技术栈来简化流程。 #### 使用Langchain或LlamaIndex框架加速开发过程 通过采用Langchain或者LlamaIndex这类高级别的抽象层框架,开发者能够更高效地创建复杂的大规模语言处理应用程序。这些框架不仅提供了易于使用的API接口用于集成不同的预训练模型,还内置了许多实用的功能模块,比如向量数据库连接器、索引管理服务等,从而大大减少了从零开始搭建系统的难度[^3]。 对于希望实现基于RAG的工作流来说,上述提到的两个框架都具备良好的支持能力。它们允许用户轻松配置外部数据源作为查询扩展的基础,并且可以通过简单的几行代码完成整个流水线的设计与实施。例如,在Python环境中仅需不到十行的有效编码即可启动一个基础版本的服务实例。 #### 集成多样的开源模型选项 当涉及到具体的技术选型时,除了官方推荐的标准组件外,还可以探索其他社区贡献者维护的各种插件化解决方案。这使得最终产品能够在保持灵活性的同时拥有广泛的适用范围——无论是针对特定领域优化过的微调变体还是完全自主训练的新颖结构都能被纳入考量之中。 值得注意的是,由于不同类型的底层算法可能存在兼容性差异,因此建议优先选用那些已经过充分测试验证并与所选平台具有良好协作记录的产品组合。此外,考虑到性能表现的重要性,务必提前评估候选方案在目标硬件环境下的实际运行效果[^1]。 ```python from langchain import LangChain, models # 初始化链路对象 lang_chain = LangChain() # 加载指定名称/路径处存储的语言模型实例 model_instance = models.load_model('path_to_custom_gpt') # 定义输入输出模式及其他必要参数设置... result = lang_chain.process(query="example query", model=model_instance) print(result) ``` #### 实现离线部的能力 最后一点但同样重要的是关于能否做到独立于云端资源之外运作的问题。得益于现代软件工程实践的进步,现在有许多途径可以帮助我们达成这一目的。一方面,许多流行的大规模语言模型本身即提供有适用于本地计算机执行的形式;另一方面,则可通过容器镜像打包等方式进一步封装依赖关系以便迁移至任意计算节点上执行。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来自上海的这位朋友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值