本次使用的环境是CentOS 7.9,网卡为NAT模式,内置wireguard。

编译安装python3.11

centos8更换源

1
2
3
4
5
6
cd /etc/yum.repos.d/
mkdir bak
mv CentOS-Linux-* bak
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all
yum makecache

安装依赖环境

1
2
3
4
5
yum update -y
yum install -y epel-release
yum -y groupinstall "Development tools"
yum install -y ncurses-devel gdbm-devel xz-devel sqlite-devel tk-devel uuid-devel readline-devel bzip2-devel libffi-devel
yum install -y openssl-devel openssl11 openssl11-devel

配置openssl环境变量

1
2
export CFLAGS=$(pkg-config --cflags openssl11)
export LDFLAGS=$(pkg-config --libs openssl11)

下载源码包

1
wget https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.xz

解压移动python3.11

1
2
3
tar xvf Python-3.11.1.tar.xz
mv Python-3.11.1 /usr/local/python3.11
cd /usr/local/python3.11/

修改配置文件

1
2
3
4
5
vim Modules/Setup
#将147行,215行,216行的注释取消
_socket socketmodule.c
_ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) $(OPENSSL_LIBS)
_hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) -lcrypto

编译安装

1
2
./configure --prefix=/usr/local/sbin/python3.11
make && make install

初步验证python

1
/usr/local/sbin/python3.11/bin/python3 -V

移除旧软连接,创建新软连接

查找

1
2
ll /usr/bin/ |grep python
ll /usr/bin/ |grep pip

删除

1
2
rm -rf /usr/bin/python
rm -rf /usr/bin/pip

重建

1
2
ln -sv /usr/local/sbin/python3.11/bin/python3 /usr/bin/python
ln -s /usr/local/sbin/python3.11/bin/pip3 /usr/bin/pip

验证效果

1
python -V && pip --version

此时python默认已经是3.11,但CentOS yum 还是依赖Python2.7,需要修改 yum 相关配置文件,确保yum 依然能够正常运行

1
2
3
4
5
6
vim /usr/bin/yum
!/usr/bin/python 改成 !/usr/bin/python2.7
vim /usr/libexec/urlgrabber-ext-down
/usr/bin/python 改为 /usr/bin/python2.7
vim /usr/bin/yum-config-manager
#!/usr/bin/python 改为 #!/usr/bin/python2.7

部署个人ChatGPT网站

下载项目

1
2
git clone https://github.com/GaiZhenbiao/ChuanhuChatGPT.git
cd ChuanhuChatGPT

安装依赖运行依赖

1
pip install -r requirements.txt

如果你还想使用本地运行大模型的功能,请再执行下面的命令

1
pip install -r requirements_advanced.txt

修改配置文件

在项目文件夹中复制一份 config_example.json,并将其重命名为 config.json

1
2
cp config_example.json config.json
vim config.json

在openai_api_key后的””中填入openai的API
将name_server后的IP改为虚拟机ip
下边的端口可随意更改,但是更改后需要防火墙放行端口

放行防火墙规则

1
2
3
firewall-cmd --permanent --add-port=7860/tcp
firewall-cmd --permanent --add-port=7860/udp
firewall-cmd --reload

启动项目

1
python ChuanhuChatbot.py