第一步:先安装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,操作方法如下:
- 根目录下的.env.example改成.env
- 粘贴: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错误,具体处理办法看这里。
最新回复