跳转到主要内容

针对低功耗优化的CMS

项目描述

ColdCMS logo https://badge.fury.io/py/coldcms.svg https://readthedocs.org/projects/pip/badge/ https://gitlab.com/hashbangfr/coldcms/badges/master/pipeline.svg https://gitlab.com/hashbangfr/coldcms/badges/master/coverage.svg

目标

一个完全功能化的CMS,针对低功耗优化。

阅读关于此项目的博客文章

基准测试

Coldcms的基准测试详情

描述

ColdCMS是一个基于DjangoWagtail CMS以及Bulma CSS框架的Django项目。

管理员可以通过直观且用户友好的界面编辑网站。预先设计了不同类型的页面,让您无需花费数小时即可拥有一个看起来很棒的网站。

ColdCMS特别设计用于那些希望减少其使用数字技术对环境的影响的人。

客户端网站由静态页面组成,使用Wagtail bakery构建。网站页面在必要时生成和更新(例如,当管理员发布或修改内容时)。

在其他优化措施中,CSS文件的大小得到了缩减,并使用PurgeCSSclean-css移除了未使用的CSS代码。

ColdCMS支持Python >= 3.6。

如何使用ColdCMS?

您有权访问ColdCMS实例,并希望创建一个网站

您可以在这里找到用户文档

您想安装ColdCMS

您有两个选择:Docker安装或手动安装。

Docker安装

您需要docker-compose和运行中的Docker守护进程。

我们提供了一个示例docker/docker-compose.yml文件。请随意根据您的需求进行修改。

cd docker && docker-compose up

以下是一些您可能想要更改的环境变量

然后您可以创建一个管理员用户,该用户将有权访问http://localhost/admin

docker exec -it docker_backend_1 python3 manage.py createsuperuser

手动安装

1. 选择数据库

我们建议使用PostgreSQL,但您也可以使用默认的SQLite(无需设置)。如果您选择使用PostgreSQL,请注意您使用的宿主、端口、数据库名、用户和密码。

2. 安装ColdCMS的后端部分

后端用于修改您的网站,位于https://your-site.tld/admin

在此处下载最新的版本:https://gitlab.com/hashbangfr/coldcms/-/releases(或按需克隆项目)

然后您需要启动位于此处的wsgi应用程序:https://gitlab.com/hashbangfr/coldcms/-/blob/master/coldcms/wsgi.py

您可以使用多个项目来完成此操作

您需要将一些环境变量传递给wsgi进程(例如uwsgi),以便应用程序能够按预期工作

  • DB_URL=postgres://coldcms:coldcms@db_host:5432/coldcms # 根据您的设置进行调整,如果您选择使用SQLite,则可以省略此设置

  • BUILD_DIR=/srv/build # 生成的网站将放置在此目录下,该目录将由您的Web服务器(例如nginx)提供

  • STATIC_ROOT=/srv/build/static/ # Django STATIC_ROOT 此目录也需要由您的文件服务器(例如nginx)提供服务

  • SECRET_KEY=CHANGE_ME # Django SECRET_KEY 它应该是一个40字符长的随机生成的私有字符串

  • ALLOWED_HOSTS=localhost,127.0.0.1,your-domain.tld,允许服务您应用程序的主机列表,对应于Django ALLOWED_HOSTS

这是一个使用 uwsgi 的工作示例,应用程序位于 /srv/app 目录下,并使用 SQLite

[uwsgi]
socket = 0.0.0.0:8000
chdir = /srv/app/
module = coldcms.wsgi:application
master = true
processes = 4
threads = 2
uid = coldcms
gid = coldcms
buffer-size = 65535
env = BUILD_DIR=/srv/build
env = STATIC_ROOT=/srv/build/static/
env = SECRET_KEY=something_big_and_random
3. 配置 Nginx 与后端协同工作

Nginx 充当一个文件服务器,为后端生成的静态网站提供服务。只要它能有效地

  • 提供文件服务(HTML / 图片 / 资产等),您可以选择任何类型的文件服务器。

  • 将请求代理到 /admin,指向实际的 ColdCMS 后端(在第二步中设置)

以下是功能性的 nginx 配置示例:[链接](https://gitlab.com/hashbangfr/coldcms/-/blob/manual-install-doc/docker/nginx/nginx.conf)

需要提供 4 个位置服务

  • /admin -> 代理到 Python ColdCMS 后端(第二步)

  • / -> 服务器由后端生成的 HTML 文件(见第二步中的 BUILD_DIR

  • /media -> 服务器由管理员上传的媒体文件(对应于 $BUILD_DIR/media

  • /static -> 服务器静态文件(见第二步中的 STATIC_ROOT

请随意根据您的需求进行调整

您是开发者,并希望快速查看

注意:此配置仅在 Linux 环境中进行过测试。

使用 pypi 安装 ColdCMS

pip install coldcms

运行快速启动命令

python -m coldcms

在运行此命令之前,您可以设置以下环境变量

  • RUN_DJANGO_MIGRATION=0:不运行迁移

  • SETUP_INITIAL_DATA=0:不设置初始数据,如果您想保留冷cms数据库中已有的数据

  • COLLECT_STATIC=0:不收集静态文件。如果您第一次启动 ColdCMS,不要将该变量设置为 0。

  • CREATE_SUPERUSER=0:不创建新的超级用户(您可以在同一时间内拥有多个超级用户,但不能使用相同的用户名或电子邮件)

  • BUILD_ASSETS=0:不构建构建资产。如果您第一次启动 ColdCMS,不要将该变量设置为 0。

  • BUILD_STATIC=0:不构建静态文件。如果您已将 SETUP_INITIAL_DATA 设置为 0,也不要将该变量设置为 0。

示例:设置 CREATE_SUPERUSER=0 python -m coldcms 将运行迁移并设置一些新的初始数据,但不会创建新的超级用户。

您是开发者,并希望为 ColdCMS 做出贡献

克隆 GitLab 仓库,并阅读下面的 Dev 部分,以安装 ColdCMS 开发环境。

遵循[贡献指南](https://gitlab.com/hashbangfr/coldcms/-/blob/master/CONTRIBUTING.rst)

Dev

注意:此配置仅在 Linux 环境中进行过测试。

1. 安装依赖项

安装 libjpegzlib,用于通过 Pillow 库处理图像。如果您使用的是基于 Debian 的发行版,请使用以下命令

sudo apt-get install zlib1g-dev
sudo apt-get install libjpeg-dev

此外,请安装 PurgeCSS 和 clean-css,以减小 CSS 文件的大小

npm install -g purgecss@2.1.0 clean-css-cli@4.3.0

并且为了继续进行 JavaScript,请安装静态依赖

(cd coldcms/static/ && npm i --save-dev)

我们使用 sass 将 sass 文件转换为 CSS。确保从 sassc 包中的 sass 二进制文件在您的 $PATH 中存在。在基于 Debian 的发行版中,请运行以下命令

sudo apt-get install sassc
sudo ln -s /usr/bin/sassc /usr/bin/sass # might be necessary if /usr/bin/sass doesn't exist after the previous command

最后,运行

pip install -r requirements_dev.txt

2. 创建数据库

默认情况下,./manage.py migrate 将创建一个名为 coldcms 的 sqlite3 数据库。

  • 如果您想使用不同的数据库引擎,可以在环境变量 DB_URL 中指定它。确保您有您要使用的引擎的正确数据库驱动程序。

  • 如果您想为您的sqlite数据库使用不同的名称,您可以在环境变量DB_NAME中指定它(对于某些引擎来说是无用的,因为它已在URL中直接指定 - 见下表)。

Django文档中建议,如果您对数据库不熟悉,或者只是想尝试ColdCMS,请使用默认的sqlite3数据库,它包含在Python中,因此您不需要安装任何其他支持数据库的软件。然而,当您开始您的第一个实际项目时,您可能希望使用像PostgreSQL这样的更可扩展的数据库,以避免将来数据库切换的麻烦。

引擎

DB_URL

PostgreSQL

postgres://USER:PASSWORD@HOST:PORT/NAME

PostGIS

postgis://USER:PASSWORD@HOST:PORT/NAME

MSSQL

mssql://USER:PASSWORD@HOST:PORT/NAME

MySQL

mysql://USER:PASSWORD@HOST:PORT/NAME

MySQL (GIS)

mysqlgis://USER:PASSWORD@HOST:PORT/NAME

SQLite

sqlite:///PATH

SpatiaLite

spatialite:///PATH

Oracle

oracle://USER:PASSWORD@HOST:PORT/NAME

Oracle (GIS)

oraclegis://USER:PASSWORD@HOST:PORT/NAME

Redshift

redshift://USER:PASSWORD@HOST:PORT/NAME

将PATH、USER、PASSWORD、HOST、PORT和NAME替换为正确的值。

来源

例如,如果您想使用PostgreSQL

systemctl status postgresql # make sure postgresql is running
createdb coldcms # create the coldcms postgres database
sudo -u postgres psql
CREATE USER username PASSWORD 'password';
ALTER ROLE username WITH SUPERUSER;
\q
export DB_URL="postgres://username:password@localhost:5432/coldcms"

3. 启动开发服务器

./manage.py migrate
./manage.py collectstatic
./manage.py compilemessages
./manage.py createsuperuser
./manage.py setup_initial_data # optional - loads data of a basic home page
./manage.py runserver

如果collectstatic不起作用,请尝试

cd coldcms/static && npm i
cd ../.. && ./manage.py assets build

ColdCMS的自定义主题?

您可以使用自己的主题覆盖coldcms样式。

您可以使用以下命令创建主题

./manage.py collecttheme <theme>

这将创建一个位于coldcms根目录下的theme目录。您也可以在任何您想要的地方创建此目录。此目录必须具有以下结构

<theme>
├── static
│   ├── scss
│   │   └── <theme>.scss
|   |   └── theme_variables.scss
│   └── svg
└── templates

您必须设置主题名称和主题目录作为环境变量

  • THEME用于主题名称

  • THEME_DIR用于主题目录的路径

还有一个自定义主题路径的选项

./manage.py collecttheme <theme> --directory=<path>

要覆盖特定模板,在您的主题的模板目录中添加目录

要覆盖特定模板文件,在您的主题的“templates”文件夹中,您需要添加一个与包含模板文件的原始文件夹同名的文件夹。然后您必须创建一个与该文件同名的模板文件。

示例

原始结构 :

generic_page <app>
└── templates
    └── generic_page
        └── generic_page.html

在您的主题中 :

<theme>
└── templates
    └── generic_page
        └── generic_page.html

最后,为了正确应用额外费用,您需要定义您主题的名称和路径。在settings/base.py文件中提供了用于此目的的全局变量“THEME”和“THEME_DIR”。如果您不想修改settings.py文件,您可以使用终端定义这些变量

export THEME=<theme>
export THEME_DIR=<path theme>

项目详情


下载文件

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

源分布

coldcms-0.2.10.tar.gz (5.1 MB 查看散列值)

上传时间

由以下支持