作者:冥王星 "noright0@163.com"

前言

宿舍有个树莓派2B,连接到电视机,安装OSMC系统,USB接口连接移动硬盘一块,平时用来BT下载和看电影、美剧。

OSMC是基于Debian系统的,可以通过apt-get安装软件,软件仓库中有mongodb,而leanote也有相应的用于arm的二进制包,所以把leanote安装到树莓派是可行的。

mongodb 部分

安装mongodb

sudo apt-get install mongodb

安装软件一般我都用aptitude

配置mongodb运行的用户名

OSMC系统使用的是systemd,mongodb服务启动是在这个文件配置的:/etc/systemd/system/multi-user.target.wants/mongodb.service

文件的内容如下:

[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1) [Service]
User=mongodb
ExecStart=/usr/bin/mongod --config /etc/mongodb.conf [Install]
WantedBy=multi-user.target

我们把User=mongodb改为User=osmc,使其用osmc身份运行。(只是为了方便)

运行命令使配置生效。

sudo systemctl daemon-reload

修改mongodb配置文件

从上边的启动配置文件中可以看出,mongodb启动时读取/etc/mongodb.conf作为配置文件,这个文件的内容如下:

# mongodb.conf

# Where to store the data.
dbpath=/data/db #where to log
logpath=/data/log/mongodb.log logappend=true bind_ip = 127.0.0.1
#port = 27017 # Enable journaling, http://www.mongodb.org/display/DOCS/Journaling
journal=true # Enables periodic logging of CPU utilization and I/O wait
#cpu = true # Turn on/off security. Off is currently the default
#noauth = true
#auth = true # Verbose logging output.
#verbose = true # Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true # Enable db quota management
#quota = true # Set oplogging level where n is
# 0=off (default)
# 1=W
# 2=R
# 3=both
# 7=W+some reads
#oplog = 0 # Diagnostic/debugging option
#nocursors = true # Ignore query hints
#nohints = true # Disable the HTTP interface (Defaults to localhost:27018).
#nohttpinterface = true # Turns off server-side scripting. This will result in greatly limited
# functionality
#noscripting = true # Turns off table scans. Any query that would do a table scan fails.
#notablescan = true # Disable data file preallocation.
#noprealloc = true # Specify .ns file size for new databases.
# nssize = <size> # Accout token for Mongo monitoring server.
#mms-token = <token> # Server name for Mongo monitoring server.
#mms-name = <server-name> # Ping interval for Mongo monitoring server.
#mms-interval = <seconds> # Replication Options # in replicated mongo databases, specify here whether this is a slave or master
#slave = true
#source = master.example.com
# Slave only: specify a single database to replicate
#only = master.example.com
# or
#master = true
#source = slave.example.com
# Address of a server to pair with.
#pairwith = <server:port>
# Address of arbiter server.
#arbiter = <server:port>
# Automatically resync if slave data is stale
#autoresync
# Custom size for replication operation log.
#oplogSize = <MB>
# Size limit for in-memory storage of op ids.
#opIdMem = <bytes> # SSL options
# Enable SSL on normal ports
#sslOnNormalPorts = true
# SSL Key file and password
#sslPEMKeyFile = /etc/ssl/mongodb.pem
#sslPEMKeyPassword = pass

我们只需要修改数据库文件目录和日志文件的文件名。

因为树莓派的系统安装在TF卡上,频繁读写不仅速度慢,而且容易坏卡。而我的树莓派长期连接一个移动硬盘,所有把数据库文件和日志文件放到移动硬盘也就顺理成章了。

# Where to store the data.
dbpath=/media/sea2t/srv/db #where to log
logpath=/media/sea2t/srv/log/mongodb.log

启动mongodb

# 启动命令
sudo service mongodb start
# 停止命令
sudo service mongodb stop
# 查看状态
sudo service mongodb status

leanote 部分

下载二进制安装包

从官网下载 leanote 的 for arm 的二进制文件。下载地址在这个网站:http://leanote.org/#download

https://sourceforge.net/projects/leanote-bin/files/2.0/leanote-linux-arm-v2.0.bin.tar.gz/download

解压文件

把安装包解压至移动硬盘。

/media/sea2t/srv/leanote

修改 leanote 配置文件

leanote的配置文件在这里:

/media/sea2t/srv/leanote/conf/app.conf

内容是这样的:

#------------------------
# leanote config
#------------------------ http.port=9000 site.url=http://localhost:9000 # or http://x.com:8080, http://www.xx.com:9000 # admin username
adminUsername=admin # 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=V85kbQ8qqtju9y2aDM55VWxAH9Qop19kcDVvrD0y #--------------------------------
# revel config
# for dev
#--------------------------------
app.name=leanote
http.addr=
http.ssl=false
cookie.httponly=false
cookie.prefix=LEANOTE
cookie.domain= # for share cookie with sub-domain
cookie.secure=false
format.date=2006-01-02
format.datetime=2006-01-02 15:04:05 # 必须这样配置
results.chunked=false log.trace.prefix = "TRACE "
log.info.prefix = "INFO "
log.warn.prefix = "WARN "
log.error.prefix = "ERROR " # The default language of this application.
i18n.default_language=en-us module.static=github.com/revel/modules/static [dev]
mode.dev=true
results.pretty=true
watch=true module.testrunner = # github.com/revel/modules/testrunner log.trace.output = stderr
log.info.output = stderr
log.warn.output = stderr
log.error.output = stderr [prod]
mode.dev=false
results.pretty=false
watch=false module.testrunner = log.trace.output = off
log.info.output = off
log.warn.output = %(app.name)s.log
log.error.output = %(app.name)s.log

我们需要修改的部分有:http.port,site.url,app.secret,其他暂时不需要修改。

需要注意的是site.url,这个是你正文中加在图片等附件前边的url部分,如果和你访问网站的url不同,就不能在网站中看到图片等附件。切切!

设置 leanote 的启动服务

我们把 mongodb.service 复制一下,修改为启动 leanote

sudo cp /etc/systemd/system/multi-user.target.wants/mongodb.service /etc/systemd/system/multi-user.target.wants/leanote.service
[Unit]
Description=Leanote, Not Just A Notepad! [Service]
User=osmc
ExecStart=/media/sea2t/srv/leanote/bin/run.sh [Install]
WantedBy=multi-user.target

运行命令使配置生效

sudo systemctl daemon-reload

初始化数据库

运行这个命令初始化数据库(请确认数据库已启动)

mongorestore -h localhost -d leanote --directoryperdb /media/sea2t/srv/leanote/mongodb_backup/leanote_install_data/

启动 leanote

# 启动 leanote
sudo service leanote start
# 停止 leanote
sudo service leanote stop
# 查看状态
sudo service leanote status

备份

一个是数据库文件,备份这个目录

/media/sea2t/srv/db

一个是内容图片附件,备份这个目录

/media/sea2t/srv/leanote/files

一个是leanote配置文件

/media/sea2t/srv/leanote/conf/app.conf

存在的问题

由于 /media/sea2t是通过usb接口连接到系统,系统启动后自动挂载的,所以mongodbleanote启动时/media/sea2t还没挂载上,两个服务会启动失败,需要手动启动一下。

解决办法:写启动脚本,启动前先等待移动硬盘挂载。

/home/osmc/start_mongodb.sh

#!/bin/bash

while [ ! -f "/media/sea2t/srv/db/local.0" ]; do
echo "=> Waiting for sea2t to be mounted"
sleep 5
done /usr/bin/mongod --config /etc/mongodb.conf

/home/osmc/start_leanote.sh

#!/bin/bash

while [ ! -f "/media/sea2t/srv/leanote/bin/run.sh" ]; do
echo "=> Waiting for sea2t to be mounted"
sleep 5
done /media/sea2t/srv/leanote/bin/run.sh

/etc/systemd/system/multi-user.target.wants/mongodb.service

[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1) [Service]
User=osmc
ExecStart=/home/osmc/start_mongodb.sh
Restart=always
RestartSec=30 [Install]
WantedBy=multi-user.target

/etc/systemd/system/multi-user.target.wants/leanote.service

[Unit]
Description=Leanote, Not Just A Notepad! [Service]
User=osmc
ExecStart=/home/osmc/start_leanote.sh
Restart=always
RestartSec=30 [Install]
WantedBy=multi-user.target

在树莓派上安装leanote的更多相关文章

  1. 在(Raspberry Pi)树莓派上安装NodeJS

    本文主讲如何在树莓派3B上安装node.js 环境描述1. 树莓派安装了`2016-11-25-raspbian-jessie-lite`(PS:在此版本的镜像中,默认禁用了ssh,在烧录好镜像之后, ...

  2. 在树莓派上安装Theano

    “查遍全网都没人成功在树莓派安装Theano,这是什么样的感觉?” ——写在开头 在这里必须先说一下,由于安装过程中的坑太多了,遇到的问题层出不穷,所以我这里只能记录我安装过程中的印象深刻的问题,如果 ...

  3. opencv2.4.9在ubuntu(树莓派)上安装

    参考原文:https://my.oschina.net/u/1757926/blog/293976 1. 先从sourceforge上下载OpenCV的源码 http://jaist.dl.sourc ...

  4. 树莓派上安装2.8寸TFT触摸屏

    在某宝的这里买了一个2.8寸的TFT触摸屏,其实就是中国版的ADAFRUIT 结合店家的帮助文档做了一下,一次点亮,这里也记录一下自己的安装过程(话说会硬件是会比会软件有不同的乐趣~~~) 由于店家推 ...

  5. 树莓派上 安装并 运行opencv

    1.先安装依赖项 OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake. sudo apt-get install build-essential sudo ...

  6. 树莓派上安装Samba实现树莓派与Windows间的文件共享

    我是参考这篇文章的: https://www.jianshu.com/p/ead92b06318e 安装samba和common-bin库(具有smbpasswd效用) sudo apt-get in ...

  7. 树莓派上安装boost库

    一.安装boost库 sudo apt-get install libboost-dev aptitude search boost 二.编写测试代码 #include <iostream> ...

  8. raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序

    参考网址: http://www.linuxdot.net/ http://www.cnblogs.com/mayswind/p/3279380.html http://www.raspberrypi ...

  9. 树莓派+花生棒+leanote搭建自己的笔记服务器

    背景 对于一个程序猿来说.女朋友可以(暂时)没有,但是不能没有一个很好的记笔记的应用.因为记笔记可以帮助自己积累学习提升自己.每一次回头看自己记得笔记,你都会有新的理解. 也许有人会说,用有道云啊,有 ...

随机推荐

  1. 类和对象:继承 - 零基础入门学习Python038

    类和对象:继承 让编程改变世界 Change the world by program 上节课的课后作业不知道大家完成的怎样?我们试图模拟一个场景,里边有一只乌龟和十条鱼,乌龟通过吃鱼来补充体力,当乌 ...

  2. Python学习笔记总结(一)对象和流程语句总结

    一.对象类型 1.数字 数字:不可变 2.字符串 字符串:不可原处修改[修改需要创建新的对象],有顺序,支持求长(len),合并(+),重复(*),索引S[0],分片(S[1:3]],成员测试(in) ...

  3. (转)Oracle Data Guard学习

    一.Data Guard提供如下三种数据保护模式: 1)最高保护模式(Maximum Protection) 这里的”最高保护“是指最大限度的保护数据不丢失,也就是至少有一个standby和prima ...

  4. Android AutoCompleteTextView和MultiAutoCompleteTextView使用

    Android AutoCompleteTextView和MultiAutoCompleteTextView的功能类似于百度或者Google在搜索栏输入信息的时候,弹出的与输入信息接近的提示信息: 它 ...

  5. <php>统计目录数和文件数

    $dirn = 0; //目录数 $filen = 0; //文件数 //用来统计一个目录下的文件和目录的个数 function getdirnum($file) { global $dirn; gl ...

  6. Hybrid App开发模式中, IOS/Android 和 JavaScript相互调用方式

    IOS:Objective-C 和 JavaScript 的相互调用 iOS7以前,iOS SDK 并没有原生提供 js 调用 native 代码的 API.但是 UIWebView 的一个 dele ...

  7. hdu 5402 Travelling Salesman Problem(大模拟)

    Problem Description Teacher Mai ,) to the bottom right corner (n,m). He can choose one direction and ...

  8. js获取url传递参数(转的,原作不详)

    这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET 函数: <Script languag ...

  9. Laravel-数据库操作笔记

    (慕课网_轻松学会Laravel-基础篇_天秤vs永恒老师) 一.直接使用sql语句 1.路由 2.StudentController.php 二.查询构造器 简介:Laravel查询构造器(quer ...

  10. android避免service被杀

    1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建@Override    public int onStartComma ...