为羊哥点赞,利用云服务器搭建私人云笔记
前言在B站上看到程序羊(CodeSheep)自己搭建了云笔记,感觉挺好玩儿的就想着自己动手试试,结果差点就逝世了,看着别人搞10分钟不到就搞好了,自己搞了两天,哎呦喂。1. 环境准备PicGo:https://github.com/Molunerfinn/PicGo/releases, 上传图片到图床的工具(目前无法将gitee作为图床了,我是买了腾讯云对象存储,一年10元不到)云服务器,或者自己
前言
在B站上看到程序羊(CodeSheep)自己搭建了云笔记,感觉挺好玩儿的就想着自己动手试试,结果差点就逝世了,看着别人搞10分钟不到就搞好了,自己搞了两天,哎呦喂。
1. 环境准备
- PicGo:https://github.com/Molunerfinn/PicGo/releases, 上传图片到图床的工具(目前无法将gitee作为图床了,我是买了腾讯云对象存储,一年10元不到)
- 云服务器,或者自己的虚拟机
- MongoDB:https://www.mongodb.com/try/download/enterprise,版本号最好选择4.0,一方面4.0+的里面没有mongorestore等,还需要自己从这里下载复制(压缩包中bin目录下全部文件)过来,另一方面是添加用户后,后面在leanote的配置文件中配置用户密码会出错,因为最新版本添加了严格的权限验证,怎么解决没有百度出来
- leanote:http://leanote.org/#download
2. 资料参考
- 羊哥视频教学:https://www.bilibili.com/video/BV1w3411N7zM?spm_id_from=333.337.search-card.all.click
- 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正常启动了,但是访问页面就是没数据
- 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啥的,以后再说,这个也不是很必要。
更多推荐
所有评论(0)