Docker 环境
本页涵盖以下环境中使用 LiteHTTPD:
- ols-docker-env(docker-compose 方式)
- OLS 官方 Docker 镜像(
litespeedtech/openlitespeed) - 自定义 Docker 部署
所有方式使用相同的基础镜像:litespeedtech/openlitespeed。主要挑战是 OLS 二进制已内置于镜像中,需要替换或覆盖。
方案 A:自定义 Docker 镜像(推荐)
Section titled “方案 A:自定义 Docker 镜像(推荐)”构建包含打补丁 OLS 二进制和 LiteHTTPD 模块的自定义镜像:
FROM litespeedtech/openlitespeed:1.8.5-lsphp83
# 复制打补丁的二进制和模块COPY openlitespeed-patched /usr/local/lsws/bin/openlitespeedCOPY litehttpd_htaccess.so /usr/local/lsws/modules/COPY litehttpd-confconv /usr/local/lsws/bin/
# 启用模块(仅在 httpd_config.conf 未被 volume 挂载时)RUN if ! grep -q 'litehttpd_htaccess' /usr/local/lsws/conf/httpd_config.conf; then \ printf '\nmodule litehttpd_htaccess {\n ls_enabled 1\n}\n' \ >> /usr/local/lsws/conf/httpd_config.conf; \ fi
# 禁用 OLS 内置升级,防止意外覆盖二进制RUN mv /usr/local/lsws/admin/misc/lsup.sh /usr/local/lsws/admin/misc/lsup.sh.disabled 2>/dev/null || true更新 docker-compose.yml:
services: litespeed: image: your-registry/openlitespeed-litehttpd:1.8.5 # ... 其余配置不变方案 B:Volume 挂载(快速测试)
Section titled “方案 B:Volume 挂载(快速测试)”将打补丁的二进制和模块挂载到原版容器中,无需构建自定义镜像:
services: litespeed: image: litespeedtech/openlitespeed:1.8.5-lsphp83 volumes: - ./lsws/conf:/usr/local/lsws/conf - ./sites:/var/www/vhosts # LiteHTTPD 新增: - ./litehttpd/openlitespeed:/usr/local/lsws/bin/openlitespeed:ro - ./litehttpd/litehttpd_htaccess.so:/usr/local/lsws/modules/litehttpd_htaccess.so:ro在宿主机侧的 ./lsws/conf/httpd_config.conf 中添加模块块:
module litehttpd_htaccess { ls_enabled 1}方案 C:Thin 模式(不替换二进制)
Section titled “方案 C:Thin 模式(不替换二进制)”如果只需要 Thin 模式功能(无 RewriteRule 执行、无 php_value),只挂载模块 .so 即可:
volumes: - ./litehttpd/litehttpd_htaccess.so:/usr/local/lsws/modules/litehttpd_htaccess.so:roDocker 特别注意事项
Section titled “Docker 特别注意事项”容器重启会还原容器内修改
Section titled “容器重启会还原容器内修改”在运行中的容器内所做的修改(如运行 lsup.sh、编辑文件)在重启后丢失。请使用 volume 挂载或自定义镜像实现持久化。
配置 Volume 是持久的
Section titled “配置 Volume 是持久的”如果 ./lsws/conf 从宿主机挂载(ols-docker-env 标准做法),httpd_config.conf 的修改会在容器重启和镜像更新后保留。
固定镜像标签
Section titled “固定镜像标签”当 litespeedtech/openlitespeed 发布新镜像时,不要直接 pull。在 docker-compose.yml 中固定标签,升级前先测试:
image: litespeedtech/openlitespeed:1.8.5-lsphp83 # 固定版本禁用 lsup.sh
Section titled “禁用 lsup.sh”原版镜像包含 /usr/local/lsws/admin/misc/lsup.sh。通过 WebAdmin 控制台运行它会在容器内下载并替换 OLS 二进制。方案 B 中 :ro 标志可防止覆盖。方案 A 中请在 Dockerfile 中移除该脚本。
禁用 autoLoadHtaccess
Section titled “禁用 autoLoadHtaccess”如果挂载的配置中有 OLS 的 autoLoadHtaccess 1,需禁用以避免双重处理:
sed -i 's/autoLoadHtaccess.*1/autoLoadHtaccess 0/' ./lsws/conf/vhosts/*/vhost.conf# 进入容器docker exec -it litespeed bash
echo 'Header set X-LiteHTTPD "active"' > /var/www/vhosts/localhost/html/.htaccesscurl -sI http://localhost:8088/ | grep X-LiteHTTPD# 预期:X-LiteHTTPD: active
# 验证补丁(Full 模式)strings /usr/local/lsws/bin/openlitespeed | grep -q 'set_php_config_value' && echo "patch 0001 OK"strings /usr/local/lsws/bin/openlitespeed | grep -q 'parse_rewrite_rules' && echo "patch 0002 OK"strings /usr/local/lsws/bin/openlitespeed | grep -q 'readApacheConf' && echo "patch 0003 OK"