SciNote是一个开源的ELN(Electronic Lab Notebook), Github页面:https://github.com/biosistemika/scinote-web
有一个在线服务SciNote, 但是国内网速很慢, 难以使用.
由于scinote开源,因此可以在本地部署。
准备工作
获取源代码
1
git clone https://github.com/biosistemika/scinote-web.git
创建文件
config/application.yml
对应变量说明- 环境要求:
make
,- Docker,
- docker-compose,
- 3000端口
- 确认安装权限
如果在Ubuntu下, 运行sudo -i
获取sudo权限
开发者环境
- 依次执行以下命令:
make docker
make run
等待执行完毕可以看到服务已经运行在3000端口, 然后在命令行中Ctrl + C
停止服务.
参考页面 执行
make cli
进入docker container, 依次执行以下语句:rails db:drop
rails db:create
rails db:migrate
rails db:seed
exit
到这里已经可以在http://localhost:3000 看到有服务在运行了, 但是我运行到这一步的时候, 显示的是错误页面. 我检查之后发现container下面的public文件夹几乎是空的. 这个项目使用的是前端webpacker + 后端rails. 我推测是没有编译webpacker导致的问题, 但是我对于这两个工具都相当不熟悉, 没能找到编译的方法. 如果是对于这两个工具比较熟悉的朋友, 应该编译一下就能用了. 尝试编译的朋友请在评论区留个言~
我没办法只能转向生产环境
生产环境
- 依次执行以下语句:
make config-production
make docker-production
make database-production
- 启动服务:
docker-compose -f ./docker-compose.production.yml up
如果想在后台运行, 使用docker-compose -f ./docker-compose.production.yml up -d
- 此时在http://localhost:3000 已经可以正常使用了.
参考页面
备份数据
需要备份的数据有postgres数据库中的数据和系统文件, 以及config/application.yml
和production.env
文件.
备份postgresql数据库
docker exec scinote_db_production pg_dump -h localhost -p 5432 -U postgres -d scinote_production -c -b -f /home/db.bak
docker cp scinote_db_production:/home/db.bak /your/bakup/path/
备份文件系统中的数据
docker cp scinote_web_production:/usr/src/app/public/system /your/bakup/path/
定期执行备份
将上述命令编写成脚本, 使用crontab定期执行备份.
这里也可以结合以前提到过的bypy工具包, 定期备份到百度云.
我的备份脚本:
恢复数据
如果是在另外一台主机上恢复数据, 需要将备份的config/application.yml
和production.env
文件拷贝到对应位置.
恢复postgresql数据库
- 拷贝数据到container:
docker cp db.bak scinote_db_production:/home/db.bak
- 进入scinote_db_production的container,执行
psql -h localhost -p 5432 -U postgres -d scinote_production -f /home/db.bak
docker cp ~/Documents/sciweb-data-bak/system/. scinote_web_production:/usr/src/app/public/system/
make docker-production
恢复文件系统中的数据
- 拷贝数据到container:
docker cp /your/bakup/path/ scinote_web_production:/usr/src/app/public/system
更新源文件
- 重建docker镜像:
make docker-production
- 迁移数据:
make cli-production
rails db:migrate
- 重启docker container
docker-compose -f ./docker-compose.production.yml up -d