在进行任何代码层面的精简操作前,必须做好数据保护工作,防止因误操作导致网站无法访问。请直接执行以下命令进行全站备份。
假设你的网站根目录为 /www/wwwroot/maccms,请使用 SSH 连接服务器并执行:
```bash cd /www/wwwroot tar -zcf maccms_backup_$(date +%Y%m%d).tar.gz maccms ```执行完毕后,使用 ls -l 命令确认备份文件已生成。建议将此压缩包下载到本地后再进行后续操作。
苹果CMS v10 基于 ThinkPHP 5 框架,入口文件 public/index.php 是请求的第一站。默认配置中包含了一些开发环境下的检测机制,生产环境必须关闭。
请编辑 public/index.php 文件:
```bash vi /www/wwwroot/maccms/public/index.php ```找到代码行 define('APP_DEBUG', true);,将其修改为:
```php define('APP_DEBUG', false); ```同时,在该文件顶部添加以下代码,严格限制请求方式并隐藏 PHP 版本号,减少不必要的头部信息传输:
```php if (!in_array($_SERVER['REQUEST_METHOD'], ['GET', 'POST'])) { header('HTTP/1.1 403 Forbidden'); exit; } header('X-Powered-By: MacCMS'); ```保存并退出。这一步能关闭框架的详细错误日志显示(避免泄露路径),并减少 HTTP 响应头的大小。
数据库连接池的设置直接影响响应速度。编辑配置文件 application/database.php:
```bash vi /www/wwwroot/maccms/application/database.php ```将以下参数调整为生产环境最优解。请注意保留原有的账号密码,仅修改连接参数:
```php // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 如果数据库在本地,使用 IP 127.0.0.1 比 localhost 解析更快 // 数据库名 'database' => '你的数据库名', // 用户名 'username' => '你的数据库用户名', // 密码 'password' => '你的数据库密码', // 端口 'hostport' => '3306', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => 'mac_', // 数据库调试模式 'debug' => false, // 数据库部署方式:0 集中式(单一服务器),1 分散式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => false, // 数据集返回类型 'resultset_type' => 'array', // 自动写入时间戳字段 'auto_timestamp' => true, // 断线重连 'break_reconnect' => true, ```重点修改项:hostname 改为 IP 地址,break_reconnect 开启为 true,debug 关闭为 false。这能有效避免数据库频繁握手造成的延迟。
苹果CMS 默认使用文件缓存,高并发下 IO 压力大。开启 Redis 缓存可显著降低数据库负载。首先确保服务器已安装 Redis 和 PHP 的 Redis 扩展。
安装 Redis 扩展命令(CentOS 为例):
```bash yum install php-pecl-redis -y systemctl restart php-fpm ```接着修改缓存配置文件 application/extra/cache.php(如果没有该文件,请新建):
```bash vi /www/wwwroot/maccms/application/extra/cache.php ```输入以下完整配置内容:
```php 'Redis', // 缓存保存目录 'path' => '', // 缓存前缀 'prefix' => 'mac_', // 缓存有效期 0表示永久缓存 'expire' => 0, // Redis 主机 'host' => '127.0.0.1', // Redis 端口 'port' => 6379, // Redis 密码,如果你的 Redis 没设密码留空即可 'password' => '', // 缓存连接超时时间 'timeout' => 3600, // Redis 库序号 'select' => 0, ]; ```保存后,重启 PHP-FPM 服务使配置生效:
```bash systemctl restart php-fpm ```前端资源的体积是加载速度的关键。我们需要精简模板中的无用代码并开启压缩。
进入模板目录 /www/wwwroot/maccms/template/default/html/。苹果CMS 模板引擎支持在运行时解析,我们可以通过修改配置开启 HTML 压缩。
编辑 application/config.php:
```bash vi /www/wwwroot/maccms/application/config.php ```找到 'html_compress' => false,,修改为:
```php 'html_compress' => true, ```视频网站图片多,必须实施懒加载。打开列表页模板,通常是 index.html 或 vod.html。
找到图片输出标签,一般形式为:
```html将其修改为懒加载标准格式(需确保模板已引入 jQuery 或原生 JS):
```html在模板底部的 footer.html 或公共 JS 文件中添加原生 JS 懒加载脚本,无需引入额外插件:
```javascript ```苹果CMS 部分模板默认引入了 FontAwesome 等庞大的字体库。检查 template/default/html/public/head.html。
如果发现如下代码:
```html ```建议直接删除,或者仅保留网站实际用到的 CSS 类。对于视频站,尽量使用 SVG 图片代替图标,彻底消除字体文件加载阻塞。
长期运行会导致垃圾数据堆积,定期清理 SQL 日志和采集日志能保持查询效率。
通过 phpMyAdmin 或 SSH 登录 MySQL,执行以下 SQL 语句:
```sql TRUNCATE TABLE mac_collect; TRUNCATE TABLE mac_error; OPTIMIZE TABLE mac_collect, mac_error; ```这会清空采集日志和错误日志,并重建表索引。
虽然开启了 Redis,但 runtime 目录下仍会生成部分临时文件。编写一个 Shell 脚本进行定期清理。
创建脚本文件:
```bash vi /www/wwwroot/clean_maccms.sh ```输入以下内容:
```bash !/bin/bash rmfind /www/wwwroot/maccms/runtime/temp/ -type f -mtime +7 -exec rm -f {} \; rmfind /www/wwwroot/maccms/runtime/log/ -type f -mtime +7 -exec rm -f {} \; echo "Cleaned at $(date)" >> /var/log/maccms_clean.log ```赋予执行权限并加入 crontab:
```bash chmod +x /www/wwwroot/clean_maccms.sh crontab -e ```添加一行定时任务(每周日凌晨 3 点执行):
```bash 0 3 0 /www/wwwroot/clean_maccms.sh ```在 PHP 处理之前,利用 Nginx 的 Gzip 压缩和静态资源缓存能极大提升传输速度。
编辑网站对应的 Nginx 配置文件:
```bash vi /www/server/panel/vhost/nginx/你的域名.conf ``>在 server { ... } 花括号内添加或修改以下配置:
```nginx 开启 Gzip 压缩 gzip on; gzip_vary on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 6; gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/x-javascript application/xml; gzip_disable "MSIE [1-6]\."; 静态资源缓存设置 location ~ \.(jpg|jpeg|gif|png|css|js|ico|woff|woff2)$ { expires 30d; access_log off; valid_referers none blocked yourdomain.com; if ($invalid_referer) { return 403; } } ```配置完成后,重载 Nginx:
```bash nginx -t systemctl reload nginx ```以上配置将开启高效的 Gzip 压缩,并强制浏览器对图片、CSS 和 JS 文件进行 30 天的本地缓存,同时开启了简单的防盗链功能。
上一篇: 苹果CMS代码兼容问题
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图