第一步:先安装go环境:

https://go.dev/dl/

第二步:克隆repo:

git clone https://github.com/songquanpeng/one-api.git

第三步:进入webdefault目录,npm i安装依赖

npm i

第四步:打包前端文件

npm run build

坑#1:
这里有坑,因为scripts里的 react-scripts build && rm -rf ../build/default && mv -f build ../build/default
rm -rf和mv -f都是linux的命令,在windows上不好使,所以npm run build运行完后,会报错:

'rm' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

这里需要用windows的命令来执行同样的操作:

rmdir /s /q ../build/default
move /Y build ..\build\default

第五步:回到根目录,并下载go依赖包

cd ../..
go mod download

第六步:go打包

go build -ldflags "-s -w" -o one-api.exe

坑#1:
这里要特别注意的是,windows上需要在最后加上.exe后缀名,否则不会出来一个可执行文件

如果时间特别长,可以考虑切换Go国内源:

go env -w GOPROXY=https://goproxy.cn,direct

第七步:运行

// 注意跟官方文档也不太一样:./one-api --port 3000 --log-dir ./logs
one-api.exe --port 3000 --log-dir ./logs

坑#3:
这里会报错,因为没有安装go-sqlite3。
我这里安装了mysql,操作方法如下:

  1. 根目录下的.env.example改成.env
  2. 粘贴:SQL_DSN=用户名:密码@tcp(localhost:3306)/oneapi

就不会出出现数据库错误了。

坑#4:

但是会继续出现下一个错误:[35;1mError 1071 (42000): Specified key was too long; max key length is 1000 bytes

这是因为创建数据库的命令创建了一个很长的key,超过了mysql的默认utf8mb4_0900_ai_ci字符集允许的长度。
解决办法是在mysql中运行如下命令:

SET GLOBAL default_storage_engine = 'InnoDB';

重新运行命令就可以访问http://localhost:3000/了。

坑#5:
在阿里云ECS里运行的时候,似乎有一些网络问题,提示下载cl100k_base.tiktoken错误,具体处理办法看这里

最后编辑:2025年01月22日 ©著作权归作者所有

发表评论