跳转到主要内容

目录列表和图片画廊的Web界面

项目描述

简单的Web界面,显示子目录“files/”中文件或图片的目录列表或缩略图相册。如果文件夹对所有用户都有写权限,用户可以上传文件。

可以在pix.coldfix.eu查看示例。

这个仓库是picbox php应用的python重写。

用法

您可以通过以下方式快速安装最新版本,并从您的~/Pictures目录本地提供文件

pip install pycbox --user
pycbox -w ~/Pictures

为了允许所有网络接口上的网络访问,您还需要添加--host 0.0.0.0选项,例如

pycbox -w ~/Pictures -h 0.0.0.0

或者,您可以从git checkout运行pycbox而无需安装。尽管在这种情况下,您仍然需要按照以下方式安装依赖项

pip install -r requirements.txt --user
./bin/pycbox -w ~/Pictures

然而,不建议以这种方式从命令行运行pycbox进行部署!请参阅flask文档

虽然Flask内置的服务器轻量且易于使用,但因为它扩展性不好,并且默认一次只处理一个请求,所以不适用于生产。有关在生产环境中正确运行Flask的选项,此处有文档记录。

例如,可以使用twisted运行更复杂的服务器

twistd --nodaemon --logfile=- web --port=tcp:5000 --wsgi=pycbox.app

实际上,推荐的方法是使用docker,请参阅部署

配置

如果存在,则将从活动目录中加载 config.yml。配置文件可能成为强制性的,因此您应该始终复制并调整提供的示例配置文件

cp config.example.yml config.yml

可以通过 PYCBOX_CONFIG 环境变量指定替代的配置文件名称或路径,例如

PYCBOX_CONFIG=/path/to/alt_config.yml python pycbox.py
PYCBOX_CONFIG=/path/to/alt_config.yml twistd web --wsgi=pycbox.app

部署

建议的方法是通过 docker 运行 pycbox。可以按以下方式构建和运行镜像

docker build . -t pycbox
docker run --cap-drop=all \
    -v `pwd`/files:/pycbox/files \
    -p 5000:5000 \
    --name=pycbox pycbox

或者简单一点

docker-compose up

-d 添加到任一命令行以在后台运行。

代理

为了在子域名上运行应用程序,您需要设置代理转发。以下是一个 nginx 配置示例,用于在 pix 子域名上显示网站

server {
    listen      80;
    listen [::]:80;
    server_name pix.example.com pix.example.org;
    return 301 https://$host$request_uri;
}

server {
    listen      443 ssl;
    listen [::]:443 ssl;
    server_name pix.example.com pix.example.org;
    access_log /var/log/nginx/access_pics.log;
    location / {
        proxy_pass                          http://localhost:5000;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header Host               $host;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade            $http_upgrade;
        proxy_set_header Connection         upgrade;
    }
}

上传

为了启用上传到特定子文件夹,使其对所有用户可写。

mkdir -p files/public
chmod 777 files/public

调试模式

不要在生产环境中这样做,因为它允许客户端执行任意代码。

要在端口 5000 上以调试模式运行应用程序,请输入以下任一命令

python pycbox.py --debug

或者(推荐)

FLASK_APP=pycbox.py FLASK_DEBUG=1 flask run

第二个命令会在 python 模块更改时自动重新加载服务器,因此推荐用于开发。

大 TODO

  • 使用 redis 缓存缩略图和高亮文件

  • 使用 asciidoc 作为 markdown

  • 使用 pygments 进行高亮显示

  • 通过 YAML 文件进行配置:认证、配额、上传、拒绝 glob

更改

0.0.3

日期:2017.09.06

  • 修复调试模式中的启动错误,因为端口号是字符串

  • 修复 docker 容器中的启动错误,因为权限问题

  • 修复尝试上传到根目录时的错误

  • 修复 docker 容器中的权限问题

0.0.2

日期:2017.08.11

  • 修复安装包(如果使用 pip 进行安装)

0.0.1

日期:2017.08.10

功能包括

  • 目录索引

  • 缩略图画廊

  • 高亮显示(source-highlighthighlight

  • 相对于当前文件夹缓存缩略图和高亮

  • 可配置的根文件夹

  • Dockerfile

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

pycbox-0.0.3.tar.gz (57.5 kB 查看散列)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面