Leanote(中文名 “蚂蚁笔记”),横跨 Windows、MacOS、Android、iOS、Linux 多平台,支持富文本和 Markdown 文本格式,自由度非常之高,你可以让笔记内容玩出新花样来。除了主打的笔记同步、编辑功能外,还支持开设博客,展示你公开的笔记内容。总体来说 Leanote 使用起来挺顺手,最重要一点,这个笔记是开源的。
下面将基于阿里云ECS服务端搭建 Leanote 云笔记服务器的步骤分享出来,给需要使用私人云笔记的筒子们。详细安装请参考官方文档:《Leanote 源码版详细安装教程 Mac and Linux》。
1. Golang 安装
$ cd /usr/local/src$ wget https://studygolang.com/dl/golang/go1.10.1.linux-amd64.tar.gz$ tar zvxf go1.10.1.linux-amd64.tar.gz -C /usr/local/software/$ mv /usr/local/software/go /usr/local/software/go-1.10.1$ su steven$ mkdir -p /data/LeaNote/bin$ ln -s /usr/local/software/go-1.10.1/bin/* /data/LeaNote/bin
2. 获取 Revel 和 Leanote 的源码
2.1 方法1 (推荐方法):
请下载 leante-all-master.zip。解压后,将 src 文件夹复制到 /data/LeaNote/gopackage/。
使用如下命令生成 revel 二进制命令, 稍后运行 Leanote 需要用到:
$ go install github.com/revel/cmd/revel
2.2 方法2
该方法使用 Golang 的 go get 来下载包, 这个命令会调用 git, 所以必须先安装 git。
# ubuntu 下安装 git$ sudo apt-get install git-core openssh-server openssh-client# centos 下安装git$ sudo yum install git
获取 Revel 和 Leanote:
打开终端, 以下命令会下载 Revel 和 Leanote 及依赖包, 时间可能会有点久, 请耐心等待。
$> go get github.com/revel/cmd/revel$> go get github.com/leanote/leanote/app
下载完成后,Leanote 的源码在 /data/LeaNote/gopackage/src/github.com/leanote/leanote 下。
3. 安装Mongodb
3.1 安装Mongodb
到 Mongodb 官网 下载相应系统的最新版安装包,或者从以下链接下载旧版本:
- 64位 linux Mongodb 3.0.1 下载链接(推荐): https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.1.tgz
- 64位 linux Mongodb 3.6.4 下载链接:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.4.tgz
$ cd /usr/local/src$ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.4.tgz$ tar -xzvf mongodb-linux-x86_64-3.6.4.tgz$ cd mongodb-linux-x86_64-3.6.4$ su root$ cp /usr/local/src/mongodb-linux-x86_64-3.6.4 /usr/local/software$ mv /usr/local/software/mongodb-linux-x86_64-3.6.4 /usr/local/software/mongodb-linux-3.6.4$ su steven$ vi ~/.bashrcexport PATH="/usr/local/software/mongodb-3.6.4/bin:$PATH"
3.2 测试Mongodb安装
# 先在 /data/LeaNote 下新建一个目录 mongodata 存放 Mongodb 数据:$ mkdir -p /data/LeaNote/mongodb/data# 用以下命令启动 mongod:$ mongod --dbpath /data/LeaNote/mongodb/data# 这时 mongod 已经启动,重新打开一个终端, 键入 mongo 进入交互程序:$> mongo> show dbsadmin 0.000GBlocal 0.000GB
Mongodb 安装到此为止, 下面为 Mongodb 导入 Leanote 初始数据。
4. 导入初始数据
leanote 初始数据在 /data/LeaNote/gopackage/src/github.com/leanote/leanote/mongodb_backup/leanote_install_data 中。
打开终端, 输入以下命令导入数据:
$ mongorestore -h localhost -d leanote --dir /data/LeaNote/gopackage/src/github.com/leanote/leanote/mongodb_backup/leanote_install_data
现在在 mongodb 中已经新建了 leanote 数据库, 可用命令查看下 Leanote 有多少张”表”:
$ mongo> show dbs # 查看数据库admin 0.000GBconfig 0.000GBleanote 0.001GBlocal 0.000GB> use leanote # 切换到 leanoteswitched to db leanote> show collections # 查看表albumsattachsblog_comments....fileshas_share_notesnote_content_historiesnote_contents....
初始数据的 users 表中已有 2 个用户:
user1 username: admin, password: abc123 (管理员, 只有该用户才有权管理后台, 请及时修改密码)user2 username: demo@leanote.com, password: demo@leanote.com (仅供体验使用)
5. 配置Leanote
Leanote 的配置存储在文件 /data/LeaNote/gopackage/src/github.com/leanote/leanote/conf/app.conf 中。
请务必修改 app.secret 一项, 在若干个随机位置处,将字符修改成一个其他的值, 否则会有安全隐患!
其它的配置可暂时保持不变, 若需要配置数据库信息, 请参照 Leanote 问题汇总。
6. 运行Leanote
注意: 在此之前请确保 Mongodb 已在运行!
新开一个窗口, 运行:
$ revel run github.com/leanote/leanote# leanote 切入后台运行$ nohup revel run github.com/leanote/leanote 2>&1 &
恭喜你, 打开浏览器输入: http://localhost:9000 体验Leanote吧!
7. Leanote 其他配置
按照本教程启动 Mongodb 是没有权限控制的, 如果你的 Leanote 服务器暴露在外网, 任何人都可以访问你的 Mongodb 并修改, 所以这是极其危险的!!!!!!!!!!! 请务必为 Mongodb 添加用户名和密码并以 auth 启动,方法如下。
7.1 为 mongodb 数据库添加用户
像 mysql 一样有 root 用户, mongodb 初始是没有用户的,这样很不安全,所以要为 leanote 数据库新建一个用户来连接 leanote 数据库(注意,并不是为 leanote 的表 users 里新建用户, 而是新建一个连接 leanote 数据库的用户,类似 mysql 的 root 用户).
mognodb v2 与 v3 创建用户命令有所不同。
mongodb v2 创建用户如下:
# 首先切换到leanote数据库下> use leanote;# 添加一个用户root, 密码是abc123> db.addUser("root", "abc123");{"_id" : ObjectId("53688d1950cc1813efb9564c"),"user" : "root","readOnly" : false,"pwd" : "e014bfea4a9c3c27ab34e50bd1ef0955"}# 测试下是否正确> db.auth("root", "abc123");1 # 返回1表示正确
mongodb v3 创建用户如下:
# 首先切换到leanote数据库下> use leanote;# 添加一个用户root, 密码是abc123> db.createUser({user: 'root',pwd: 'abc123',roles: [{role: 'dbOwner', db: 'leanote'}]});# 测试下是否正确> db.auth("root", "abc123");1 # 返回1表示正确
用户添加好后重新运行下 mongodb,并开启权限验证. 在 mongod 的终端按 ctrl+c 即可退出 mongodb。
启动 mongodb:
$ mongod --dbpath /data/LeaNote/mongodb/data --auth
还要修改配置文件 : (修改 leanote/conf/app.conf)
db.host=localhostdb.port=27017db.dbname=leanote # requireddb.username=root # if not exists, please leave blankdb.password=abc123 # if not exists, please leave blank
7.2 Mongodb设置后台运行
Mongodb 安装完成后,我们通常通过 mongod --dbpath /usr/local/mongo/data 让 mongodb 启动,但是我们关闭 shell,mongodb 就停止运行了。如果想在后台运行,启动时只需添加 —fork 函数即可。可以在日志路径后面添加 —logappend,防止日志被删除。
$ mongod --fork --dbpath=/data/LeaNote/mongodb/data --logpath=/data/LeaNote/mongodb/logs/mongodb.log --logappend

7.3 Mongodb设置开机启动
当我们把服务器关闭,重启之后,发现 mongodb 又停止了,有没有开机就启动的方法呢?我们把上面代码放到 /etc/rc.local,中,就可以了。
具体操作步骤:
# 在 /etc/rc.local 添加以下代码/usr/local/software/mongodb-3.6.4/bin/mongod --fork --dbpath=/data/LeaNote/mongodb/data --logpath=/data/LeaNote/mongodb/logs/mongodb.log --logappend
下次重启就可以直接运行 mongodb 了!
7.4 为Leanote配置https
1. 生成 SSL 证书
可以在网上买一个, 或者自己做一个。这里有一个 shell 脚本可以自动生成证书: (cert.sh)
#!/bin/sh# create self-signed server certificate:read -p "Enter your domain [www.example.com]: " DOMAINecho "Create server key..."openssl genrsa -des3 -out $DOMAIN.key 1024echo "Create server certificate signing request..."SUBJECT="/C=US/ST=Mars/L=iTranswarp/O=iTranswarp/OU=iTranswarp/CN=$DOMAIN"openssl req -new -subj $SUBJECT -key $DOMAIN.key -out $DOMAIN.csrecho "Remove password..."mv $DOMAIN.key $DOMAIN.origin.keyopenssl rsa -in $DOMAIN.origin.key -out $DOMAIN.keyecho "Sign SSL certificate..."openssl x509 -req -days 3650 -in $DOMAIN.csr -signkey $DOMAIN.key -out $DOMAIN.crt
假设得到了两个文件: a.com.crt, a.com.key。
2. 配置Nginx
假设 Leanote 运行的端口是 9000, 域名为 a.com, 那么nginx.conf 可以配置如下:
upstream leanote_app {server localhost:9000;}server {listen 80;listen 443;server_name note.shenweiyan.cn;ssl on;client_max_body_size 30M;index index.html index.htm index.php default.html default.htm default.php;ssl_certificate ../cert/leanote/note.shenweiyan.cn.crt;ssl_certificate_key ../cert/leanote/note.shenweiyan.cn.key;ssl_session_timeout 5m;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;#rewrite ^/(.*) https://note.shenweiyan.cn/$1 permanent;location / {proxy_pass http://leanote_app;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}access_log logs/leanote_access.log;error_log logs/leanote_error.log;}
最后,执行 nginx -s reload 重启 nginx 服务,打开 https://note.shenweiyan.cn 即可看到 leanote 的 index 主页。
7.5 Leanote配置开机启动
虽然通过命令让 Leanote 进程进入后台运行了,但是一旦重启还是要手动开启,略麻烦,这时可以自己新建 .sh 脚本文件,将命令写入脚本文件里,然后在 rc.local 配置文件中运行 .sh 脚本文件就能实现开机启动 Leanote 服务端。
可以参考我的 *.sh 写法:
#!/bin/bashmongod --fork --dbpath=/data/LeaNote/mongodb/data --logpath=/data/LeaNote/mongodb/logs/mongodb.log --logappendnohup revel run github.com/leanote/leanote 2>&1 &sstr=$(echo -e $str)echo "$sstr"
若脚本文件命名为 run.sh,且存放在 /root/gopackage 目录里,可以编辑 rc.local 配置文件 /etc/rc.local,加入下面的命令然后保存即可:
source /etc/profile/root/gopackage/run.sh
