前言

在B站上看到程序羊(CodeSheep)自己搭建了云笔记,感觉挺好玩儿的就想着自己动手试试,结果差点就逝世了,看着别人搞10分钟不到就搞好了,自己搞了两天,哎呦喂。

1. 环境准备

  1. PicGo:https://github.com/Molunerfinn/PicGo/releases, 上传图片到图床的工具(目前无法将gitee作为图床了,我是买了腾讯云对象存储,一年10元不到)
  2. 云服务器,或者自己的虚拟机
  3. MongoDB:https://www.mongodb.com/try/download/enterprise,版本号最好选择4.0,一方面4.0+的里面没有mongorestore等,还需要自己从这里下载复制(压缩包中bin目录下全部文件)过来,另一方面是添加用户后,后面在leanote的配置文件中配置用户密码会出错,因为最新版本添加了严格的权限验证,怎么解决没有百度出来
  4. leanote:http://leanote.org/#download

2. 资料参考

  1. 羊哥视频教学:https://www.bilibili.com/video/BV1w3411N7zM?spm_id_from=333.337.search-card.all.click
  2. leanote官方安装文档:https://github.com/leanote/leanote/wiki/Leanote-%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%89%88%E8%AF%A6%E7%BB%86%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B----Mac-and-Linux,最好按照文档一步一步来,别直接先给数据库添加用户,我就是跳着来,结果最后leanote正常启动了,但是访问页面就是没数据
  3. MongoDB数据库添加用户:https://github.com/leanote/leanote/wiki/QA#%E5%A6%82%E4%BD%95%E7%BB%91%E5%AE%9A%E5%9F%9F%E5%90%8D

3. Leanote 二进制版详细安装教程 Mac and Linux

官方文档真的很详细,根据步骤来,十有八九错不了。

3.1 下载leanote

# 将leanote压缩包上传到自己熟悉的目录下,我放的是:/usr/local/leanote
# 解压
tar -xzvf leanote-darwin-amd64.v2.0.bin.tar.gz

3.2 安装mongodb

# 根据上文链接下载压缩包到自己熟悉的目录下,我放的是:/usr/local/mongodb
# 解压
tar -xzvf mongodb-linux-x86_64-3.0.1.tgz

3.3 添加环境变量(可有可无)

# 先进入MongoDB的bin目录下
pwd   #显示当前目录路径,将此路径添加到环境变量中
vim /etc/profile
# 直接键入 i 进入插入模式,在最后一行加入
export PATH=$PATH:(pwd出来的路径)
# 敲一下Esc键,然后依此输入  :wq,敲回车保存并退出
# 使环境变量生效
source /etc/profile

3.4 启动MongoDB

创建三个文件夹,配置文件、数据库数据存储、日志文件
在这里插入图片描述
首次启动

mongod --dbpath 创建的data路径  # 出现好长一段代码后说明启动成功了
# 因为这不是后台启动,需要另开一个窗口,在另一个窗口输入: mongo,即可进入交互程序

导入初始数据
Ctrl+C退出交互程序后,输入mongorestore -h localhost -d leanote --dir /home/user1/leanote/mongodb_backup/leanote_install_data/,即将leanote的初始数据导入到MongoDB中
注意:
这一步可能会出现mongorestore不具备执行权限,开启权限请另行百度,如果你使用的是xftp等工具的话,直接右键更改权限即可,yum install net-snmp这个命令不执行的话,可能也会报错,具体错误找不到辽。
查看数据

$> mongo
> show dbs # 查看数据库
leanote	0.203125GB
local	0.078125GB
> use leanote # 切换到leanote
switched to db leanote
> show collections # 查看表
files
has_share_notes
note_content_histories
note_contents

3.5 配置leanote

leanote的配置存储在文件 conf/app.conf 中。

请务必修改app.secret一项, 在若干个随机位置处,将字符修改成一个其他的值, 否则会有安全隐患!

3.6 运行leanote

注意: 在此之前请确保mongodb已在运行!

# cd 进入leanote的bin目录下
nohup bash run.sh & #后台运行

运行成功可通过日志最后会出现正在监听9000端口
在这里插入图片描述
在这里插入图片描述

3.7 体验leanote

输入网址:http://ip:9000,即可登录访问自己的云笔记,管理员账号为admin,密码为:abc123
在这里插入图片描述

4. 后续安全事项

因为MongoDB初始时没有添加用户,任何人都可以访问,这样数据内容就存在很大安全隐患,因此我们要给leanote数据库添加用户,并在leanote的配置文件中添加配置的用户跟密码

4.1 给leanote添加用户

# 关掉leanote
ps -ef | grep leanote
kill -9 leanote进程id

# 进入MongoDB交互界面
mongo
use leanote # 切换数据库
db.createUser({
    user: '用户名',
    pwd: '密码',
    roles: [{role: 'dbOwner', db: 'leanote'}]
});

db.auth("用户名","密码") #权限验证,返回1代表验证成功
Ctrl+C # 退出交互界面
# 关掉MongoDB
ps -ef | grep mongo # 查找MongoDB进程号
kill -9 进程id

4.2 创建mongodb启动的配置文件

在conf文件夹下创建mongo.conf
在这里插入图片描述

dbpath=/usr/local/mongodb/data # 数据库文件目录
logpath=/usr/local/mongodb/logs/mongo.log# 日志存放目录
port=27017 #端口
fork=true # 守护进程,后台运行
auth=true # 开启身份验证
bind_ip=0.0.0.0 # 允许远程访问,如果为127.0.0.1则只能本地访问,后续可以打开该配置,通过compass访问数据库,但要注意配置权限

4.3 重新启动mongodb

mongod -f /usr/local/mongodb/conf/mongo.conf   # 最后是配置文件的路径

4.4 修改leanote的配置文件

在这里插入图片描述
以下配置文件仅供参考,只需要在自己的配置文件中添加用户名跟密码即可

#------------------------
# leanote config
#------------------------

http.addr=0.0.0.0 # listen on all ip addresses
http.port=9000

site.url=http://localhost:9000 # or http://x.com:8080, http://www.xx.com:9000

# admin username
adminUsername=admin

# mongdb
db.host=127.0.0.1
db.port=27017
db.dbname=leanote # required
db.username= # 用户名,如果没有则空着
db.password= # 密码,如果没有则空着
# or you can set the mongodb url for more complex needs the format is:
# mongodb://myuser:mypass@localhost:40001,otherhost:40001/mydb
# db.url=mongodb://root:root123@localhost:27017/leanote
# db.urlEnv=${MONGODB_URL} # set url from env. eg. mongodb://root:root123@localhost:27017/leanote

# You Must Change It !! About Security!!
app.secret= 自己的配置文件中会有的#
#--------------------------------
# revel config
# for dev
#--------------------------------
app.name=leanote
http.ssl=false
cookie.httponly=false
cookie.prefix=LEANOTE
cookie.domain= # for share cookie with sub-domain
cookie.secure=false
session.expires=3h # 3 hour. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
format.date=2006-01-02
format.datetime=2006-01-02 15:04:05 # 必须这样配置
results.chunked=false

log.trace.prefix = "TRACE "
log.info.prefix  = "INFO  "
log.warn.prefix  = "WARN  "
log.error.prefix = "ERROR "

# The default language of this application.
i18n.default_language=en-us

module.static=github.com/revel/modules/static

[dev]
mode.dev=true
results.pretty=true
watch=true

module.testrunner = # github.com/revel/modules/testrunner

log.trace.output = stderr
log.info.output  = stderr
log.warn.output  = stderr
log.error.output = stderr

[prod]
mode.dev=false
results.pretty=false
watch=false

module.testrunner =

log.trace.output = off
log.info.output  = off
log.warn.output  = %(app.name)s.log
log.error.output = %(app.name)s.log

4.5 重新启动leanote

# cd 进bin目录
nohup bash run.sh &

5. 总结

这次走了不少弯路:

  • 下载安装MongoDB时,4.0+版本以上没有mongorestore等文件,在使用时还要给mongorestore设置权限(777)
  • 一开始给mongodb设置了用户,然后迁移备份,一个是在执行迁移命令时:mongorestore -h localhost -u 用户名 -p 密码 -d leanote --authenticationDatabase admin --dir /usr/local/leanote/leanote/mongodb_backup/leanote_install_data
    不加authenticationDatabase admin会报错,另一个是迁移成功后,leanote也成功启动了,但是访问会出现500服务器异常,然后又重新跟着官网来了一遍(严格按照官网步骤,小白)就OK了
  • 最后使通过nginx的stream流来进行一个代理,目前还没搞好,配置文件首行导入stream模块后报无法识别SSL啥的,以后再说,这个也不是很必要。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐