插件实现思路:从插件中导出html文件并上传到web服务器,服务端同时生成对应的index.html作为首页。
服务器实现思路:请求特定的链接时,从数据库中查询app_id
和doc_id
,并重定向到服务端的web接口中。
在v2.0中,仅有一个二进制程序,包含了web服务器。数据库采用了sqlite(本地文件的形式)。
-
克隆项目
git clone [email protected]:tengfei-xy/siyuan-plugin-share-system-engine.git
-
确保存在go 1.21.4版本,安装参考文档
-
进入项目文件夹并开始编译
务必设置
CGO_ENABLED
=1cd siyuan-plugin-share-system-engine CGO_ENABLED=1 go build -o spss_engine .
注:不提供32位系统的二进制文件和windows arm。
-
下载Release并解压
-
修改配置文件
-
安装musl
centos 7
sudo yum install -y musl-libc-static
debian / ubuntu
sudo apt instal musl
-
运行启动
./spss_engine -c config.yaml
-
一键部署 注:
-p
的容器端口需要和SPSS_LISTEN
变量的端口保持一直。作为使用者,需要修改的是-p的宿主端口和SPSS_SHARE_LINK
变量的端口(如有需要)# IP访问 / http访问 / 关闭API访问密码保护 docker run -d -p 25934:25934 -v ./:/data \ -v /etc/localtime:/etc/localtime --restart=always \ -e SPSS_LISTEN=127.0.0.1:25934 \ -e SPSS_SAVE_PATH=/data \ -e SPSS_SHARE_LINK="http://127.0.0.1:25934" \ -e SPSS_WEB_FILE_MAX=100 \ --name=spss_engine \ tengfeixy/spss_engine:2.1.0 # https访问 / 启动API访问密码保护 docker run -d -p 25934:25934 -v ./:/data \ -v /etc/localtime:/etc/localtime --restart=always \ -e SPSS_LISTEN=0.0.0.0:25934 \ -e SPSS_SAVE_PATH=/data \ -e SPSS_SHARE_LINK="https://www.example.com:25934" \ -e SPSS_WEB_FILE_MAX=100 \ -e SPSS_WEB_SSL=true \ -e SPSS_WEB_SSL_CERT=./cert.pem \ -e SPSS_WEB_SSL_KEY=./cert.key \ -e SPSS_DB_API=true \ -e SPSS_DB_AUTH=username:password \ --name=spss_engine \ tengfeixy/spss_engine:2.1.0
-
使用配置文件
- 构建/拉取镜像
- 本地构建镜像,下载Release并解压
docker build --no-cache=true -t spss_engine .
- DockerHub拉取镜像
docker build -t spss_engine .
- 本地构建镜像,下载Release并解压
- 在当前目录创建config.yaml,并修改
- 运行容器
docker run -d -p 25934:25934 -v ./:/data -v /etc/localtime:/etc/localtime --restart=always --name=spss_engine spss_engine
- 构建/拉取镜像
-
从mysql导出sql,参考语句
bin/mysqldump -B share_system -u root -p -S /tmp/mysql.sock > ~/share_system.sql
-
导入方式
注:程序只搜索导入的数据文件的开头为INSERT的语句。表初始化和创建又程序启动时自动完成。导入前,将清空数据表。
-
命令行
- 服务器在容器中
- 将sql文件放入容器中
docker cp ./share_system.sql spss_engine:/
- 通过程序导入sql文件
docker exec -it spss_engine /usr/sbin/spss_engine -d /share_system.sql
- 将sql文件放入容器中
- 服务器无docker环境
spss_engine -d ./share_system.sql
- 服务器在容器中
-
网络
在服务器已启动后,通过curl或其他工具上传文件。
注:此方法需要设置配置文件
apiEnable: true
或变量SPSS_DB_API=true
,并设置用户名、密码。运行正常时,将返回被插入的数据。curl -X PUT -u username:password http://<your_address>/api/db/table -F "file=@share_system.sql"
-
-
修改所有的index.html为index.htm
linux/macos参考命令
for line in $(find 数据文件路径 -name 'index.html');do
sudo mv $line $(dirname $line)/index.htm
done
说明:API是用来查看数据库的记录,使用API之前,需要确保API接口在配置文件上被启用。如果包含了用户和密码,在请求中加入Authorization: Basic base64(用户名:密码)
(参考文档)
- 查看所有数据
GET /api/db/table
- 删除所有数据
DELETE /api/db/table
- 提交旧版本的数据库文件(次文件因包含INSERT)
PUT /api/db/table