内容管理系统部署笔记

开源、优秀的内容管理系统繁多,有的只有框架没有 UI,有的架构过于复杂,真正能开箱即用很少。下面是在部署一个运行在企业内部办公网 Portal 页面时,对各种 CMS 部署的笔记(最后选择了 Typo3)。

安全多个版本的 PHP (Debian Bookworm)

使用 phpenv 方案较为复杂,实际可以通过添加 Debian PPA 代码仓库,安装多个版本的 PHP。

  • 安装必要软件包
sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2

参考How To Install PHP 8.1 on Debian 12/11/10

Typo3 CMS 安装笔记

需要安装 php-ldap

composer req causal/ig_ldap_sso_auth

安装 Typo3 的 LDAP/SSO 认证扩展,需要安装 php-ldap 包。

apt install -y php-ldap

Publify 安装笔记

Publify 是以 Ruby 语言编写的优秀 CMS 系统。

gem 检索远端上包版本

gem list ^rails$ --remote --all

gem 安装 Ruby 包

gem install nokogiri -v 1.15.6
gem install rails --version 5.2.8.1

更新 RubyGems 到指定版本

gem update --system 3.3.22

安装 Publify

RAILS_ENV=production bundle install --without development test mysql sqlite
rake db:migrate
rake db:seed
rake assets:precompile

注意:上面是已经使用 PostgreSQL 并已经建立了数据库 publify 的情况下。

参考链接

Superdesk 安装笔记

Superdesk 有较多依赖。需要在编译构建时,安装以下软件包。

apt install -y libbz2-dev zlib1g-dev

然后编译安装 Python-3.8。

./configure --prefix=/opt/python38 --enable-optimizations --with-ssl --with-readline
make -j$(nproc)
sudo make install

然后安装 Python-3.8 的一些模组。

cd /opt/python38/bin
python3 -m pip3 install -U pip3
./pip3 install Click requests pyexiv2

前端

需要降级 NODEJS 到 14 lts 版本,以得到前端匹配的 npm 版本。

并需要将 package-lock.json 中的 registry.nodejs.org 更换为 repo.huaweicloud.com/repository/npm,以加快下载速度。

此外,前端构建需要使用 Python2,因此需要安装 Python27。

参考:

Plone 安装笔记

在使用 plone/Installers-UnifiedInstaller 安装 Plone 有诸多要求、依赖。这里加以记录。

libffi-devlibjpeg-devlibxslt1-devlibxslt1.1

这是系统的 foreign function library,外部函数库的开发链接库(头文件和链接库),在后面 pip install python-ldap 过程中,构建出 ldap 的 Python 封装时,要用到 Python 的 _ctypes 模块,而这个模块就需要在编译 Python 时,预先安装 libffi-dev 这个包。

libjpeg-devlibxslt1-devlibxslt1.1 是运行 UnifiedInstaller 时需要的依赖。

sudo apt install -y libffi-dev libjpeg-dev libxslt1-dev libxslt1.1

编译 sslreadline 支持(Debian Bookworm)

,要求 Python 必须有对 ssl 的支持,最好带有 readline 的支持。为此需要在编译 Python38 时,带有对他们两的支持。

sudo apt install libssl-dev libreadline-dev -y
./configure --prefix=/opt/python38 --enable-optimizations --with-ssl --with-readline
make -j$(nproc)
sudo make install

buildout 设置 PyPi 镜像

默认运行 buildout,会使用 pypi.org 并从 files.pythonhosted.org 下载 Python 包,这样速度会很慢且有下载失败问题。为此需要为 buildout 配置 PyPi 镜像。修改 base.cfg 文件,在 [buildout] 小节后加入 index=https://repo.huaweicloud.com/repository/pypi/simple

[buildout]
index=https://repo.huaweicloud.com/repository/pypi/simple
eggs-directory=../buildout-cache/eggs
download-cache=../buildout-cache/downloads
abi-tag-eggs = true

UnifiedInstaller 的 buildout.cfg

UnifiedInstaller 位于 buildout_templates/buildout.cfg,需要在 eggs 中添加如下内容。

eggs =
    Plone
    Pillow
    Products.PluginRegistry
    Products.PluggableAuthService
    Products.LDAPUserFolder
    Products.SimpleUserFolder
    Products.LDAPMultiPlugins
    Products.PloneLDAP

Zope 依赖问题

buildout_templates/buildout.cfg 里,[buildout] 小节的 extends 中引用的 versions.cfg,使用的是 4.8.10 版本的 Zope,由于上面添加的一些 eggs 需要 Zope>=5,会导致安装失败,报出以下错误。

Error: The requirement ('Zope>=5') is not allowed by your [versions] constraint (4.8.10)
Buildout failed. Unable to continue

此时只需在 [buildout] 小节的 extends 中,添加如下 Zopeversions.cfg 即可解决此问题。如下所示。

extends =
    base.cfg
    https://dist.plone.org/release/5.2.14/versions.cfg
    https://zopefoundation.github.io/Zope/releases/5.10/versions.cfg

参考:

参考

Last change: 2024-08-19, commit: c215ff3