针对低功耗优化的CMS
项目描述
目标
一个完全功能化的CMS,针对低功耗优化。
基准测试
描述
ColdCMS是一个基于Django和Wagtail CMS以及Bulma CSS框架的Django项目。
管理员可以通过直观且用户友好的界面编辑网站。预先设计了不同类型的页面,让您无需花费数小时即可拥有一个看起来很棒的网站。
ColdCMS特别设计用于那些希望减少其使用数字技术对环境的影响的人。
客户端网站由静态页面组成,使用Wagtail bakery构建。网站页面在必要时生成和更新(例如,当管理员发布或修改内容时)。
在其他优化措施中,CSS文件的大小得到了缩减,并使用PurgeCSS和clean-css移除了未使用的CSS代码。
ColdCMS支持Python >= 3.6。
如何使用ColdCMS?
您有权访问ColdCMS实例,并希望创建一个网站
您可以在这里找到用户文档
您想安装ColdCMS
您有两个选择:Docker安装或手动安装。
Docker安装
您需要docker-compose和运行中的Docker守护进程。
我们提供了一个示例docker/docker-compose.yml文件。请随意根据您的需求进行修改。
cd docker && docker-compose up
以下是一些您可能想要更改的环境变量
POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_DB,请参阅https://github.com/docker-library/docs/blob/master/postgres/README.md#environment-variables
DB_URL,数据库连接URL,请参阅https://github.com/jacobian/dj-database-url#url-schema
SECRET_KEY,Django SECRET_KEY,它应该是一个40字符长的随机生成的私有字符串
ALLOWED_HOSTS,允许服务您应用程序的主机列表,对应于Django ALLOWED_HOSTS
然后您可以创建一个管理员用户,该用户将有权访问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
您可以使用多个项目来完成此操作
uwsgi(我们推荐的方法)
等等。
您需要将一些环境变量传递给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. 安装依赖项
安装 libjpeg 和 zlib,用于通过 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 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 1895476c6305bef3b036320eef775e3721560536c5bdde6307b7db180ce58989 |
|
MD5 | 0b2c0870a5b383b36f0448ec38d386bf |
|
BLAKE2b-256 | 6a67869cf9a33d4a8e269d2baf5a34fd3bf10ecfa4107e4354424787e2fca781 |