1. 介绍
主要介绍,如何在我们自己的个人云服务器中搭建Leanote云笔记。我的服务器为CentOS环境的,所以下面的操作主要是CentOS的。
其他环境下也是大同小异。只是部分配置指令会有区别。
Leanote笔记(蚂蚁笔记)是一个在线云笔记应用。也是一个开源系统。
开源网址为:https://github.com/leanote
官网地址为:https://leanote.com/
我们搭建完毕后台服务器之后,前端可以使用官网提供的客户端,只需要将客户端访问的服务器地址修改为我们自己搭建的服务器。
客户端支持:网页,手机App,微信版等
2. 搭建MongoDB
Leanote环境搭建需要配置不少支持软件。下面将会按照从无到有,一步一步的介绍实现步骤。
2.1 安装MongoDB
MongoDB是一个基于分布式文件存储的高性能数据库。它支持的数据结构非常松散是类似于json和bson格式,因此可以存储比较复杂的数据类型。
我们的云笔记内容就刚好可以存储在该数据库中。
- 配置MongoDB的yum源地址:
[root@iZuf6c40gmjvniytagm3upZ ~]# vim /etc/yum.repos.d/mongodb-org.repo
- 在打开的New File文件中,配置如下内容:
[mongodb-org]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
如果指令使用不熟练,可以创建一个mongodb-org.repo 文件,然后通过xftp等软件,推送到服务器的
yum.repos.d
文件夹中。
repo文件中的字段介绍:
- name #名称
- baseurl #获得下载的路径
- gpkcheck=1 #表示对从这个源下载的rpm包进行校验;
- enable=1 #表示启用这个源。
- gpgkey #gpg验证
- 更新yum数据: 让我们配置的repo文件生效。 如下所述,新增了mongodb-org 配置。
[root@iZuf6c40gmjvniytagm3upZ ~]# yum list
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
extras | 2.9 kB 00:00:00
mongodb-org
- 下载Mongodb 输入命令:
yum install mongodb-org -y
。
[root@iZuf6c40gmjvniytagm3upZ ~]# yum install mongodb-org -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package mongodb-org.x86_64 0:3.6.23-1.el7 will be installed
--> Processing Dependency: mongodb-org-mongos = 3.6.23 for package: mongodb-org-3.6.23-1.el7.x86_64
...
...
...
...
Installed:
mongodb-org.x86_64 0:3.6.23-1.el7
Dependency Installed:
mongodb-org-mongos.x86_64 0:3.6.23-1.el7 mongodb-org-server.x86_64 0:3.6.23-1.el7 mongodb-org-shell.x86_64 0:3.6.23-1.el7
mongodb-org-tools.x86_64 0:3.6.23-1.el7
Complete!
[root@iZuf6c40gmjvniytagm3upZ ~]#
直到最后输出 Complete就代表安装成功了。 安装步骤很简单,下面就开始配置MongoDB数据库。
2.2 配置MongoDB
打开mongod.conf 文件:
代码语言:javascript复制root@iZuf6c40gmjvniytagm3upZ ~]# vim /etc/mongod.conf
将net标签下的内容进行修改为:
代码语言:javascript复制net:
port: 27017
bindIp: 0.0.0.0
然后保存配置文件。
我们在这一步可以知道MongoDB的端口是27017
。如果不想使用这个端口,可以直接在这里进行修改。
2.3 启动MongoDB
我们安装MongoDB的时候,安装包自动会创建一个mongod.service配置文件。所以我们可以直接使用systemctl start mongod
。
示例:
代码语言:javascript复制[root@iZuf6c40gmjvniytagm3upZ ~]# systemctl start mongod
[root@iZuf6c40gmjvniytagm3upZ ~]# systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-10-21 16:40:46 CST; 19s ago
Docs: https://docs.mongodb.org/manual
Process: 2033 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
Process: 2030 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 2027 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 2025 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
Main PID: 2036 (mongod)
Tasks: 24
Memory: 74.3M
CGroup: /system.slice/mongod.service
└─2036 /usr/bin/mongod -f /etc/mongod.conf
Oct 21 16:40:45 iZuf6c40gmjvniytagm3upZ systemd[1]: Starting MongoDB Database Server...
Oct 21 16:40:45 iZuf6c40gmjvniytagm3upZ mongod[2033]: about to fork child process, waiting until server is ready for connections.
Oct 21 16:40:45 iZuf6c40gmjvniytagm3upZ mongod[2033]: forked process: 2036
Oct 21 16:40:46 iZuf6c40gmjvniytagm3upZ systemd[1]: Started MongoDB Database Server.
[root@iZuf6c40gmjvniytagm3upZ ~]#
systemctl status mongod
是用来查询mongod服务的运行状态。
# 启动mongod服务
systemctl start mongod
# 停止mongod服务
systemctl stop mongod
# 重启mongod服务
systemctl restart mongod
#查看mongod服务当前状态
systemctl status mongod
#设置mongod服务开机自启动
#停止mongod服务开机自启动
systemctl disable mongod
然后,我们可以给MongoDB配置为开机自启动:systemctl enable mongod
2.4 配置MongoDb 用户
mongodb默认没有用户的,如果为了安全性,大家可以给自己的mongodb添加一个用户。
但是我们如果只是在自己的服务器上配置,不创建用户也没有关系。
如果你创建了用户名和密码。那么在Leanote的app.conf配置文件中要添加上用户名和密码哦。否则我们的云笔记就访问不了服务器了。
注意:创建数据库账户的密码时,不要添加@
,#
等特殊字符。否则leanote会连接不上数据库的。
3. 搭建Leanote服务
3.1 下载Leanote
通过wget 命令下载: wget --no-check-certificate https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz
我下载的是2.6.1版本 连接下载地址界面:https://sourceforge.net/projects/leanote-bin/
(PS:现在最新版本就是v2.6.1版)
代码语言:javascript复制t@iZuf6c40gmjvniytagm3upZ ~]# wget --no-check-certificate https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz
--2022-10-21 16:45:27-- https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz
Resolving nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)... 140.110.96.69, 2001:e10:ffff:1f02::17
Connecting to nchc.dl.sourceforge.net (nchc.dl.sourceforge.net)|140.110.96.69|:443... connected.
WARNING: cannot verify nchc.dl.sourceforge.net's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
Issued certificate has expired.
HTTP request sent, awaiting response... 200 OK
Length: 21438265 (20M) [application/x-gzip]
Saving to: ‘leanote-linux-amd64-v2.6.1.bin.tar.gz’
100%[============================================================================================>] 21,438,265 5.52MB/s in 4.7s
2022-10-21 16:45:32 (4.33 MB/s) - ‘leanote-linux-amd64-v2.6.1.bin.tar.gz’ saved [21438265/21438265]
[root@iZuf6c40gmjvniytagm3upZ ~]# ls
leanote-linux-amd64-v2.6.1.bin.tar.gz
[root@iZuf6c40gmjvniytagm3upZ ~]#
我们就会在root文件夹下,看到我们刚才下载的leanote-linux-amd64-v2.6.1.bin.tar.gz
压缩文件。
执行解压缩命令:tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz
[root@iZuf6c40gmjvniytagm3upZ ~]# tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz
leanote/
leanote/app/
leanote/bin/
...
解押完毕后,我们就会在当前目录下看到一个leanote
文件夹。
[root@iZuf6c40gmjvniytagm3upZ ~]# ls
leanote leanote-linux-amd64-v2.6.1.bin.tar.gz
[root@iZuf6c40gmjvniytagm3upZ ~]#
3.2 修改app.conf配置
Leanote官方介绍,需要将leanote/conf/app.conf
中的app.secret
项进行修改。否则会有安全风险。
那么我们通过vim修改该文件就可以了。
代码语言:javascript复制[root@iZuf6c40gmjvniytagm3upZ ~]# ls
leanote leanote-linux-amd64-v2.6.1.bin.tar.gz
[root@iZuf6c40gmjvniytagm3upZ ~]# vim leanote/conf/app.conf
在打开的文件中找到:app.secret选项。
代码语言:javascript复制# mongdb
db.host=127.0.0.1
db.port=27017
db.dbname=leanote # required
db.username= # if not exists, please leave it blank
db.password= # if not exists, please leave it blank
# 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=V85ZzBeTnzpsHyjQX4zukbQ8qqtju9y2aDM55VWxAH9Qop19poekx3xkcDVvrD0y #
#--------------------------------
# revel config
# for dev
#-----------------------
修改成任意字符就可以:
代码语言:javascript复制# You Must Change It !! About Security!!
app.secret=123qweasdzxcqweasdzxc
然后执行保存操作即可。
该配置文件也决定了Leanote服务的启动端口哦。默认配置端口为9000。如果想修改们可以通过该文件进行修改
3.3 初始化Leanote数据库
配置完毕后,就可以开始配置数据库连接和初始化了。
示例如下:
代码语言:javascript复制[root@iZuf6c40gmjvniytagm3upZ ~]# mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/
注意,我的leanote目录就在root文件夹下,所以这么配置的。
大家要根据实际的leanote目录所在位置,进行修改--dir
配置后的路径哦。
当日志输出 done的时候,就代表数据库已经初始化结束了。
3.4 启动Leanote服务
常见的启动方法会让我们通过下面这个代码执行启动:
代码语言:javascript复制[root@iZuf6c40gmjvniytagm3upZ ~]# nohup bash /root/leanote/bin/run.sh > /root/leanote/run.log 2>&1 &
然后系统会打印:[1] 2667
到这里,我们就配置启动完毕了。可以通过ip 端口访问Leanote服务了。
(ps: nohup 指令标注了 。我们如果关闭了窗口,leanote也一样在后台运行 如果要关闭,按Ctrl C 就可以了)。
我们可以在cd /etc/rc.d/init.d 文件中创建leanote的自启动脚本。
代码语言:javascript复制[root@iZuf6c40gmjvniytagm3upZ ~]#vim /etc/rc.d/init.d/leanote.sh
然后在该文件中添加以下内容:
代码语言:javascript复制#! /bin/bash
# chkconfig: 2345 90 10
cd /root/leanote/bin/
bash run.sh
上面的命令就是,切换文件到root/leanote/bin
文件夹,然后执行该文件夹下的run.sh
脚本。我们要根据自己的leanote安装目录进行修改路径,不要直接参考我的进行配置哦。
然后给文件配置访问权限:
代码语言:javascript复制[root@iZuf66egabu9wj7z7x4b2yZ ~]#chmod x /etc/rc.d/init.d/leanote.sh
将服务脚本添加到系统启动队列:重启Linux服务后,leanote将会自动运行。如果我们不想重启,那么
代码语言:javascript复制[root@iZuf66egabu9wj7z7x4b2yZ init.d]#chkconfig --add leanote.sh
[root@iZuf66egabu9wj7z7x4b2yZ init.d]#chkconfig leanote.sh on
之后,我们可以通过 以下命令启动和关闭leanote服务了:
代码语言:javascript复制service leanote.sh start #启动服务
service leanote.sh stop #停止服务
service leanote.sh restart #重启服务
(PS:我自己的云服务器,从创建至今,就没有重启过。各种服务配置的自启动功能就没有来得及生效过哦)
4. 访问云笔记
配置完毕后,默认通过http://服务器ip:9000
就可以访问了。
默认管理员账户为:admin , 密码为:abc123。当我们登录成功后界面效果如下:
后面我们就可以放心操作,添加笔记了。
5. 配置nginx 反向代理
如果你没有域名。没有配置nginx,那么这一步可以不用了解了。我们如果有域名和nginx代理服务。
以下内容基于nginx 1.22版本
进行的配置。老版本可能有部分字段需要调整(ssl配置需要修改)
那么就可以在/etc/nginx/conf.d
文件夹下,添加leanote.conf
配置文件 。
[root@iZuf6c40gmjvniytagm3upZ ~]# vim /etc/nginx/conf.d/leanote.conf
然后在打开的文件中,添加:
代码语言:javascript复制server {
listen 80;
server_tokens off;
server_name 你自己的访问域名地址;
# 重定向,将http请求改为https请求
return 301 https://$server_name$request_uri;
client_max_body_size 20000m;
}
server {
listen 443 ssl;
server_tokens off;
ssl_protocols TLSv1.2 TLSv1.3;
keepalive_timeout 300;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_certificate 你的SSL证书文件.pem;
ssl_certificate_key 你的SSL证书签名文件.key;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;
server_name 写上你的域名地址;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:9000;
}
}
到这里,就配置完毕了。