前面一篇文章介绍过GPTLink:GPTLink:10分钟搭建自己可免费商用的ChatGPT环境。这里记录下自己的搭建过程。
一、前言
根据项目介绍,PHP环境下的搭建,需要下面的环境:
- Nginx;
- MySql 5.7 +;
- Redis 5.0 +;
- PHP 8.0;
说一下前提,我服务器上已经安装过Nginx、MySQL、PHP8,因此我不算从零开始,多装了一个redis和php相关扩展。redis的安装没什么技巧。我主要的难度是在PHP扩展swoole。
二、安装swoole
Debian系统,我先是从源码安装swoole,参考官方: 源码安装swoole。
cd swoole-src && \
phpize && \
./configure && \
sudo make && sudo make install
没有安装 phpize 可执行命令:
sudo apt-get install php-dev
来安装phpize
。
三、安装相关扩展
执行:
sudo apt install php8.0-mysql php8.0-bcmath php8.0-swoole php8.0-redis php8.0-zip php8.0-xml
php配置php.ini加一行
swoole.use_shortname = "Off"
具体使用的哪个php.ini可以通过下面的命令查看:
php -ini |grep php.ini
执行完毕后,开始gptlink部署。
四、下载gptlink源码
项目: Github。
下载完成后解压,并进入gptlink源码目录。
五、安装composer
参考: 安装composer及用composer安装flarum、插件的过程。
六、安装gptlink
进入gptlink源码目录,执行:
composer install
如果没有报错则执行下一步启动
七、启动
新建启动脚本:
#!/bin/bash
bash /home/yomige/www/gptlink/gptserver/start.sh > /home/yomige/www/gptlink/logs/gpt-`date "+%Y-%m-%d"`.log 2>&1 &
八、其他配置
- Nginx配置
client_max_body_size
,值小的话,我这里请求报错;
九、贴下我的Nginx配置
4spaces@4spaces-pc:~$ cat /etc/nginx/sites-available/gptlink
server {
server_name chatgpt.4spaces.org;
root /home/4spaces/www/gptlink/gptweb;
index index.html;
access_log /var/log/nginx/gptlink.access.log;
error_log /var/log/nginx/gptlink.error.log;
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#fastcgi_pass unix:/run/php/php8.2-fpm.sock;
proxy_pass http://127.0.0.1:9503/;
}
location /admin {
alias /home/4spaces/www/gptlink/gptadmin;
index index.html;
try_files $uri $uri/ /admin/index.html;
}
location ~ /\.ht {
deny all;
}
location ~* ^/(?![api|admin].*) {
try_files $uri /index.html;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/chatgpt.4spaces.org/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/chatgpt.4spaces.org/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = chatgpt.4spaces.org) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name chatgpt.4spaces.org;
return 404; # managed by Certbot
}