Linux CentOS 7 搭建自己的Leanote云笔记

2022-12-07 17:32:35 浏览数 (2)

1. 介绍

主要介绍,如何在我们自己的个人云服务器中搭建Leanote云笔记。我的服务器为CentOS环境的,所以下面的操作主要是CentOS的。

其他环境下也是大同小异。只是部分配置指令会有区别。

Leanote笔记(蚂蚁笔记)是一个在线云笔记应用。也是一个开源系统。

开源网址为:https://github.com/leanote

官网地址为:https://leanote.com/

我们搭建完毕后台服务器之后,前端可以使用官网提供的客户端,只需要将客户端访问的服务器地址修改为我们自己搭建的服务器。

客户端支持:网页,手机App,微信版等

2. 搭建MongoDB

Leanote环境搭建需要配置不少支持软件。下面将会按照从无到有,一步一步的介绍实现步骤。

2.1 安装MongoDB

MongoDB是一个基于分布式文件存储的高性能数据库。它支持的数据结构非常松散是类似于json和bson格式,因此可以存储比较复杂的数据类型。

我们的云笔记内容就刚好可以存储在该数据库中。

  1. 配置MongoDB的yum源地址:
代码语言:javascript复制
[root@iZuf6c40gmjvniytagm3upZ ~]# vim /etc/yum.repos.d/mongodb-org.repo
  1. 在打开的New File文件中,配置如下内容:
代码语言:javascript复制
[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验证
  1. 更新yum数据: 让我们配置的repo文件生效。 如下所述,新增了mongodb-org 配置。
代码语言:javascript复制
[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                
  1. 下载Mongodb 输入命令:yum install mongodb-org -y
代码语言:javascript复制
[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服务的运行状态。

代码语言:javascript复制
# 启动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

代码语言:javascript复制
[root@iZuf6c40gmjvniytagm3upZ ~]# tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz
leanote/
leanote/app/
leanote/bin/
...

解押完毕后,我们就会在当前目录下看到一个leanote文件夹。

代码语言:javascript复制
[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 配置文件 。

代码语言:javascript复制
[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;
            }
}

到这里,就配置完毕了。

0 人点赞