背景介绍

Leanote 是一款类似于印象笔记的开源的笔记项目,具体介绍请访问 Github 该项目。

在 Github 上该项目有着详细的中文版的介绍以及安装步骤,但是由于 Linux 不熟练,我还是遇到了如下问题:

  1. 虽然根据说明可以成功部署并运行,但是一旦断开会话或关闭终端,mongodb 与 leanote 都会停止工作。
  2. 如何用 fork 命令使得 mongodb 在后台运行。
  3. 如何使用 nohup 命令使得 run.sh 脚本在后台运行。
  4. 如何编写一个 shell 脚本来实现开机自启、一键启动、停止。

本文主要目的是总结在 Linux 环境下工作的经验,详细记录刚掌握的知识点。

mongodb 与非关系型数据库

mongodb 是非关系型数据库的一种,与 MySql 等关系型数据库相比,它的特点有:

  1. 高并发,读写能力强
  2. 弱化数据结构一致性,使用更加灵活
  3. 有良好的拓展性(mysql 等很难横向拓展)
  4. 通用性差 , 没有 sql 语句那样通用的语句
  5. 操作灵活导致容易出错和混乱
  6. 没有外键关联等复杂的操作

总的来说,关系型数据库(mysql)适合存储结构化数据,例如:用户账号、地址等信息;而非关系型数据库适合存储非结构化的数据,例如:文章、评论等。更加具体的区别与用法不做展开。

总的来说,mongodb 上手轻松,使用简单,而本文用到的指令仅仅三四个。

mongodb 的安装与配置

首先去 mongodb官网 下载压缩包,或者点击下载mongodb-linux-x86_64-3.0.1.tgz

下载完成后,只需做两步工作:解压与配置环境变量

$> tar -xzvf mongodb-linux-x86_64-3.0.1.tgz/

为了快速使用 mongodb 命令, 可以配置环境变量。编辑 ~/.profile 或 /etc/profile 文件, 将 mongodb/bin 路径加入即可:

$> sudo vim /etc/profile

在 /etc/profile 中添加以下行,注意把用户名(user1)和相应的文件目录名(mongodb-linux-x86_64-3.0.1)替换成自己系统中的名称:

export PATH=$PATH:/home/user1/mongodb-linux-x86_64-3.0.1/bin

保存修改后,在终端运行以下命令使环境变量生效:

$> source /etc/profile
测试 mongodb 安装

先在 /home/user1 下新建一个目录 data 存放 mongodb 数据:

mkdir /home/user1/data

用以下命令启动 mongodb:

mongod --dbpath /home/user1/data

这时 mongod 已经启动,重新打开一个终端, 键入 mongo 进入交互程序:

$> mongo
> show dbs
...数据库列表

至此 mongodb 就安装完成。

使 mongodb 和 leanote 在后台运行

由于按照 github 上的 leanote 安装说明,mongodb 和 leanote 是会随着会话和终端的关闭而停止运行,现在的目的是使它们不受会话关闭的影响,在后台运行。

我们可以时使用 nohup command >/dev/null 2>&1 & 命令来使得 mongodb 和 leanote 在后台运行。

对于 mongodb ,我们还可以配置 config 文件,通过在启动 mongod 时指定配置文件来实现后台运行,配置文件 mongodb.conf 内容如下:(路径需要自己修改)

#数据库路径
dbpath=/usr/local/mongodb/data
#日志输出文件路径
logpath=/usr/local/mongodb/logs/mongodb.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#端口号 默认为27017
port=27017
#允许远程访问
#bind_ip=0.0.0.0
#开启子进程
fork=true
#开启认证,必选先添加用户
auth=true

此时在 mongodb.conf 同一目录下执行 mongod --config mongodb.conf 即可在后台启动数据库,此时可以通过 mongo 来访问数据库。
需要注意的是,mongod 命令不会帮你创建文件夹,所以 data 以及 logs 等目录是需要创建好再填写的,否则会报错 ERROR: child process failed, exited with error number 1

小结

至此已经可以较为简便的实现 mongod 与 leanote 的后台运行,并且每次服务器重启后我们都可以通过两条命令来启动。本次实践新接触了一个非关系型数据库 mongod 以及一些 linux 命令,下面目标是可以通过编写 Shell 脚本来使得工作更加简化,例如实现开机自启等。

本文不是教程,是笔记,当然如果已经成功搭建了 leanote ,想要使其在后台运行,还是可以参考本文的。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐