Ubuntu下部署leanote

随着自己码农生涯的深入,知识的不断积累,高效并且稳妥地管理自己的知识变得非常急迫,在各种公众笔记里面找了一大圈,发现并没有什么特别合适的(不是太贵就是有广告),偶然间发现leanote,而且还是喜闻乐见的开源产物,正好自己在腾讯云买的学生优惠服务器都没干过什么正事,正好就可以拿来部署私有的云笔记。

部署准备

首先,我的服务器是腾讯云买的云服务器,安装Ubuntu Server 14.04.1 LTS 64位系统,同时使用OneinStack安装了Nginx,Nginx是进行端口转发用的,毕竟没有那么多80端口啊。网上找了很多教程,但是安装过程不是很顺利,这里再写写我的经验。

部署过程概览

  1. 下载二进制文件
  2. 安装Mongodb
  3. 更改配置文件
  4. 启动leanote
  5. 设置端口转发

下载二进制文件

这里直接去官网下载Linux的二进制文件

> wget http://nchc.dl.sourceforge.net/project/leanote-bin/2.0/leanote-linux-amd64-v2.0.bin.tar.gz

然后将其解压

> tar -xzvf leanote-linux-amd64.v2.0.bin.tar.gz

接着把它放到你想放的地方,我喜欢把所有的软件都放到/usr/local/下,虽然这样可能会导致各种权限问题,大家可以按自己的习惯来

> sudo mv leanote  /usr/local/

安装Mongodb

网上很多教程都说这一步需要去官网下载最新的Mongodb来安装,但是这一步一直有报错,无法通过,最后我直接使用了apt-get来安装Mongodb,各位大神可以自行去研究

> sudo apt install mongodb-server

然后尝试启动Mongodb,其需要一个存放数据的路径

> mkdir data
> mongod --dbpath /data/mongodb/data

这一步之后,会出现一大堆东西,类似

-07-02T02:14:19.474-0400 [initandlisten] MongoDB starting : pid=5073 port=27017 dbpath=/data/mongodb/data 64-bit host=localhost
…………
-07-02T02:14:19.599-0400 [initandlisten] waiting for connections on port 2701

出现这个运行端口和等待连接之后,就可以了,此时Mongodb就已经安装成功了,我们需要导入leanote的原始数据,其实就是创建表之类的,这里我们需要先重新开一个终端,因为Mongodb已经在运行了,直接复制一个SSH通道就可以了,然后开始导入数据,数据存放在?/leanote/mongodb_backup/leanote_install_data/

> mongorestore -h localhost -d leanote --dir /usr/local/leanote/mongodb_backup/leanote_install_data/

这样,整个leanote的数据库就已经配置好了,官方还建议我们为leanote的数据库创建一个用户

> mongo
> show dbs;

这样,我们应该能够看到一个leanote的数据库,切换到里面,并且添加用户

> use leanote;
> db.createUser({
    user: 'root',
    pwd: 'abc123',
    roles: [{role: 'dbOwner', db: 'leanote'}]
});
> db.auth("root", "abc123");

最后一行是验证是否正确,如果正确了,会返回1。另外直接使用exit;命令可以推出Mongodb的shell。接下来我们要开启权限验证,首先在运行Mongodb的会话按下Ctrl+C结束其进程,然后重启之

> mongod --dbpath /home/user1/data --auth

修改配置文件

我们回到另外的会话,开始修改配置文件

> sudo vim /usr/local/leanote/conf/app.conf

如果你在当前用户权限的文件夹下,不需要root权限即可修改,需要修改的项如下

site.url=leanote.yangmqglobe.cn #我们要配置外网访问,需要修改
db.username=root #我们创建了用户权限,需要添加
db.password=abc123 #数据库的密码
app.secret=abc123 #这行官方称为了安全必须修改,想改啥改啥

这样整个leanote的配置就完成了

启动leanote

运行?/leanote/bin/run.sh即可启动leanote

>sh /usr/local/leanot/bin/run.sh

此时,leanote就已经启动了,和Mongodb类似,我们暂时不能关闭这个进程,因为我是远程连接云服务器,所以,我不能用浏览器去试着访问,而外网也并不允许访问(我开启了防火墙),我复制了一个SSH通道,用wget试了一下

> wget localhost:9000

发现确实能够访问,下载到了一个html文件,这就表明已经可以访问了。

设置端口转发

因为我们总不能什么都使用80端口,那么我们可以借助Nginx进行端口的转发,我用leanote.yangmqglobe.cn这个二级域名来访问leanote,所以我添加一个虚拟服务器如下

    server {
        listen 80;
        server_name leanote.yangmqglobe.cn;
        access_log off;

        location / {
            proxy_pass http://127.0.0.1:9000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Via "nginx";
         }
    }

大致的意思是,来自leanote.yangmqglobe.cn的访问全部转发至9000端口处理,同时添加一些头信息。接下来检查一下

> nginx -t

如果没有报错,说明配置信息无误(当时我使用的并非Nginx的默认启动用户,所以还报了一些权限问题的错误,大家要仔细鉴别一下哦!)。然后重启Nginx服务

> service nginx reload

这里可能需要用Nginx服务的专用用户去操作,大家按照自己的配置来。接着我们外网浏览器访问leanote.yangmqglobe.cn就能看到,整个leanote已经能够使用了。最后,我们还需要做一个工作,因为我们的leanote是在前台运行的,如果我们关闭SSH链接,再访问就会返回503错误,因为leanote的进程也会随着SSH进程被杀死而被杀死。先将前台运行的leanote结束,简单的我们将leanote丢到后台

> nohup run.sh >/dev/null 2>&1

这样我们把leanote扔进后台运行同时忽略他的输出,即使我们关闭SSH连接也能继续使用服务了!其实这样也是可以的,但是为了防止该进程被杀死,推介使用进程守护工具supervisor,首先安装

sudo apt install supervisor

然后编辑配置文件,创建文件/etc/supervisor/conf.d/leanote.conf,内容如下:

[program:leanote]
command=sh /usr/local/leanote/bin/run.sh
autostart=true
stdout_logfile=/dev/null

意思是创建名字叫leanote的程序,其运行命令,是否自动启动,标准输出的文件位置。现在启动supervisor即可

sudo /etc/init.d/supervisor start

如果想查看一下leanote进程的状况

> sudo supervisorctl status leanote

尽情享受私有的笔记服务吧!

你可能感兴趣的:(Ubuntu下部署leanote)