Ubuntu下部署leanote
随着自己码农生涯的深入,知识的不断积累,高效并且稳妥地管理自己的知识变得非常急迫,在各种公众笔记里面找了一大圈,发现并没有什么特别合适的(不是太贵就是有广告),偶然间发现leanote,而且还是喜闻乐见的开源产物,正好自己在腾讯云买的学生优惠服务器都没干过什么正事,正好就可以拿来部署私有的云笔记。
部署准备
首先,我的服务器是腾讯云买的云服务器,安装Ubuntu Server 14.04.1 LTS 64位系统,同时使用OneinStack安装了Nginx,Nginx是进行端口转发用的,毕竟没有那么多80端口啊。网上找了很多教程,但是安装过程不是很顺利,这里再写写我的经验。
部署过程概览
- 下载二进制文件
- 安装Mongodb
- 更改配置文件
- 启动leanote
- 设置端口转发
下载二进制文件
这里直接去官网下载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