蚂蚁笔记私有部署

时间:2024-02-18 11:48:04

说明

其实官方的教程中已经写得很清楚了,我写这个主要是为了记录一下我自己当时安装的过程,方便后续查询

官方文档请查阅:https://github.com/leanote/leanote/wiki

环境要求

  • CentOS6.5+Nginx+MongoDB
  • 最小配置:16G内存+4CPU+500G硬盘
  • 推荐配置:32G内存+4CPU+1T硬盘

安装过程

  • 安装 CentOS 6.5

最小化安装,分区如下,推荐基于LVM,后面维护比较方便:

  /boot    500M
  swap     8G
  /        20G
  /data    剩下所有
  • 系统优化

关闭SELinux

sed -i \'s/SELINUX=enforcing/SELINUX=disabled/\'/etc/s

精简启动项

LANG=en
for root in `chkconfig --list|grep 3:on|awk \'{print 1}\'`;do chkconfig --level 3 root off;done
for root in crond network rsyslog sshd iptables;do chkconfig --level 3 $root on;done   
chkconfig --list|grep 3:on
  • 安装软件

    安装Nginx

安装Nginx的YUM源
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
yum -y install nginx

安装其他软件

yum -y install vim wget curl lsof net-tools openssl
  • 安装Mongodb

编辑mongodb的YUM源

#vim /etc/yum.repos.d/mongodb-org-3.4.repo
#添加入一下内容
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.as

安装mongodb

yum -y install mongodb-org
  • 自定义Mondodb数据库

修改数据库存储路径,将dbpath自定义成自己的data分区,首先需要创建目录并赋予权限

mkdir -p /data/db
chown -Rf mongod:mongod /data/db
chmod -Rf 755 /data/db

更改MongoDB数据库存储路径,修改dbPath

# vim /etc/mongod.conf
...
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
  # Where and how to store data.
     storage:
     dbPath: /data/db/        //我们需要指定库文件的存放目录
     journal:
     enabled: true
  # how the process runs
     processManagement:
     fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  # network interfaces
     net:
     port: 27017
     bindIp: 127.0.0.1
...
  • 启动Mongodb并加入开机自启
service mongod start
chkconfig mongod on
  • 部署蚂蚁笔记

下载蚂蚁笔记

cd /data
wget https://sourceforge.net/projects/leanote-bin/files/2.5/leanote-linux-amd64-v2.5.bin.tar.gz

解压文件

tar -zxvf leanote-linux-amd64-v2.5.bin.tar.gz

导入初始化数据库

mongorestore -h localhost -d leanote --dir /data/leanote/mongodb_backup/leanote_install_data/

给mongodb添加数据库用户

mongo
首先切换到leanote数据库下
> use leanote;
添加一个用户root, 密码是abc123,这个密码是可以自定义的
> db.createUser({
     user: \'root\',
     pwd: \'abc123\',
     roles: [{role: \'dbOwner\', db: \'leanote\'}]
 });
测试下是否正确
> db.auth("root", "abc123");
 1    
返回1表示正确

修改app.conf

# vim /data/leanote/conf/app.conf
...
 db.host=localhost
 db.port=27017
 db.dbname=leanote
 db.username=root
 db.password=abc123
...

重启数据库服务

 service mongod restart

尝试运行

bash /data/leanote/bin/run.sh

如果终端提示如下就说明配置是正确的

...
TRACE 2013/06/06 15:01:27 watcher.go:72: Watching: /home/life/leanote/bin/src/github.com/leanote/leanote/conf/routes
Go to /@tests to run the tests.
Listening on :9000
...
  • 尝试访问,记得先关闭下防火墙

恭喜你, 打开浏览器输入: http://localhost:9000体验leanote吧!

  • 配置支持https

创建证书

首先,创建证书和私钥的目录
# mkdir -p /etc/nginx/cert
# cd /etc/nginx/cert
创建服务器私钥,命令会让你输入一个口令:
# openssl genrsa -des3 -out nginx.key 2048
创建签名请求的证书(CSR):
# openssl req -new -key nginx.key -out nginx.csr
在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
# cp nginx.key nginx.key.org
# openssl rsa -in nginx.key.org -out nginx.key
最后标记证书使用上述私钥和CSR:
# openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crt

配置Nginx

配置nginx.conf

# vim /etc/nginx/nginx.conf  添加入一下内容
#本配置只有http部分, 不全, 详细配置请百度Nginx相关知识
http {
     include       /etc/nginx/mime.types;
     default_type  application/octet-stream;

     upstream  note.cloud.top  {
         server   localhost:9000;
     }

     # http
     server
     {
         listen  80;
         server_name  note.cloud.top;

         # 强制https
         # 如果不需要, 请注释这一行rewrite
         rewrite ^/(.*) https://note.cloud.top/$1 permanent;

         location / {
             proxy_pass        http://note.cloud.top;
             proxy_set_header   Host             $host;
             proxy_set_header   X-Real-IP        $remote_addr;
             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         }
     }

     # https
     server
     {
         listen  443 ssl;
         server_name  note.cloud.top;
         ssl_certificate     /etc/nginx/cert/nginx.crt; # 修改路径, 到nginx.crt, 下同
         ssl_certificate_key /etc/nginx/cert/nginx.key;
         location / {
             proxy_pass        http://note.cloud.top;
             proxy_set_header   Host             $host;
             proxy_set_header   X-Real-IP        $remote_addr;
             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
         }
     }
 }

启动Nginx

service nginx start
chkconfig nginx on
  • 笔记系统开机自启

注意

官方文档并没有给出这项设置,其实最简单的办法就是向rc.local文件中添加一条命令,开机自动执行,但是这里推荐使用supervisor服务进行管理,supervisor的详细介绍见:http://www.supervisord.org/**

方法1:

# vim /etc/rc.d/rc.local  
添加下面的内容,这样的化开机后就不会有影响
nohup bash /data/leanote/bin/run.sh &

方法2-推荐使用
使用supervisor服务进行管理的优点是服务异常后自动重启,可靠性较高

  • 安装supervisor服务
yum install epel-release -y && yum install supervisor -y
  • 配置supervisor
vim /etc/supervisord.conf   在文件末尾加入以下内容
 ···
[program:webvirtmgr]
command=bash /data/leanote/bin/run.sh
autostart=true
autorestart=true
logfile=/dev/null
log_stderr=true
user=root
 ···

logfile我们定义到磁盘黑洞中,就不用占用磁盘的空间,同时减少部分磁盘IO开销

  • 启动supervisor服务并添加到开机自启中
# chkconfig supervisord on && service supervisord start
  • 防火墙配置
#清空配置
iptables -F
iptables -X
#如果是远程ssh连接配置务必先执行这条命令,否则会断开ssh连接,无法进行后续工作
iptables -A INPUT -p tcp --dport 22 -j ACCEPT     
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
#允许80、443、9000、53(DNS)端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT      
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp -j ACCEPT
#允许loopback!(不然会导致DNS无法正常关闭等问题)               
iptables -A INPUT -i lo -p all -j ACCEPT
#丢弃坏的TCP包
iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP
#处理IP碎片数量,防止攻击,允许每秒100个
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
#设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包   
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
service iptables save
service iptables restart
  • 其它配置

修改leanote运行端口

比如想以8080端口启动.修改conf/app.conf:

http.port=8080
site.url=http://note.cloud.top:8080

请重启Leanote, 使用http://note.cloud.top:8080

绑定域名

提示

site.url其实是自己可以自定义的,因为在浏览器中我们登录注销后url会自动变成这个语句设置的值,所以务必设置正确。

site.url=http://note.cloud.top
或
site.url=https://note.cloud.top
请重启Leanote, 使用http://note.cloud.top 或者 https:////note.cloud.top 进行访问