首页
/ d-note 项目安装与部署指南

d-note 项目安装与部署指南

2025-07-10 00:12:35作者:袁立春Spencer

项目概述

d-note 是一个基于 Python Flask 框架开发的轻量级 Web 应用程序,主要用于安全笔记管理。本文将详细介绍如何在 Linux 系统上安装和部署 d-note 项目,包括 Apache 和 Nginx 两种主流 Web 服务器的配置方案。

环境准备

系统要求

  • Debian/Ubuntu 系统(其他 Linux 发行版可参考类似步骤)
  • Python 运行环境
  • Web 服务器(Apache 或 Nginx)

依赖安装

首先需要安装必要的 Python 依赖包:

sudo apt-get install python-flask python-crypto

注意:python-crypto 包应确保来自官方源,这是加密功能正常运行的关键依赖。

项目配置

初始化安装

执行以下命令完成基础安装:

python setup.py install

此命令会创建必要的配置文件和数据存储目录。

配置文件设置

  1. 编辑项目目录中的 dnote.ini 文件
  2. 修改 [default] 部分下的 config_path
    • 推荐路径:/etc/dnote~/.dnote
  3. 将修改后的 dnote.ini 复制到指定目录

生成安全哈希

运行以下命令生成安全配置:

generate_dnote_hashes

此命令会在配置目录中创建 dconfig.py 文件,其中包含随机生成的十六进制字符串作为加密盐值,这是保证数据安全的重要步骤。

Apache 部署方案

安装必要组件

sudo apt-get install libapache2-mod-wsgi

创建 WSGI 入口文件

在 Web 根目录创建 /var/www/dnote.wsgi 文件,内容如下:

#!/usr/bin/python
import sys
import logging
logging.basicConfig(stream=sys.stderr)
from dnote import DNOTE as application

Apache 站点配置

创建 /etc/apache2/site-available/ 配置文件,以下是关键配置示例(强烈建议使用 SSL):

<Virtualhost *:443>
    DocumentRoot /var/www/
    ServerName www.example.com
    WSGIScriptAlias / /var/www/dnote.wsgi
    
    <Directory /var/www/>
        Options -Indexes FollowSymLinks
    </Directory>
    
    Alias /d/static /var/www/dnote/static
    <Directory /var/www/dnote/static/>
        Order allow,deny
        Allow from all
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/www_example_com.crt
    SSLCertificateKeyFile /etc/ssl/private/www_example_com.key
    SSLHonorCipherOrder On
</VirtualHost>

重启 Apache 服务

sudo service apache2 restart

Nginx 部署方案

安装 uWSGI

sudo apt-get install uwsgi uwsgi-core uwsgi-extra uwsgi-plugin-python

创建 uWSGI 配置文件

在应用目录创建 /var/www/dnote/uwsgi.ini

[uwsgi]
socket = 127.0.0.1:8081
chdir = /python/path/site-packages/dnote-1.0.1-py2.7.egg/dnote
plugin = python
module = __init__:dnote
processes = 4
threads = 2
stats = 127.0.0.1:9192
uid = www-data
gid = www-data
logto = /var/log/dnote.log

启动 uWSGI

前台运行:

/usr/bin/uwsgi -c /var/www/dnote/uwsgi.ini

后台运行:

/usr/bin/uwsgi -d -c /var/www/dnote/uwsgi.ini

Nginx 配置

在站点配置中添加以下内容(示例为将应用部署在 /dnote 路径下):

location = /dnote { rewrite ^ /dnote/; }
location /dnote/ { try_files $uri @dnote; }
location @dnote {
    include uwsgi_params;
    uwsgi_param SCRIPT_NAME /dnote;
    uwsgi_modifier1 30;
    uwsgi_pass 127.0.0.1:8081;
}

重启 Nginx

sudo service nginx restart

常见问题排查

  1. 内部服务错误

    • 检查 /var/www/dnote/dnote 目录是否对 Web 服务器可读
    • 确保 /var/www/dnote/dnote/data/hashcash.db 文件可写
  2. uWSGI 启动问题

    • 可尝试使用 WSGI 文件方式启动,修改 uwsgi.ini
      wsgi-file = /var/www/dnote.wsgi
      
      替代原来的 module 配置
  3. 权限问题

    • 确保所有相关文件和目录的所有权和权限设置正确
    • 特别是当使用不同用户运行 Web 服务器和 uWSGI 时

安全建议

  1. 始终使用 HTTPS 加密连接
  2. 定期备份 hashcash.db 文件
  3. 限制对管理接口的访问
  4. 保持系统和依赖包的最新状态

通过以上步骤,您应该能够成功部署 d-note 项目。根据实际环境需求,可能需要对配置进行适当调整。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
139
1.91 K
kernelkernel
deepin linux kernel
C
22
6
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
192
273
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
923
551
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
421
392
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
189
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
74
64
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
344
1.3 K
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
36
8