leanote安装配置 环境: Centos 6.5 x86_64 所需软件: go1.8.linux-amd64.tar.gz mongodb-linux-x86_64-rhel62-3.4.4.tgz leanote-all-master.zip nginx-1.12.1.tar.gz setuptools-36.2.7.zip supervisor-3.3.3.tar.gz 一、安装go 1、解压 ``` tar zxvf go1.8.linux-amd64.tar.gz -C /usr/local/ ``` 2、新建目录mygo,放go的模块及编译后的文件 ``` mkdir /usr/local/mygo ``` 3、配置环境变量 ``` vi /etc/profile 添加以下内容: GOROOT=/usr/local/go GOPATH=/usr/local/mygo PATH=$PATH:$GOROOT/bin:$GOPATH/bin export GOROOT GOPATH PATH ``` 使环境变量生效 ``` source /etc/profile ``` 4、验证 ``` go version ``` 二、安装revel 1、 解压leanote-all-master.zip ``` unzip leanote-all-master.zip ``` 2、 把src文件放到/usr/local/mygo中 ``` cp –rf leanote-all-master/src /usr/local/mygo/ ``` 3、 安装 ``` cd /usr/local/mygo/src && go install github.com/revel/cmd/revel ``` 三、安装mongodb 1、解压并重命名解压目录 ``` tar zxvf mongodb-linux-x86_64-rhel62-3.4.4.tgz -C /usr/local mv /usr/local/mongodb-linux-x86_64-rhel62-3.4.4 /usr/local/mongodb ``` 2、添加环境变量 ``` vi /etc/profile ``` 当前的环境配置如下: ``` GOROOT=/usr/local/go GOPATH=/usr/local/mygo MONGO=/usr/local/mongodb PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$MONGO/bin export GOROOT GOPATH PATH ``` 使环境变量生效 ``` source /etc/profile ``` 3、新建数据存放目录 ``` mkdir /usr/local/data ``` 4、启动数据库 ``` mongod --dbpath /usr/local/data ``` 5、导入数据 ``` mongorestore -h localhost -d leanote –dir /usr/local/mygo/src/github.com/leanote/leanote/mongodb_backup/leanote_install_data ``` 四、配置leanote 修改/usr/local/mygo/src/github.com/leanote/leanote/conf/app.conf ``` http.port=9000修改为http.port=8080 site.url=http://localhost:9000修改为site.url=http://10.188.12.133:8080 更改app.secret后面的字符串,总长度保持不变 ``` 五、启动leanote ``` revel run github.com/leanote/leanote ``` 六、访问 浏览器地址栏输入http://10.188.12.133:8080,登录,默认用户名admin,密码abc123 现在密码:zeroc.net 扩展 (一)为leanote配置数据库用户密码 1、修改/usr/local/mygo/src/github.com/leanote/leanote/conf/app.conf ``` db.dbname=修改为db.username=ZeroC db.password修改为db.password=toor ``` 2、启动mongodb ``` mongod --dbpath /usr/local/data ``` 3、登录mongodb(另一个终端中) ``` mongo ``` 4、添加ZeroC用户(>开头的为命令,##为注释,#为shell命令,其他为返回值) ``` ##切换到leanote数据库 >use leanote switched to db leanote ##添加ZeroC用户,密码为toor,角色为readWrite >db.createUser({user:"ZeroC",pwd:"toor",roles:["readWrite"]}); Successfully added user: { "user" : "ZeroC", "roles" : [ "readWrite" ] } ##停止mongo >use admin; >db.shutdownServer() >exit ``` 启动mongodb ``` mongod --dbpath /usr/local/data --auth ``` 登录mongodb,并切换到leanote数据库 ``` ##此时查看数据表会失败 >show collections; 2017-08-02T21:46:56.166+0800 E QUERY [thread1] Error: listCollections failed: { "ok" : 0, "errmsg" : "not authorized on leanote to execute command { listCollections: 1.0, filter: {} }", "code" : 13, "codeName" : "Unauthorized" } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype._getCollectionInfosCommand@src/mongo/shell/db.js:805:1 DB.prototype.getCollectionInfos@src/mongo/shell/db.js:817:19 DB.prototype.getCollectionNames@src/mongo/shell/db.js:828:16 shellHelper.show@src/mongo/shell/utils.js:762:9 shellHelper@src/mongo/shell/utils.js:659:15 @(shellhelp2):1:1 ##认证 > db.auth("ZeroC","toor"); 1 ##再看表 >show collections; albums attachs blog_comments blog_likes blog_singles …… ``` 5、启动leanote ``` revel run github.com/leanote/leanote ``` (二)修改admin的邮箱 1、登录mongodb ``` mongo ``` 2、更新数据 ``` ##切换到leanote数据库 >use leanote; switched to db leanote ##认证 > db.auth("ZeroC","toor"); 1 ##查看数据 >db.users.find({Username:"admin"}) ##修改邮箱 >db.users.update({Username:"admin"},{$set:{Email:"vrocwang@gmail.com"}}) ``` (三)以后台方式启动mongodb 说明:如果已经启动过mongodb,那么需要清理掉数据文件,不然启动会报错 为方便操作,把启动选项放进配置文件中 1、新建conf,log目录 ``` mkdir /usr/local/mongodb/{conf,log} ``` 2、添加配置文件 ``` cat /usr/local/mongodb/conf/mongodb.conf dbpath=/usr/local/data logpath=/usr/local/mongodb/log/log pidfilepath=/usr/local/mongodb/conf/mongo.pid ## 为每一个数据库按照数据库名建立文件夹存放 directoryperdb=true ## 以追加的方式记录日志 logappend=true ## 绑定ip bind_ip=127.0.0.1 ## 端口 port=27017 ## 日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5% oplogSize=1000 ## 后台运行 fork=true ## 不预先分配存储 noprealloc=true ## 认证方式启动 auth=true ``` 3、启动 ``` mongod -f /usr/local/mongodb/conf/mongodb.conf ``` (四)为admin添加用户 注意:此处不要以认证方式启动,不然,无法操作admin数据库,因为mongodb默认没有管理员用户,无法认证 1、登录mongodb ``` mongo ``` 2、切换到admin库 ``` >use admin; ``` 3、查看admin库中的表 ``` > show collections; system.users system.version ``` 4、查看用户(默认为空) ``` > db.system.users.find() ``` 5、添加数据库管理员 ``` >db.createUser({user:"admin",pwd:"toor",roles:["readWriteAnyDatabase","dbAdminAnyDatabase","clusterAdmin"]}) ``` (五)用supervisor管理leanote,使leanote后台运行 supervisor是python的一个模块,需要先安装setuptools 1、解压setuptools,并安装 ``` unzip setuptools-36.2.7.zip cd setuptools-36.2.7 python setup.py install ``` 2、解压supervisor,并安装 ``` tar zxvf supervisor-3.3.3.tar.gz cd supervisor-3.3.3 python setup.py install ``` 3、配置supervisor (##开头的行为说明) ①新建目录 ``` mkdir -p /usr/local/supervisor/logs ``` ②生成配置文件,echo_supervisord_conf 在/usr/bin中 ``` echo_supervisord_conf > /usr/local/supervisor/supervisord.conf ``` ③修改配置文件如下 ``` [root@ZeroC supervisor]# sed -e "/^;/d" -e "/^$/d" supervisord.conf [unix_http_server] file=/usr/local/supervisor/supervisor.sock ; the path to the socket file chmod=0700 ; socket file mode (default 0700) [supervisord] logfile=/usr/local/supervisor/logs/supervisord.log ; main log file; default $CWD/supervisord.log logfile_maxbytes=50MB ; max main logfile bytes b4 rotation; default 50MB logfile_backups=10 ; # of main logfile backups; 0 means none, default 10 loglevel=info ; log level; default info; others: debug,warn,trace pidfile=/usr/local/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid nodaemon=false ; start in foreground if true; default false minfds=1024 ; min. avail startup file descriptors; default 1024 minprocs=200 ; min. avail process descriptors;default 200 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///usr/local/supervisor/supervisor.sock ; use a unix:// URL for a unix socket [include] files = /usr/local/supervisor/*.ini ④添加leanote的配置文件/usr/local/supervisor/leanote.ini,内容如下 [program:leanote] command=/usr/local/mygo/bin/revel run github.com/leanote/leanote directory=/usr/local/mygo/src autorstart=true redirect_stderr=true stdout_logfile=/usr/local/supervisor/logs/leanote.log user=root priority=1 ``` ⑤启动supervisor ``` supervisord -c /usr/local/supervisor/supervisord.conf supervisorctl start all ``` (六)导出leanote数据文件 ``` mongodump -h 127.0.0.1 -u ZeroC -p toor -d leanote -o /root/data ``` 注意:如果用auth模式启动,无备份权限无法备份数据库 报错如下: ``` 2017-11-30T11:15:26.732+0800 Failed: error getting database names: not authorized on admin to execute command { listDatabases: 1 } ```