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

2023-01-18 Nginx数据库SQL云数据库 MongoDBMongoDB

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 文件:

root@izuf6c40gmjvniytagm3upz ~]# vim /etc/mongod.conf 

将net标签下的内容进行修改为:

net:
  port: 27017    
  bindip: 0.0.0.0 

然后保存配置文件。

我们在这一步可以知道mongodb的端口是27017。如果不想使用这个端口,可以直接在这里进行修改。

2.3 启动mongodb

我们安装mongodb的时候,安装包自动会创建一个mongod.service配置文件。所以我们可以直接使用systemctl start mongod

示例:

[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版)

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修改该文件就可以了。

[root@izuf6c40gmjvniytagm3upz ~]# ls
leanote  leanote-linux-amd64-v2.6.1.bin.tar.gz
[root@izuf6c40gmjvniytagm3upz ~]# vim leanote/conf/app.conf 

在打开的文件中找到:app.secret选项。

# 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
#-----------------------

修改成任意字符就可以:

# you must change it !! about security!!
app.secret=123qweasdzxcqweasdzxc

然后执行保存操作即可。

该配置文件也决定了leanote服务的启动端口哦。默认配置端口为9000。如果想修改们可以通过该文件进行修改

3.3 初始化leanote数据库

配置完毕后,就可以开始配置数据库连接和初始化了。

示例如下:

[root@izuf6c40gmjvniytagm3upz ~]# mongorestore -h localhost -d leanote --dir /root/leanote/mongodb_backup/leanote_install_data/

注意,我的leanote目录就在root文件夹下,所以这么配置的。

大家要根据实际的leanote目录所在位置,进行修改--dir 配置后的路径哦。

当日志输出 done的时候,就代表数据库已经初始化结束了。

3.4 启动leanote服务

常见的启动方法会让我们通过下面这个代码执行启动:

[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的自启动脚本。

[root@izuf6c40gmjvniytagm3upz ~]#vim /etc/rc.d/init.d/leanote.sh

然后在该文件中添加以下内容:

#! /bin/bash
# chkconfig: 2345 90 10

cd /root/leanote/bin/
bash run.sh

上面的命令就是,切换文件到root/leanote/bin文件夹,然后执行该文件夹下的run.sh脚本。我们要根据自己的leanote安装目录进行修改路径,不要直接参考我的进行配置哦。

然后给文件配置访问权限:

[root@izuf66egabu9wj7z7x4b2yz ~]#chmod +x /etc/rc.d/init.d/leanote.sh

将服务脚本添加到系统启动队列:重启linux服务后,leanote将会自动运行。如果我们不想重启,那么

[root@izuf66egabu9wj7z7x4b2yz init.d]#chkconfig --add leanote.sh
[root@izuf66egabu9wj7z7x4b2yz init.d]#chkconfig leanote.sh on 

之后,我们可以通过 以下命令启动和关闭leanote服务了:

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

然后在打开的文件中,添加:

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;
            }
}

到这里,就配置完毕了。

上一篇:.NET Core3.1 Dotnetty实战第一章

下一篇:.NET Core3.1 Dotnetty实战第二章