文章最后更新时间:
Docker搭建一个苹果CMS内容管理系统
项目简介
苹果CMS,全名Apple Content Management System,是一款以PHP + MySQL架构为基础的内容管理系统(CMS),适用于视频类、文章类、图片类等多种类型的网站建设。它拥有强大的数据采集、会员管理、自定义模型、模板标签等功能,让网站管理变得更加简单、高效。
数据采集:
苹果CMS拥有强大的数据采集功能,可以快速地从各种资源站采集内容,白名单和黑名单功能可以有效地防止恶意内容的采集。
会员管理:
完全的前后台会员管理系统,包括会员注册、登录、修改资料、消费记录、积分充值、积分等级等功能都一应俱全。
自定义模型:
苹果CMS可以自定义字段和分类,模板方式发布,可以构建无数个独立的内容模型,极大地丰富了网站的内容。
模板标签:
拥有丰富的模板标签库,任意组合,即使是零基础的用户也可以快速上手,轻松制作出自己满意的网站。苹果CMS近年来凭借其稳定的性能、便捷的管理和强大的扩展能力,赢得了用户的广泛好评。不论是个人站长,还是企业用户,都可以通过苹果CMS快速构建出功能强大、易于管理的网站。
准备条件
-
一台服务器
阿里云,腾讯云,华为云都可以,注意如果是不好的影视最好不要弄,要弄请去外网 ,请相信中国警察是能找到你的,切记不要做违法的事
-
本项目的github
https://github.com/magicblack/maccms10
-
官网
https://www.maccms.la/
1、Docker环境部署
Centos安装Docker和Docker-compose:https://docs.docker.com/engine/install/centos/
Ubuntu安装Docker和Docker-compose:https://docs.docker.com/engine/install/ubuntu/
# 以下使用Ubuntu安装Docker和Docker-compose(其实就是从官网复制的)
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 安装docker(默认最新)
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 下载docker-compose 这个是镜像下载的,官网实在是太慢了
curl -SL https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 注意:
# 如果执行docker-compose --version出现-bash: /usr/local/bin/docker-compose: Permission denied
# 则执行
sudo chmod +x /usr/local/bin/docker-compose
# 查询环境是否部署成功
docker -v
docker-compose -v
2、部署MySQL镜像
# 下载MySQL镜像
docker pull mysql:5.7
# 初始化目录,后续MySQL的文件都会放在这里
mkdir -p /opt/pgcms/mysql
# 进入/opt/pgcms/mysql
cd /opt/pgcms/mysql
# 运行空的MySQL容器,注意MySQL密码需要自己设置一下MYSQL_ROOT_PASSWORD
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# 将容器内的文件拷贝出来,防止运行容器后文件被覆盖的问题
docker cp mysql:/etc/mysql /opt/pgcms/mysql/
# 移动文件并改名
mv mysql conf
docker cp mysql:/var/lib/mysql /opt/pgcms/mysql/
mv mysql data
# 删除MySQL容器
docker rm -f mysql
# 重新启动MySQL容器
docker run --name mysql \
-e TZ=Asia/Shanghai \
-p 3306:3306 \
--restart always \
-v /opt/pgcms/mysql/data:/var/lib/mysql \
-v /opt/pgcms/mysql/logs:/var/log/mysql \
-v /opt/pgcms/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
# 查询MySQL容器运行情况
docker ps
3、部署Nginx镜像
# 下载Nginx镜像
docker pull nginx:1.22.0
# 初始化目录
mkdir -p /opt/pgcms/nginx/ssl
# 进入/opt/pgcms/nginx
cd /opt/pgcms/nginx
# 裸启动
docker run -d --name nginx nginx:1.22.0
# 拷贝文件
docker cp nginx:/etc/nginx /opt/pgcms/nginx
mv nginx conf
docker cp nginx:/usr/share/nginx /opt/pgcms/nginx
mv nginx webs
# 删除裸启的容器
docker rm -f nginx
# 正式启动容器
docker run --name nginx \
-e TZ=Asia/Shanghai \
-p 80:80 \
-p 443:443 \
--restart always \
-v /opt/pgcms/nginx/conf/:/etc/nginx \
-v /opt/pgcms/nginx/webs/:/usr/share/nginx \
-v /opt/pgcms/nginx/logs/:/var/log/nginx \
-v /opt/pgcms/nginx/ssl/:/ssl \
-d nginx:1.22.0
# 查询MySQL容器运行情况
docker ps
4、部署PHP镜像
# 下载镜像
docker pull php:7.2-fpm
# 初始化目录
mkdir -p /opt/pgcms/php
# 进入/opt/pgcms/php
cd /opt/pgcms/php
# 裸启容器
docker run -d --name php php:7.2-fpm
# 拷贝配置文件
docker cp php:/usr/local/etc/php /opt/pgcms/php/
mv php conf
# 删除裸启的容器
docker rm -f php
# 正式启动容器
docker run -d --name php \
-e TZ=Asia/Shanghai \
--restart always \
-p 9000:9000 \
-v /opt/pgcms/nginx/webs:/var/www/html \
-v /opt/pgcms/php/conf:/usr/local/etc/php \
php:7.2-fpm
现在Docker已经把LNMP环境部署完成了
4、maccms页面显示
可以在线下载cms源码,同时也可以上传cms源码,这个看自己
# 下载或者上传的是压缩压缩文件并且是.zip格式,同时服务器没有安装对应的依赖就需要安装一下
apt install unzip
# 移动到目标目录(/opt/pgcms/nginx/webs),并解压文件到该目录
cd /opt/pgcms/nginx/webs
# 下载cms源码
wget https://www.maccms.la/down/maccms10.zip
# 解压到maccms文件下
unzip maccms10.zip -d maccms
# PHP需要放开文件权限,这里权限直接给到777
chmod -R 777 maccms
5、配置Nginx
# 移动到Nginx配置文件目录下
cd /opt/pgcms/nginx/conf/conf.d
# 我个人习惯每个项目都单独写个配置文件,这里创建maccms.conf,将配置写道该文件中,如下图所示
vim maccms.conf
# 为了不影响我们效果把Nginx自带的配置文件先关闭
mv default.conf default.conf.bak
# 再次重新运行Ngixn容器
docker restart nginx
5.1、maccms.conf配置文件内容
server {
listen 80;
listen [::]:80;
server_name 47.117.160.102;
location / {
# w伪静态
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^/admin.php(.*)$ /admin.php?s=$1 last;
rewrite ^/api.php(.*)$ /api.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
root /usr/share/nginx/maccms;
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 47.117.160.102:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME /var/www/html/maccms/$fastcgi_script_name;
include fastcgi_params;
}
}
6、补齐以上缺漏
6.1、PHP扩展
上述步骤执行成功后,浏览器访问服务器IP就可以直接看到Maccms页面了,如果访问后仍然是nginx欢迎页可能是浏览器缓存的问题,Ctrl+F5深度刷新一下就好了,打开后的页面如图所示
报错,php环境还缺少了两个
上面已经把最基本的PHP容器运行起来了,接下来就进入容器启动扩展
# 进入容器
docker exec -it php /bin/bash
# 首次进入容器,先更新一下源,防止接下来下载时找不到依赖
apt update
# PHP镜像的制作者已经将扩展都继承到镜像中了,这里执行命令解压扩展包
docker-php-source extract
# 首先安装zip扩展,先将ZIP需要的依赖库安装一下
apt install -y --no-install-recommends zlib1g-dev && apt-get install -y --no-install-recommends libzip-dev
# 安装zip扩展,这个扩展不安装无法安装程序
docker-php-ext-install zip
# 接下来安装GD扩展,先将GD需要的依赖库安装一下
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
# 移动到GD源码目录
cd /usr/src/php/ext/gd
# 编译GD源码
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
# 安装GD扩展,这个扩展不安装图形验证码无法加载
docker-php-ext-install gd
# 最后安装pdo_mysql扩展,这个扩展直接安装即可,不安装该扩展将无法访问数据库
docker-php-ext-install pdo_mysql
# 到此为止需要的扩展都已经安装完毕,进行一下善后工作
# 收起解压好的扩展文件
docker-php-source delete
# 退出容器,并重启PHP容器
exit
docker restart php
这个时候在刷新浏览器页面就可以了
6.2、MySQL新建数据库
# 进入MySQL容器
docker exec -it mysql bash
# 连接到MySQL服务器
# 注意这将提示您输入MySQL的root用户密码。输入密码后,您将进入MySQL的命令行界面。
mysql -uroot -p
# 创建数据库
CREATE DATABASE maccms;
# 退出MySQL命令行界面
exit;
# 退出容器的Shell环境
exit
# 或者直接一行命令
docker exec -it mysql mysql -uroot -p123456 -e "CREATE DATABASE maccms;"
同时我们可以使用Navicat查看我们刚才创建的数据库
接下来配置数据库连接信息,可以使用绿色的按钮测试连接是否成功,配置完成后就点击安装
不出意外的话这一步就直接安装成功了,显示了短暂几秒的安装成功提示后会跳转到管理页面,由于安全原因管理页面会拒绝访问,如下图所示
这个时候就可以先开心一下了,后面的操作已经很好弄了,基本和宝塔一样了
# 进入maccms程序目录
cd /opt/pgcms/nginx/webs/maccms
# 给admin.php重命名为yanshi.php
mv admin.php yanshi.php
# 编辑Nginx配置文件,将配置文件中的admin.php修改为刚刚设置的yanshi.php
# 一共有两处需要修改,两处都在同一行
vim /opt/pgcms/nginx/conf/conf.d/maccms.conf
# 重启Nginx容器使配置生效
docker restart nginx
这里我将文件名修改为yanshi.php
,然后修改URL路径成功访问到了管理地址
6.3、Nginx配置域名访问
修改maccms.conf
文件
server {
listen 80;
listen [::]:80;
server_name 47.117.160.102;
location / {
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^/yanshi.php(.*)$ /yanshi.php?s=$1 last;
rewrite ^/api.php(.*)$ /api.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
root /usr/share/nginx/maccms;
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass 47.117.160.102:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME /var/www/html/maccms/$fastcgi_script_name;
include fastcgi_params;
}
}
# 可以直接使用这段
server {
# 监听 443端口
listen 443 ssl;
server_name lzphy.top;
# 证书存放目录
ssl_certificate /ssl/www.lzphy.top.pem;
ssl_certificate_key /ssl/www.lzphy.top.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^/yanshi.php(.*)$ /yanshi.php?s=$1 last;
rewrite ^/api.php(.*)$ /api.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
root /usr/share/nginx/maccms;
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass lzphy.top:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME /var/www/html/maccms/$fastcgi_script_name;
include fastcgi_params;
}
}
这个时候可以通过IP访问,同时也可以通过域名访问
IP访问
域名访问
建议有域名的情况下,最好删除IP访问,毕竟要做到物尽其用嘛
# 可以直接使用这段
server {
# 监听 443端口
listen 443 ssl;
server_name lzphy.top;
# 证书存放目录
ssl_certificate /ssl/www.lzphy.top.pem;
ssl_certificate_key /ssl/www.lzphy.top.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^/yanshi.php(.*)$ /yanshi.php?s=$1 last;
rewrite ^/api.php(.*)$ /api.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
root /usr/share/nginx/maccms;
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass lzphy.top:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME /var/www/html/maccms/$fastcgi_script_name;
include fastcgi_params;
}
}
每次修改完配置后要重启Nginx容器
docker restart nginx
这个时候我们就只能通过域名访问,不能使用IP访问
7、配置电影先生模板
现在的苹果cms已经不提供前端页面了,如下图所示,所以我们需要自己找模板文件上传到服务器上使用
将准备好的电影先生模板上传到服务器的/opt/pgcms/nginx/webs/maccms/template
目录中并进行解压
模板准备完成后,打开后台管理页面,在【系统】【网站参数配置】中修改模板为DYXS2,如图所示
然后在【首页】【自定义菜单配置】中添加电影先生模板的管理地址,然后下滑点击保存(不知道为什么我的保存按钮一直被藏在页面底部,需要下滑才能看见),刷新页面后就可以看到左侧多了个菜单,点进去后就可以管理模板了
电影先生2.0,/yanshi.php/admin/Dyxs2/dyxs2set
上面是自定义菜单的内容,配置完成后效果应该如下图所示,如果点开说未找到自定义页面,不要慌,我这也报过错可能是因为缓存问题,刷新页面或者关浏览器重新打开就好了
资源获取
下载地址:夸克网盘
本文链接:https://lzphy.top/992/
暂无评论内容