欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在树莓派上安装leanote

程序员文章站 2022-06-26 17:13:20
...

作者:冥王星 "[email protected]"

前言

宿舍有个树莓派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:[email protected]:40001,otherhost:40001/mydb
# db.url=mongodb://root:[email protected]:27017/leanote
# db.urlEnv=${MONGODB_URL} # set url from env. eg. mongodb://root:[email protected]: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
posted on 2016-06-20 23:40 №冥王星 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/noright/p/install-leanote-on-raspberry-pi.html