当前位置: 首页 > news >正文

基于宝塔面板与MongoDB的Leanote云笔记部署指南(全流程代码解析)

1. 环境准备:从零搭建云笔记基础平台

在开始部署Leanote云笔记之前,我们需要先准备好运行环境。我推荐使用腾讯云轻量应用服务器(2核2G3M配置)作为基础平台,操作系统选择CentOS 7.x版本。这个配置对于个人云笔记服务来说完全够用,而且性价比很高。我自己就用了三年同款配置,稳定运行着包含5000+笔记的实例。

系统基础配置建议在服务器初始化时就完成:

  • 更新系统软件包:yum update -y && yum upgrade -y
  • 安装常用工具包:yum install -y vim wget curl net-tools
  • 关闭不必要的防火墙规则(后续会用宝塔面板统一管理):systemctl stop firewalld && systemctl disable firewalld

特别提醒:如果你使用的是其他云服务商,需要注意默认安全组规则可能会阻止外部访问。我在阿里云上第一次部署时就遇到过这个问题,明明服务启动了却无法访问,排查了半天才发现是安全组没放行端口。建议提前在云服务商控制台放行以下端口:

  • 8888(宝塔面板默认端口)
  • 9000(Leanote默认端口)
  • 27017(MongoDB默认端口)

内存管理也很关键,MongoDB比较吃内存。2G内存的服务器建议配置1GB的swap空间,避免内存不足导致服务崩溃。创建swap的命令如下:

dd if=/dev/zero of=/swapfile bs=1M count=1024 chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile swap swap defaults 0 0' >> /etc/fstab

2. 宝塔面板安装与配置

2.1 一键安装宝塔面板

宝塔面板绝对是Linux运维小白的救星,它把复杂的命令行操作变成了可视化的点击操作。安装过程非常简单,只需要一行命令:

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

执行后会提示确认安装,输入y回车即可。安装过程大约需要3-5分钟,取决于你的网络速度。我第一次安装时因为服务器在国外,下载速度很慢,后来发现加上--no-check-certificate参数可以跳过证书验证加速下载。

安装完成后会显示面板的访问地址、用户名和密码,务必把这些信息保存好。如果忘记密码也不用慌,SSH连接服务器后执行bt default就能重新显示默认信息。

2.2 安全加固宝塔面板

默认安装的宝塔面板存在一些安全隐患,建议立即进行以下加固操作:

  1. 修改默认的8888端口:在面板设置→面板端口中修改为其他端口(如5888)
  2. 开启BasicAuth认证:增加一层HTTP基础认证
  3. 绑定访问域名:限制只能通过特定域名访问
  4. 设置IP白名单:只允许自己的IP访问面板

我吃过亏,有一次服务器被暴力破解尝试登录宝塔面板,虽然没成功但产生了大量垃圾日志。后来加了fail2ban防护就好多了,配置方法:

yum install -y fail2ban systemctl enable fail2ban systemctl start fail2ban

然后在/etc/fail2ban/jail.local中添加:

[bt-panel] enabled = true filter = bt-panel action = iptables[name=bt-panel, port=8888, protocol=tcp] logpath = /www/server/panel/logs/request.log maxretry = 5 findtime = 600 bantime = 3600

2.3 开放必要端口

在宝塔面板的"安全"页面,需要放行以下端口:

  • 9000(Leanote服务端口)
  • 27017(MongoDB端口)
  • 你修改后的面板端口

注意:如果在云服务商那里有安全组/防火墙设置,需要两边都放行才能生效。我就犯过这个错误,只在宝塔放了端口但忘记在腾讯云控制台设置,结果死活连不上。

3. MongoDB数据库部署

3.1 安装MongoDB 4.0

虽然官方仓库有更新的版本,但经过测试MongoDB 4.0与Leanote的兼容性最好。先配置yum源:

vim /etc/yum.repos.d/mongodb-org-4.0.repo

添加以下内容:

[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=0 enabled=1

然后安装MongoDB:

yum makecache yum -y install mongodb-org

3.2 关键配置调整

编辑配置文件/etc/mongod.conf,有几个关键修改点:

  1. bindIp: 127.0.0.1改为bindIp: 0.0.0.0(注意冒号后有个空格)
  2. #security:下方添加:
    security: authorization: enabled
  3. 建议修改默认端口(非必须):port: 27017改为其他端口

启动服务并设置开机自启:

systemctl start mongod systemctl enable mongod

3.3 创建数据库用户

Leanote需要专用的数据库用户,先连接MongoDB:

mongo

然后执行以下命令创建管理员账号(密码请自行修改):

use admin db.createUser({ user: "leanote", pwd: "StrongPassword123", roles: [{role: "readWrite", db: "leanote"}] })

测试连接是否正常:

mongo -u leanote -p StrongPassword123 --authenticationDatabase admin

4. Leanote服务部署

4.1 下载与解压

推荐使用2.6.1版本,稳定性经过验证:

wget https://nchc.dl.sourceforge.net/project/leanote-bin/2.6.1/leanote-linux-amd64-v2.6.1.bin.tar.gz tar -zxvf leanote-linux-amd64-v2.6.1.bin.tar.gz -C /opt

我习惯把这类自建服务放在/opt目录下,方便统一管理。解压后会得到一个leanote目录,里面包含以下重要子目录:

  • bin/:可执行文件
  • conf/:配置文件
  • public/:静态资源
  • mongodb_backup/:初始数据

4.2 配置文件修改

编辑/opt/leanote/conf/app.conf,重点关注这些配置项:

app.secret=替换为随机字符串 # 用于加密会话 http.port=9000 # 服务端口 site.url=http://你的域名或IP:9000 # 必须设置正确否则附件无法上传 db.host=127.0.0.1 # MongoDB地址 db.port=27017 # MongoDB端口 db.dbname=leanote # 数据库名 db.username=leanote # 数据库用户 db.password=StrongPassword123 # 数据库密码

特别提醒:app.secret一定要修改!我就因为偷懒用了默认值,结果被扫描工具发现了漏洞。可以用这个命令生成随机字符串:

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1

4.3 初始化数据库

导入初始数据(注意路径要正确):

mongorestore -h localhost -d leanote --dir /opt/leanote/mongodb_backup/leanote_install_data/ --username leanote --password StrongPassword123 --authenticationDatabase admin

检查导入是否成功:

mongo -u leanote -p StrongPassword123 --authenticationDatabase admin > use leanote > db.notes.count()

如果返回数字大于0说明导入成功。

5. 服务启动与优化

5.1 启动Leanote服务

最简单的启动方式:

nohup bash /opt/leanote/bin/run.sh > /opt/leanote/run.log 2>&1 &

但更推荐用systemd管理,创建/etc/systemd/system/leanote.service

[Unit] Description=Leanote Service After=network.target mongod.service [Service] Type=simple User=root WorkingDirectory=/opt/leanote ExecStart=/bin/bash /opt/leanote/bin/run.sh Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

然后启用服务:

systemctl daemon-reload systemctl start leanote systemctl enable leanote

5.2 Nginx反向代理

直接用IP:端口访问不够优雅,建议配置Nginx反向代理。在宝塔面板创建网站后,修改Nginx配置:

server { listen 80; server_name note.yourdomain.com; 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; } }

然后申请SSL证书开启HTTPS,既安全又专业。宝塔面板可以一键申请Let's Encrypt证书。

5.3 定期备份策略

数据无价,建议设置自动备份。创建备份脚本/opt/backup_leanote.sh

#!/bin/bash DATE=$(date +%Y%m%d) BACKUP_DIR="/opt/leanote_backup" mkdir -p $BACKUP_DIR/$DATE # 备份MongoDB mongodump -h 127.0.0.1 --port 27017 -u leanote -p StrongPassword123 --authenticationDatabase admin -d leanote -o $BACKUP_DIR/$DATE # 备份配置文件 cp /opt/leanote/conf/app.conf $BACKUP_DIR/$DATE/ # 打包压缩 tar -zcf $BACKUP_DIR/leanote_$DATE.tar.gz $BACKUP_DIR/$DATE # 删除7天前的备份 find $BACKUP_DIR -name "leanote_*.tar.gz" -mtime +7 -exec rm -f {} \;

添加定时任务(每天凌晨3点执行):

chmod +x /opt/backup_leanote.sh (crontab -l ; echo "0 3 * * * /opt/backup_leanote.sh") | crontab -

6. 常见问题排查

6.1 服务无法启动

查看日志是最直接的排查方式:

journalctl -u leanote -n 50 --no-pager # 对于systemd管理的服务 cat /opt/leanote/run.log # 对于直接启动的服务

常见错误及解决方案:

  1. address already in use:端口被占用,修改app.conf中的http.port
  2. failed to connect to MongoDB:检查MongoDB服务状态和连接信息
  3. permission denied:确保leanote目录有读写权限

6.2 忘记管理员密码

如果忘记admin密码(默认admin/abc123),可以通过MongoDB重置:

mongo -u leanote -p StrongPassword123 --authenticationDatabase admin > use leanote > db.users.update({Username: "admin"}, {$set: {Password: "202cb962ac59075b964b07152d234b70"}}) # 这是abc123的MD5值

6.3 性能优化建议

当笔记数量增多后,可以采取以下优化措施:

  1. 增加MongoDB索引:
    db.notes.createIndex({UserId: 1}) db.notebooks.createIndex({UserId: 1})
  2. 修改Leanote配置:
    session.gclifetime=3600 http.timeout=30
  3. 升级服务器配置,特别是内存容量

我在实际使用中发现,当笔记超过1万条时,2G内存的服务器会开始出现响应延迟。这时候要么升级配置,要么可以考虑启用Redis缓存(需要修改Leanote源码)。

http://www.jsqmd.com/news/570195/

相关文章:

  • UAE-Large-V1知识蒸馏完全指南:从教师模型到学生模型的智能特征迁移
  • 国风美学生成模型v1.0前端交互实战:用React构建动态Prompt调试工作台
  • 2026年西安实力强的装修设计公司费用分析,靠谱机构多少钱 - myqiye
  • java审计进阶
  • Kimi-VL-A3B-Thinking多场景应用:高校试题解析、屏幕截图问答、PDF长文档理解
  • 3分钟搞定!Windows电脑直接安装Android应用的终极方案
  • GPT-SoVITS WebUI 终极指南:5分钟快速上手一站式语音合成解决方案
  • Phi-4-mini-reasoning惊艳效果:数学归纳法类题目(如数列通项证明)分步回应
  • 保姆级教程:从LoRA微调到模型合并,手把手带你用XTuner打造专属AI助手
  • 2026年广东液体硫酸铝市场透视:五家实力供应商深度解析与选择指南 - 2026年企业推荐榜
  • NCNN+OpenCV+Vulkan三件套:Windows环境下的深度学习加速实战教程
  • MySQL连接报错2002?5分钟搞定socket文件缺失问题(附详细排查流程)
  • 2026企业云电脑实战横评:从性能到安全,四款产品谁更懂你的业务场景?
  • 不止是收藏:用Infinity新标签页和Speed Dial 2,把你的Chrome主页打造成个人效率仪表盘
  • Visual C++ Redistributable组件管理与系统优化实战指南
  • m4s-converter:打破B站缓存限制,永久保存珍贵视频内容
  • [LibTorch Win] 如何选择适合你CUDA版本的LibTorch
  • Hotkey Detective:Windows热键冲突终极解码器,让失窃快捷键无处遁形
  • 使用VSCode调试Qwen-Image-Edit-F2P模型的Python代码
  • 2026年分析仪直销厂家推荐分析,光谱仪手持/手持贵金属分析仪/合金分析仪/贵金属分析仪/分析仪,分析仪直销厂家选哪家 - 品牌推荐师
  • 抖音批量下载终极指南:3分钟搞定无水印视频和音频提取
  • 抖音音频高效提取实战指南:从3小时到15分钟的效率革命
  • 从零构建:基于GStreamer与WebRTC的嵌入式音视频对讲系统
  • CentOS 8停服后,用Rocky Linux 9 + LNMP(Nginx 1.24, PHP 8.2)搭建WordPress 6.6.2的完整迁移指南
  • 耦合详解-模块
  • LeetCode 206. 反转链表 详细技术解析(迭代+递归双解法)
  • Web Serial API实战:5分钟为你的Vue/React前端项目添加串口设备控制面板
  • 瑞祥商联卡回收价格如何,回收揭晓正规平台 - 京回收小程序
  • DeepSeek-R1-Distill-Llama-8B服务化部署:基于MindIE的高并发推理方案
  • ai赋能node.js开发:让快马平台智能生成电商购物车业务逻辑代码