赞片CMSDocker

chinaz
chinaz 正式会员超兽战士
发布于 2026-10-07 12:39 ·1 浏览 ·0 回复

照这篇做完,你能在一台干净的 Linux 服务器上用 Docker 跑起赞片CMS,不用手动编译 PHP、不用单独装 Nginx 和 MySQL,重装系统也不怕丢数据。

赞片CMS 官方没有提供 Docker 镜像,所以要自己写一个 Dockerfile 把 PHP 环境打进去,再用 docker compose 把 Nginx、PHP、MySQL 三个容器串起来。下面以 CentOS 7 / Ubuntu 22.04 通用流程演示。

第一步:确认 Docker 环境

这一步要确认服务器上装了 Docker 24 以上版本和 compose v2 插件,装完才能用 docker compose 命令。执行:

docker -v
docker compose version

如果第二条报错,说明只有老版 docker-compose(带横杠)。建议按官方源重装:

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

注意:不要用系统自带的 yum install docker,版本通常在 1.13 左右,不支持 compose v2 的新语法。

第二步:建目录、放源码

这一步把项目文件和配置分开放,方便以后单独备份源码。执行:

mkdir -p /opt/zanpian/{php,nginx,www}
cd /opt/zanpian

从你购买或下载的渠道拿到赞片CMS 源码包,解压到 /opt/zanpian/www 目录下,确认该目录里能直接看到 index.php、install 文件夹(而不是多套了一层压缩包目录)。

注意:来源不明的源码包常带加密后门文件(如 *.php 里只有一行 eval(...)),上线前务必扫一遍,只搭建你有权发布的内容。

第三步:写 PHP 的 Dockerfile

这一步构建一个带 MySQL 扩展和图片处理扩展的 PHP 7.4 镜像。新建 /opt/zanpian/php/Dockerfile:

FROM php:7.4-fpm
RUN apt-get update && apt-get install -y \
    libfreetype6-dev libjpeg62-turbo-dev libpng-dev libzip-dev unzip \
 && docker-php-ext-configure gd --with-freetype --with-jpeg \
 && docker-php-ext-install -j$(nproc) gd pdo_mysql mysqli zip
RUN echo "date.timezone=Asia/Shanghai" > /usr/local/etc/php/conf.d/timezone.ini

注意:必须用 PHP 7.4。赞片CMS 大量使用旧语法,换 php:8.2-fpm 会直接白屏或报 Deprecated 错误。

第四步:写 Nginx 配置

这一步解决「除首页外全部 404」的问题,因为赞片CMS 基于 ThinkPHP,需要伪静态。新建 /opt/zanpian/nginx/default.conf:

server {
    listen 80;
    server_name _;
    root /var/www/html;
    index index.php index.html;

    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php?s=$1 last;
        }
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
        include fastcgi_params;
    }
}

第五步:写 docker-compose.yml 并启动

这一步把三个容器编好队,一条命令全部拉起来。新建 /opt/zanpian/docker-compose.yml:

services:
  web:
    image: nginx:1.25-alpine
    ports: ["8080:80"]
    volumes:
      - ./www:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
    depends_on: [php]
  php:
    build: ./php
    volumes:
      - ./www:/var/www/html
    depends_on: [mysql]
  mysql:
    image: mysql:5.7
    command: --sql_mode="" --character-set-server=utf8mb4
    environment:
      MYSQL_ROOT_PASSWORD: ZanPian#2024
      MYSQL_DATABASE: zanpian
    volumes:
      - dbdata:/var/lib/mysql
volumes:
  dbdata:

然后启动:

cd /opt/zanpian
docker compose up -d --build
docker compose ps

三个容器都是 running 即成功。

注意:数据库主机名必须填容器服务名 mysql,填 127.0.0.1 一定连不上。MySQL 密码里的 # 在 yml 中无需转义,但在命令行用 -p 时要加引号。

第六步:跑安装向导

这一步完成建表和初始账号创建。浏览器打开 http://服务器IP:8080/install/,依次填写:

  • 数据库地址:mysql,端口 3306
  • 数据库名:zanpian,用户名 root,密码 ZanPian#2024
  • 管理员账号自行设置

装完把 ./www/install 整个目录删掉,再给上传目录放权:

rm -rf /opt/zanpian/www/install
docker compose exec php chown -R www-data:www-data /var/www/html

第七步:备份与收尾

这一步保证数据可恢复,并降低被扫后台的风险。备份数据库:

docker compose exec mysql mysqldump -uroot -p'ZanPian#2024' zanpian > /root/zanpian-$(date +%F).sql

同时建议:修改后台入口文件名为随机字符串;不要把 8080 端口直接暴露公网,前面套一层带 HTTPS 的反代;定期检查 docker compose logs -f php 里的异常报错。

小结

  • 赞片CMS 无官方镜像,用「Nginx + php:7.4-fpm + mysql:5.7」三容器自建最省事。
  • PHP 必须 7.4,MySQL 必须关掉 ONLY_FULL_GROUP_BY,否则必然报错。
  • 数据库地址写 mysql(服务名),不是 127.0.0.1。
  • 必须配伪静态 rewrite,否则内页全部 404。
  • dbdata 数据卷是唯一的数据本体,删容器可以,别删卷。
  • 装完立刻删 install 目录、改后台路径、加 HTTPS。
版权声明:本文来自 GJ站长论坛《赞片CMSDocker》
原文链接:https://www.gj0.com/thread-284.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~