Ubuntu系统安装部署Pandawiki智能知识库
一、系统环境准备
bash
# 更新系统
sudo apt update && sudo apt upgrade -y
sudo apt install -y git python3-pip python3-venv nginx ufw certbot
# 安装PostgreSQL数据库
sudo apt install -y postgresql postgresql-contrib
sudo -u postgres psql -c "CREATE DATABASE pandawiki;"
sudo -u postgres psql -c "CREATE USER wikiadmin WITH PASSWORD 'YourStrongPassword!';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE pandawiki TO wikiadmin;"
# 创建应用目录
mkdir -p /opt/pandawiki && cd /opt/pandawiki
二、Pandawiki部署流程
1. 获取源代码
bash
git clone https://github.com/pandawiki/pandawiki.git
cd pandawiki
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
2. 安装依赖
bash
pip install --upgrade pip
pip install -r requirements.txt
pip install gunicorn gevent psycopg2-binary
3. 配置应用
bash
# 创建配置文件
cp config.example.py config.py
nano config.py
python
# 关键配置修改
SQLALCHEMY_DATABASE_URI = 'postgresql+psycopg2://wikiadmin:YourStrongPassword!@localhost/pandawiki'
SECRET_KEY = '生成32位密钥(openssl rand -hex 32)'
ALLOW_REGISTRATION = False # 生产环境禁用开放注册
UPLOAD_FOLDER = '/opt/pandawiki/uploads' # 上传目录
4. 初始化数据库
bash
flask db upgrade
flask init-data
# 创建上传目录
sudo mkdir -p /opt/pandawiki/uploads
sudo chown -R $USER:$USER /opt/pandawiki
5. 测试运行
bash
gunicorn --bind 0.0.0.0:8000 app:app
# 访问 http://<服务器IP>:8000 验证
三、生产环境部署
1. 创建系统服务
bash
sudo nano /etc/systemd/system/pandawiki.service
ini
[Unit]
Description=Pandawiki Gunicorn Service
After=network.target postgresql.service
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/opt/pandawiki/pandawiki
Environment="PATH=/opt/pandawiki/pandawiki/venv/bin"
ExecStart=/opt/pandawiki/pandawiki/venv/bin/gunicorn \
--worker-class gevent \
--workers 5 \
--bind unix:/run/pandawiki.sock \
--timeout 300 \
--log-level warning \
app:app
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
bash
sudo systemctl daemon-reload
sudo systemctl start pandawiki
sudo systemctl enable pandawiki
2. Nginx配置
bash
sudo nano /etc/nginx/sites-available/pandawiki
nginx
server {
listen 80;
server_name wiki.yourdomain.com;
client_max_body_size 100M; # 允许大文件上传
location / {
include proxy_params;
proxy_pass http://unix:/run/pandawiki.sock;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
}
location /static {
alias /opt/pandawiki/pandawiki/static;
expires 30d;
}
location /uploads {
alias /opt/pandawiki/uploads;
expires 30d;
add_header Cache-Control "public";
}
}
bash
sudo ln -s /etc/nginx/sites-available/pandawiki /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
3. 启用HTTPS
bash
sudo ufw allow 'Nginx Full'
sudo certbot --nginx -d wiki.yourdomain.com
四、监控平台集成
1. 安装Prometheus+Grafana
bash
# 添加仓库
sudo apt-get install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update
# 安装组件
sudo apt install -y prometheus prometheus-node-exporter grafana
2. 配置Prometheus监控Pandawiki
bash
sudo nano /etc/prometheus/prometheus.yml
yaml
scrape_configs:
# 添加Pandawiki监控
- job_name: 'pandawiki'
metrics_path: '/metrics'
static_configs:
- targets: ['localhost:8000'] # Gunicorn暴露的指标端口
relabel_configs:
- source_labels: [__address__]
target_label: instance
replacement: 'pandawiki-primary'
3. 添加Pandawiki专属仪表板
- 访问Grafana:http://<服务器IP>:3000 (admin/admin)
- 添加Prometheus数据源:http://localhost:9090
- 导入仪表板:
- 使用JSON文件:pandawiki-grafana-dashboard.json
- 或创建自定义仪表板监控:
- 请求速率
- 错误率(4xx/5xx)
- 响应延迟(P95)
- 数据库查询性能
- 内存/CPU使用率
4. 关键监控指标配置
bash
sudo nano /etc/prometheus/alert_rules.yml
yaml
groups:
- name: pandawiki
rules:
- alert: HighErrorRate
expr: sum(rate(http_requests_total{status=~"5.."}[5m]) / sum(rate(http_requests_total[5m])) * 100 > 5
for: 10m
labels:
severity: critical
annotations:
summary: "高错误率 {{ $labels.instance }}"
description: "5xx错误率超过5% (当前值: {{ $value }}%)"
- alert: SlowResponse
expr: histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) > 3
for: 15m
labels:
severity: warning
annotations:
summary: "响应延迟过高 {{ $labels.instance }}"
description: "P95响应延迟超过3秒 (当前值: {{ $value }}s)"
五、数据备份与恢复
1. 自动化备份脚本
bash
sudo nano /usr/local/bin/pandawiki-backup
bash
#!/bin/bash
# 备份数据库、上传文件和配置
BACKUP_DIR="/backup/pandawiki/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 数据库备份
sudo -u postgres pg_dump pandawiki > $BACKUP_DIR/pandawiki.sql
gzip $BACKUP_DIR/pandawiki.sql
# 文件备份
tar -czf $BACKUP_DIR/uploads.tar.gz /opt/pandawiki/uploads
tar -czf $BACKUP_DIR/config.tar.gz /opt/pandawiki/pandawiki/config.py
# 备份监控数据
tar -czf $BACKUP_DIR/prometheus.tar.gz /var/lib/prometheus
# 加密备份
gpg --batch --passphrase "YourEncryptionKey" --symmetric $BACKUP_DIR/*.gz
# 保留最近30天备份
find /backup/pandawiki -type d -mtime +30 -exec rm -rf {} \;
bash
sudo chmod +x /usr/local/bin/pandawiki-backup
sudo crontab -e
cron
# 每天凌晨2点备份
0 2 * * * /usr/local/bin/pandawiki-backup
2. 云存储备份(AWS S3示例)
bash
# 安装AWS CLI
sudo apt install awscli -y
aws configure
# 添加备份脚本末尾
aws s3 sync --delete /backup/pandawiki s3://your-bucket/pandawiki-backups
3. 灾难恢复流程
bash
# 1. 恢复数据库
gunzip -c pandawiki.sql.gz | sudo -u postgres psql pandawiki
# 2. 恢复文件
sudo tar -xzf uploads.tar.gz -C /
sudo tar -xzf config.tar.gz -C /
# 3. 重启服务
sudo systemctl restart pandawiki postgresql nginx
六、日常运维管理
1. 每日检查清单
bash
# 服务状态检查
sudo systemctl status pandawiki nginx postgresql prometheus
# 日志检查
journalctl -u pandawiki --since "today" | grep -E 'ERROR|CRITICAL'
tail -100 /var/log/nginx/error.log
# 存储检查
df -h / /opt /backup
du -sh /opt/pandawiki/uploads
# 性能检查
pg_top -d pandawiki # 数据库性能
htop # 系统资源
2. 自动化维护脚本
bash
sudo nano /usr/local/bin/pandawiki-maintenance
bash
#!/bin/bash
# 每周维护任务
source /opt/pandawiki/pandawiki/venv/bin/activate
cd /opt/pandawiki/pandawiki
# 1. 更新代码
git fetch origin
git checkout main
git reset --hard origin/main
# 2. 更新依赖
pip install -r requirements.txt --upgrade
# 3. 数据库迁移
flask db upgrade
# 4. 清理缓存
find /tmp -name "pandawiki_cache_*" -mtime +7 -delete
# 5. 重启服务
sudo systemctl restart pandawiki
3. 智能问答增强
bash
# 安装AI插件
pip install openai faiss-cpu
# 配置智能问答
nano config.py
python
# 添加AI配置
AI_ENABLED = True
OPENAI_API_KEY = 'sk-xxx'
AI_INDEX_PATH = '/opt/pandawiki/faiss_index'
bash
# 创建知识索引
flask ai build-index
七、安全加固措施
1. 网络安全
bash
# 防火墙配置
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw allow https
sudo ufw enable
# 安装Fail2Ban
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
ini
[pandawiki]
enabled = true
port = http,https
filter = pandawiki
logpath = /var/log/nginx/access.log
maxretry = 5
findtime = 600
bantime = 86400
2. 文件安全
bash
# 设置目录权限
sudo chown -R ubuntu:www-data /opt/pandawiki
sudo find /opt/pandawiki/uploads -type f -exec chmod 640 {} \;
sudo find /opt/pandawiki/pandawiki -type d -exec chmod 750 {} \;
# 配置文件完整性监控
sudo apt install aide
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
sudo crontab -e
cron
# 每天检查文件完整性
0 3 * * * /usr/bin/aide --check
3. 数据库安全
sql
-- 限制连接数
ALTER SYSTEM SET max_connections = 100;
-- 禁用远程访问
sudo nano /etc/postgresql/14/main/pg_hba.conf
# 修改为:
host all all 127.0.0.1/32 md5
八、注意事项
1. 升级策略
- 测试环境先行:先在测试环境验证升级
- 备份优先:升级前执行完整备份
- 分阶段升级:
bash
# 1. 停用负载
sudo systemctl stop pandawiki
# 2. 更新代码
git pull origin main
# 3. 数据库迁移
flask db upgrade
# 4. 重启服务
sudo systemctl start pandawiki
2. 性能优化
python
# config.py 性能优化配置
CACHE_TYPE = "RedisCache"
CACHE_REDIS_URL = "redis://localhost:6379/0"
SQLALCHEMY_ENGINE_OPTIONS = {
"pool_pre_ping": True,
"pool_recycle": 300,
"pool_size": 20,
"max_overflow": 10
}
3. 灾备恢复计划
故障类型 |
恢复时间目标(RTO) |
恢复点目标(RPO) |
恢复方案 |
应用故障 |
15分钟 |
5分钟 |
从备份恢复服务配置 |
数据库损坏 |
1小时 |
1小时 |
从SQL备份恢复 |
服务器宕机 |
2小时 |
24小时 |
云镜像恢复 + 最新数据备份 |
数据中心故障 |
4小时 |
24小时 |
跨区域备份恢复 |
4. 智能知识库优化
- 知识图谱集成:
bash
pip install py2neo
flask knowledge-graph build
- 问答质量监控:
- 记录用户问答满意度
- 定期优化AI模型
- 设置未知问题报警
5. 合规性要求
- GDPR合规:
- 用户数据加密存储
- 提供数据导出接口
- 自动删除90天未活跃用户
- 操作审计:
sql
CREATE TABLE audit_log (
id SERIAL PRIMARY KEY,
user_id INT,
action VARCHAR(50),
target VARCHAR(100),
timestamp TIMESTAMP DEFAULT NOW()
);
通过以上完整流程,您将获得一个安全、高效、可监控的智能知识库系统。建议每月执行一次安全审计,每季度进行恢复演练,确保系统持续稳定运行。
Ubuntu系统安装部署Pandawiki智能知识库的更多相关文章
- [blockchain-035]eos的部署安装智能合约
0.参考资料 https://github.com/EOSIO/eos/wiki 1. eos的github地址 https://github.com/EOSIO/eos 2.下载eos源码 git ...
- 暑期——第三周总结(Ubuntu系统安装eclipse问题【已解决】)
所花时间:7天 代码行:200(python)+150(java) 博客量:1篇 了解到知识点 : 一: Python: 问题 unresolved reference xrange 解决方案 pyt ...
- ceph学习笔记之十二 Ubuntu安装部署Ceph J版本
https://cloud.tencent.com/info/2b70340c72d893c30f5e124e89c346cd.html 安装Ubuntu系统安装步骤略过 拓扑连接: 一.安装前准备工 ...
- Ubuntu系统部署tomcat并启用JMX实战案例
Ubuntu系统部署tomcat并启用JMX实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装JDK环境 1>.更换阿里云的软件源 [root@zabbix_g ...
- ubuntu系统安装初始化脚本
ubuntu系统安装初始化脚本 经常安装卸载ubuntu,每次系统安装完成后要安装好多软件,一个个命令输很麻烦浪费时间,一个sh文件全搞定! 1. flashplayer下载:点击这里 2. Auda ...
- ubuntu系统安装软件方法
ubuntu系统安装软件方法 ubuntu下安装软件有三种方式,分别为在线安装apt-get方式,软件商店安装方式和 1. 软件商店安装方式 这种方式对经常使用windows系统的同学来说最为简单,因 ...
- linux项目-之系统安装部署-cobbler
http://cobbler.github.io/manuals/2.6.0/1/1_-_Release_Notes.html http://www.osyunwei.com/archives/760 ...
- Ubuntu系统安装配置Pintos和Bochs
Ubuntu系统安装配置 Pintos 和 Bochs 安装过程 首先是UEFI启动模式下Win8.1安装Ubuntu14.04双系统,由于篇幅过长,就不在这里详写.可见博主的另一篇博客http:// ...
- 阿里云服务器 ECS Ubuntu系统安装配置
1. 登陆服务器 系统开通成功后手机会收到阿里云发来的短信,包含公网IP及root登录密码. WEB管理后台方式 可通过阿里云管理后台选择“连接管理终端…”进行登录 提示输入VNC密码 登录成功后显示 ...
- Ubuntu 下部署asp.net运行环境
在Ubuntu下部署asp.net运行环境,网上教程很多,基本都是编译Mono源码,然后安装jexus.但是可能是我最近RP不太好,编译Mono源码一直都是失败,无奈之下只好找另外的方法安装了. 网上 ...
随机推荐
- HTML5
转
贴个图:
- Harmony 动态路由框架:TheRouter 开源
TheRouter 是一个用于移动端APP,包括 Android.iOS.Harmony 三端的模块化.组件化开发的一整套解决方案框架.提供了三端高一致性,对移动端开发者更友好,让开发人员更适应,使用 ...
- Result、ConfigAwait、ValueTask
Result.ConfigAwait.ValueTask 参照: C# Async/Await: ConfigAwait, ValueTask是个啥?对提高性能有用么?_哔哩哔哩_bilibili 理 ...
- C# 线程(二)——Thread学习
参照:C#多线程 - .NET开发菜鸟 - 博客园 (cnblogs.com) C# Thread 线程状态知识 - 大圣的笑 - 博客园 (cnblogs.com) 背景: 在.NET Framew ...
- 1K star!这个开源项目让短信集成简单到离谱,开发效率直接翻倍!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 "让简单的事情回归简单的本质" -- SMS4J 项目宣言 SMS4J ...
- qwen3 惊喜发布,用 ollama + solon ai (java) 尝个鲜
qwen3 惊喜发布了,帅!我们用 ollama 和 solon ai (java) 也来尝个鲜. 1.先用 ollama 拉取模型 听说,在个人电脑上用 4b 的参数,效果就很好了. ollama ...
- TreeSet练习 根据字符串长度排序
String类已经实现了Comparable接口,我们可以根据TreeSet提供的构造器传入自己的比较器. public class Set4 { public static void main(St ...
- C# 14 新增功能一览,你觉得实用吗?
前言 今天咱们一起来看看在 C# 14 中新增的几个功能特性,是否给我们日常编码带了来便利. 前提准备 要体验 C# 14 中的新增功能,你需要安装最新的 Visual Studio 2022 版本或 ...
- Gin RBAC 权限基础实现
RBAC (基于角色的访问控制) 是一种广泛应用的权限管理模型, 通过 角色 将 用户 和 权限 解耦, 简化权限分配管理. 用户 (User): 系统的使用者 权限 (Permission): 对资 ...
- Python基础 - 多进程(上)
估计很多小伙伴会认为, 类似, 进程, 线程, 协程等这些, 比较专业的词汇, 应该是比较高深的内容, 作为入门基础不太合适. 而, 事实确实如此. 但, 如果不是做研究的, 仅从功能的视角看看待, ...