我服务器本身用的是lnmp,脚本自带mongodb安装。而且是带密码权限的。
leanotemongodb的安装教程,可以参考这里:leanote安装教程。这里主要记录如何配置'mongodb'和'nginx'。开源的安装教程里给的案例是mongdb没有密码权限限制的版本。

创建数据库leanote

# mongo
> use leanote
switched to db leanote

紧接着,给数据库创建帐号:

> db.addUser('k12xuexi','123123')
2018-08-04T20:17:42.751+0800 E QUERY    [thread1] TypeError: db.addUser is not a function :
@(shell):1:1

这是报错,因为新版的mongodb不支持addUser,我们需要使用createUser,先看下相关介绍:
user文档字段介绍:

  • user字段,为新用户的名字;
  • pwd字段,用户的密码;
  • cusomData字段,为任意内容,例如可以为用户全名介绍;
  • roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
  • 在roles字段,可以指定内置角色和用户定义的角色。

Built-In Roles(内置角色):

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root

// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

  1. 内部角色:__system

PS:关于每个角色所拥有的操作权限可以点击上面的内置角色链接查看详情。
下面的代码中,需要把帐号和密码都记得改掉。

> db.createUser({user:'leanote',pwd:'mima',roles:[{role:"dbOwner",db:"leanote"},"readWrite"]})
Successfully added user: {
        "user" : "leanote",
        "roles" : [
                {
                        "role" : "dbAdmin",
                        "db" : "leanote"
                },
                "readWrite"
        ]
}

检查刚才我们添加的数据库帐号情况:

> use leanote
switched to db leanote
> db.auth('leanote','mima')
1

这里显示1,就说明帐号密码添加成功。

> db.leanote.insert({'name':'tompig'})
WriteResult({ "nInserted" : 1 })

这里我们添加了一条测试数据,因为如果没有添加数据,创建的数据库会被mongdb删除。

> show dbs
admin    0.000GB
config   0.000GB
leanote  0.000GB
local    0.000GB

按键盘ctrl+C退出mongdb,然后导入leanote的备份数据,最后的-u是刚才添加的数据库帐号,-p是数据库密码:

root@:~# mongorestore -h localhost:27017 -d leanote --dir /home/k12xuexi.com/mongodb_backup/leanote_install_data -u leanote -p mima

最终会显示一下代码(省略了很多),说明导入成功:

2018-08-04T20:27:01.905+0800    the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2018-08-04T20:27:01.905+0800    building a list of collections to restore from /home/wwwroot/k12xuexi.com/mongodb_backup/leanote_install_data dir
2018-08-04T20:27:02.647+0800    done

绑定成功后,可以根据蚂蚁笔记的官方nginx的安装教程进行安装。不过,如果服务器里有多个域名使用80端口的时候,官方给的代码就需要进行小改动了。
首先,我们先来修改nginx.conf文件:

http {
include mime.types;
default_type application/octet-stream;

upstream host.com {

    server   host:9000;

}
}

注意,这里只写了主要添加的代码,并不是整个nginx.conf文件代码。这里的端口,需要和leanoteapp.conf里设置的端口一致。另外,如果原文件里已经有mime.types代码,那么只需要在http{}中添加:

upstream  host.com  {
        server   host:9000;
  }

接着,我们来修改host.com.conf的代码。和普通的域名配置相比,千万不要指定网站文件路径。我这里使用的https,记得修改对应的域名:

server
    {
        listen  80;
        server_name  www.host.com;
        
        # 强制https
        # 如果不需要, 请注释这一行rewrite
        rewrite ^/(.*) https://host.com/$1 permanent;
        
        location / {
            proxy_pass        http://www.host.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

server {
        # listen 80;
        listen 443 ssl http2;
        ssl_certificate /usr/local/tengine/conf/ssl/host.com.crt;
        ssl_certificate_key /usr/local/tengine/conf/ssl/host.com.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 10m;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_buffer_size 1400;
        add_header Strict-Transport-Security max-age=15768000;
        ssl_stapling on;
        ssl_stapling_verify on;
        server_name host.com www.host.com;
        access_log /home/wwwlogs/host.com_nginx.log combined;
        if ($ssl_protocol = "") {
            return 301 https://$host$request_uri; 
        }
        if ($host != k12xuexi.com) {
            return 301 $scheme://host.com$request_uri;  
        }
        location / {
            proxy_pass        http://host.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

修改好后,重启nginx服务。然后启动leanote。官方文档的启动命令无法在服务器里后台运行,当我们关闭终端的时候,或者ctrl+C的时候,服务就会取消了。我们需要使用进程守护来实现服务的后台运行:

nohup ./run.sh &

这个时候,我们关掉终端的时候,leanote也依然在服务器中运行。
End.

标签: none

添加新评论