腾讯云CVM云服务器部署织梦CMS:Nginx伪静态与目录权限一键脚本全攻略
一、部署前的准备工作
在腾讯云CVM上部署织梦CMS之前,需要完成几个关键的准备工作。首先是CVM实例的选购与初始化配置,其次是安全组规则的放行,最后是远程连接工具的准备好。这些前置步骤虽然看似基础,但每一个细节都直接关系到后续部署的成败。
1.1 CVM实例的选购与创建
登录腾讯云控制台后,进入云服务器CVM产品页面,点击“新建”按钮开始创建实例。在实例配置中,以下几个参数需要重点关注:
操作系统方面,推荐选择CentOS 7.x或Ubuntu 20.04/22.04 LTS版本。这两个Linux发行版对LNMP环境的支持最为成熟,社区文档丰富,遇到问题时更容易找到解决方案。如果对Linux命令不太熟悉,也可以选择腾讯云市场中的“宝塔面板”镜像,通过面板的图形化界面完成后续的环境搭建与网站部署。
实例规格方面,织梦CMS作为一套PHP+MySQL架构的内容管理系统,对服务器资源的要求并不算高。对于个人博客或中小型企业展示站,推荐选择2核CPU、4GB内存的配置。如果预计日均访问量超过1万PV,或者网站包含大量图片、附件等静态资源,建议升级到4核8GB或更高配置。
系统盘大小建议至少40GB,并根据网站内容的预期增长量适当扩容。织梦CMS的附件上传、静态页面生成等功能都会占用磁盘空间,预留充足的存储容量可以避免后期频繁扩容的麻烦。
需要先登录腾讯云控制台,点击:腾讯云控制台,还没有账号,点击:注册后再关联,已有账号点击:登录后再关联
1.2 安全组规则配置
安全组是腾讯云最重要的网络访问控制层,相当于云服务器的虚拟防火墙。织梦CMS网站需要对外提供Web服务,必须在安全组中放行以下端口:22端口用于SSH远程管理(建议将默认端口修改为其他高位端口以增强安全性)、80端口用于HTTP网站访问、443端口用于HTTPS加密访问(如果配置了SSL证书)。
在腾讯云控制台中创建安全组时,可以直接选用“通用Web服务器”模板,该模板默认放通了22、3389、80、443端口和ICMP协议。如果后续打算使用宝塔面板进行运维管理,还需要额外放行宝塔面板的默认端口(通常为8888)。
1.3 远程连接与基础环境确认
实例创建完成后,通过腾讯云控制台的“登录”按钮或使用SSH客户端(如Xshell、Putty、Termius等)连接到CVM。连接成功后,首先执行系统更新命令,确保操作系统处于最新状态:
yum update -y # CentOS系统
apt update && apt upgrade -y # Ubuntu系统确认系统更新完成后,检查是否已安装wget、unzip、vim等基础工具,这些工具在后续的织梦CMS部署过程中会频繁使用到。
二、LNMP运行环境的搭建
织梦CMS基于PHP+MySQL架构运行,需要LNMP(Linux + Nginx + MySQL + PHP)或LAMP(Linux + Apache + MySQL + PHP)环境支持。本文聚焦于Nginx服务器,因此选择LNMP架构进行部署。LNMP环境的搭建有两种主流方式:手工编译安装和通过宝塔面板等集成工具一键部署。对于初次接触服务器运维的读者,推荐使用宝塔面板方式;对于希望深入理解各组件配置原理的读者,可以尝试手工搭建。
2.1 使用宝塔面板快速搭建LNMP环境
宝塔面板是目前国内最流行的服务器运维面板之一,提供了图形化的操作界面,大幅降低了Linux服务器的管理门槛。在CVM上安装宝塔面板只需执行一行命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh安装完成后,面板会输出访问地址、用户名和初始密码,在浏览器中访问该地址即可进入面板管理界面。首次登录后,系统会提示安装环境套件,推荐选择LNMP套件(Nginx、MySQL、PHP),这是搭建织梦CMS所需的最小环境组合。PHP版本建议选择7.4,织梦CMS对PHP 7.x系列的兼容性最好;MySQL选择5.7版本,稳定性和性能表现均衡。
2.2 手工搭建LNMP环境(进阶方案)
如果不想使用面板工具,也可以通过命令行手工搭建LNMP环境。首先安装Nginx:
yum install -y nginx # CentOS
apt install -y nginx # Ubuntu安装完成后,启动Nginx并设置开机自启:
systemctl start nginx
systemctl enable nginx接着安装PHP及织梦CMS所需的扩展模块。织梦CMS依赖的PHP扩展包括:mysqli、gd、curl、mbstring、zip等。在CentOS系统上可以通过以下命令安装:
yum install -y php php-fpm php-mysqli php-gd php-curl php-mbstring php-zip安装MySQL数据库:
yum install -y mariadb-server mariadb # CentOS使用MariaDB
systemctl start mariadb
systemctl enable mariadb安装完成后,运行mysql_secure_installation命令进行数据库安全初始化设置,包括设置root密码、删除匿名用户、禁止远程root登录等。
三、织梦CMS程序的下载与上传
3.1 获取织梦CMS安装包
织梦CMS官方提供了最新的程序安装包,可以从官方网站(dedecms.com)下载。下载后得到一个压缩文件,通常为.zip或.tar.gz格式。如果服务器上已经安装了wget工具,也可以直接在服务器终端通过wget命令下载:
wget http://www.dedecms.com/dedecms.zip3.2 上传与解压程序文件
将下载的织梦CMS安装包上传到服务器的Web目录中。Web目录的默认位置取决于Web服务器的配置,Nginx的默认网站根目录通常为/usr/share/nginx/html或/var/www/html。如果使用宝塔面板,网站根目录通常位于/www/wwwroot/域名/下。
上传方式有两种:一种是通过FTP工具(如FileZilla)将本地压缩包上传到服务器;另一种是直接在服务器终端使用wget下载后解压。解压命令如下:
unzip dedecms.zip -d /var/www/html/ # 解压到指定目录解压完成后,需要将网站根目录的所有权设置为Web运行用户(如www或nginx),以确保后续的文件操作权限正确:
chown -R www:www /var/www/html/四、织梦CMS的安装向导执行
程序文件就位后,通过浏览器访问你的域名或服务器公网IP,即可进入织梦CMS的Web安装向导。安装过程主要包括以下几个步骤:环境检测、目录权限检测、数据库配置、管理员账号设置。
在环境检测页面,安装程序会检查PHP版本、各扩展模块是否已启用、相关目录是否具有写入权限等。如果检测到某项不满足要求,需要先解决问题再继续安装。常见的环境问题包括:PHP版本不兼容(织梦CMS 5.7及以下版本对PHP 7.4以上可能存在兼容性问题)、缺少必要的PHP扩展(如mysqli、gd等)。
在数据库配置页面,需要填写数据库主机(通常为localhost或127.0.0.1)、数据库名称、数据库用户名和密码。如果尚未创建数据库,可以先通过phpMyAdmin或命令行创建一个专用的数据库:
CREATE DATABASE dedecms DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;管理员账号设置页面需要填写网站管理员的用户名、密码和邮箱,这些信息将用于后续登录织梦CMS后台。
安装完成后,系统会提示删除安装目录install/以增强安全性。这是一个非常重要的安全步骤,务必执行:
rm -rf /var/www/html/install/五、Nginx伪静态规则配置
伪静态(pseudo-static)是指通过服务器配置或编程手段,将动态网页以静态网页的URL形式展示给用户的技术。伪静态的核心价值体现在三个方面:提高SEO效果,搜索引擎更偏好抓取静态URL;提升访问速度,减少服务器动态处理负担;简化URL结构,便于用户记忆和分享。
织梦CMS默认生成的URL是动态形式,如/plus/list.php?tid=1。开启伪静态后,URL将转变为/list-1.html这样的静态化形式,对搜索引擎更加友好。织梦CMS支持多种伪静态设置方式,Nginx服务器需要在Nginx配置文件中添加重写规则。
5.1 织梦CMS后台开启伪静态开关
在配置Nginx规则之前,首先需要在织梦CMS后台开启伪静态功能。登录织梦后台,进入“系统”→“系统基本参数”→“核心设置”,找到“是否使用伪静态”选项,选择“是”并保存设置。这一步是启用伪静态功能的前提,但仅此操作并不完整,还需要配置服务器的重写规则。
5.2 Nginx伪静态规则详解
Nginx服务器需在配置文件中添加伪静态规则,配置文件通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default。如果使用宝塔面板,可以在站点设置的“伪静态”栏目中直接输入规则。
以下是织梦CMS在Nginx环境下的标准伪静态规则:
rewrite "^/list-([0-9]+)-([0-9]+).html$" /plus/list.php?tid=$1&PageNo=$2 last;
rewrite "^/list-([0-9]+).html$" /plus/list.php?tid=$1 last;
rewrite "^/view-([0-9]+)-([0-9]+).html$" /plus/view.php?arcID=$1&pageno=$2 last;
rewrite "^/view-([0-9]+).html$" /plus/view.php?arcID=$1 last;这些规则的含义分别如下:
- 列表页分页规则:将/list-栏目ID-页码.html格式的URL重写为/plus/list.php?tid=栏目ID&PageNo=页码
- 列表页首页规则:将/list-栏目ID.html格式的URL重写为/plus/list.php?tid=栏目ID
- 内容页分页规则:将/view-文章ID-页码.html格式的URL重写为/plus/view.php?arcID=文章ID&pageno=页码
- 内容页首页规则:将/view-文章ID.html格式的URL重写为/plus/view.php?arcID=文章ID
在配置这些规则时,需要注意last标志的使用。last意味着重写规则执行后,继续搜索后续匹配的location块,而不是重新发起请求。配置完成后,务必重启Nginx服务使规则生效:
nginx -s reload5.3 Tags标签页伪静态规则
除了栏目页和内容页,织梦CMS的Tags标签页也支持伪静态化。如果需要将/tags.php?/关键字/这样的URL转换为/tags/关键字.html格式,可以添加以下规则:
rewrite "^(.*)/tags/(.+).html$" $1/tags.php?/$2/ last;配置完成后,刷新网站即可看到所有Tags标签页面变为伪静态格式。
六、目录权限安全设置
目录权限设置是织梦CMS部署过程中最关键的安全环节之一。合理的权限配置可以有效防止未授权用户修改或删除重要文件,保护网站的数据完整性和安全性。Linux系统使用读(r)、写(w)和执行(x)三种权限来控制用户对文件和文件夹的访问。
6.1 Linux文件权限基础
在Linux系统中,每个文件和目录都有一组权限,分别针对三种用户类型:所有者(owner)、所属组(group)、其他用户(other)。权限通常用数字表示:4代表读权限、2代表写权限、1代表执行权限。常见的权限数值包括:
- 755:所有者可读写执行(7=4+2+1),组用户可读执行(5=4+1),其他用户可读执行(5=4+1)
- 644:所有者可读写(6=4+2),组用户可读(4),其他用户可读(4)
- 550:所有者可读执行(5=4+1),组用户可读执行(5=4+1),其他用户无权限(0)
- 444:所有用户均为只读权限(4)
权限的修改通过chmod命令完成,递归修改使用-R参数。
6.2 织梦CMS各目录权限建议
织梦CMS部署完成后,不同目录应根据其功能设置不同的权限:
- 网站根目录(/var/www/html/):建议设置为755。所有者可读写执行,组用户和其他用户可读执行,保证网站文件可以被正常访问
- /include/目录:主程序目录,需要有写入、执行和读取权限。建议设置为755,但在第一次安装完成后,可以去掉写入权限以增强安全性,改为550
- /data/目录:数据缓存目录,需要可读写权限,但不建议赋予执行权限。建议设置为755或770
- /uploads/目录:附件上传目录,需要可读写权限,但必须取消执行权限以防止恶意脚本上传后被执行。建议设置为755
- /templets/目录:模板文件目录,需要可读写权限,建议设置为755
- data/common.inc.php文件:核心配置文件,包含数据库连接信息,强烈建议设置为644(Linux)或只读(Windows),防止敏感信息泄露
6.3 权限设置的执行命令
以下是在Linux终端中执行目录权限批量设置的命令示例:
# 设置网站根目录权限
chmod -R 755 /var/www/html/
# 设置data目录权限
chmod -R 755 /var/www/html/data
# 设置uploads目录权限(取消执行权限)
chmod -R 755 /var/www/html/uploads
# 设置核心配置文件为只读
chmod 644 /var/www/html/data/common.inc.php
# 安装完成后将include目录改为只读(安全加固)
chmod -R 550 /var/www/html/include七、一键自动化脚本
为了简化部署流程,将上述Nginx伪静态规则配置和目录权限设置整合为一个一键自动化脚本。该脚本适用于CentOS 7.x/8.x及Ubuntu 20.04/22.04系统,在执行前请确保已正确安装LNMP环境并将织梦CMS程序放置在网站根目录。
7.1 一键脚本完整代码
#!/bin/bash
# 腾讯云CVM部署织梦CMS - Nginx伪静态与目录权限一键配置脚本
# 适用系统:CentOS 7.x/8.x, Ubuntu 20.04/22.04
# 使用方法:chmod +x dedecms_setup.sh && ./dedecms_setup.sh
echo "=========================================="
echo " 织梦CMS Nginx伪静态与目录权限一键配置"
echo "=========================================="
# 定义网站根目录(请根据实际情况修改)
WEB_ROOT="/var/www/html"
NGINX_CONF="/etc/nginx/nginx.conf"
SITE_CONF="/etc/nginx/conf.d/dedecms.conf"
# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
echo "错误:请使用root用户执行此脚本"
exit 1
fi
# 检查网站根目录是否存在
if [ ! -d "$WEB_ROOT" ]; then
echo "错误:网站根目录 $WEB_ROOT 不存在,请先上传织梦CMS程序"
exit 1
fi
echo "[1/4] 开始配置Nginx伪静态规则..."
# 创建独立的站点配置文件
cat > $SITE_CONF << 'EOF'
server {
listen 80;
server_name _;
root /var/www/html;
index index.php index.html index.htm;
# 织梦CMS伪静态规则
rewrite "^/list-([0-9]+)-([0-9]+).html$" /plus/list.php?tid=$1&PageNo=$2 last;
rewrite "^/list-([0-9]+).html$" /plus/list.php?tid=$1 last;
rewrite "^/view-([0-9]+)-([0-9]+).html$" /plus/view.php?arcID=$1&pageno=$2 last;
rewrite "^/view-([0-9]+).html$" /plus/view.php?arcID=$1 last;
rewrite "^(.*)/tags/(.+).html$" $1/tags.php?/$2/ last;
# 处理PHP请求
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
}
}
EOF
# 测试Nginx配置语法
nginx -t
if [ $? -ne 0 ]; then
echo "错误:Nginx配置语法检查失败,请检查配置文件"
exit 1
fi
# 重启Nginx服务
systemctl reload nginx
echo "[1/4] Nginx伪静态规则配置完成"
echo "[2/4] 开始设置目录权限..."
# 设置网站根目录权限
chown -R www:www $WEB_ROOT
chmod -R 755 $WEB_ROOT
# 设置data目录权限
chmod -R 755 $WEB_ROOT/data
# 设置uploads目录权限(可读写,不可执行)
if [ -d "$WEB_ROOT/uploads" ]; then
chmod -R 755 $WEB_ROOT/uploads
fi
# 设置核心配置文件为只读
if [ -f "$WEB_ROOT/data/common.inc.php" ]; then
chmod 644 $WEB_ROOT/data/common.inc.php
fi
# 安装完成后加固include目录
if [ -d "$WEB_ROOT/include" ]; then
chmod -R 550 $WEB_ROOT/include
fi
echo "[2/4] 目录权限设置完成"
echo "[3/4] 检查并清理安装目录..."
if [ -d "$WEB_ROOT/install" ]; then
rm -rf $WEB_ROOT/install
echo "[3/4] 已删除install安装目录"
else
echo "[3/4] install目录不存在,跳过"
fi
echo "[4/4] 配置完成!"
echo "=========================================="
echo " 请登录织梦CMS后台完成以下操作:"
echo " 1. 进入【系统】-【系统基本参数】-【核心设置】"
echo " 2. 将【是否使用伪静态】设置为【是】并保存"
echo " 3. 在【栏目管理】中为各栏目设置伪静态URL规则"
echo "=========================================="7.2 脚本使用说明
将上述脚本保存为dedecms_setup.sh文件,上传到CVM服务器。执行以下命令赋予执行权限并运行:
chmod +x dedecms_setup.sh
./dedecms_setup.sh脚本执行过程中会自动完成以下四项任务:配置Nginx伪静态规则并重启Nginx服务、批量设置织梦CMS各目录的安全权限、删除install安装目录、输出后续操作提示。整个执行过程约需1-2分钟,大幅减少了手动配置的时间和出错概率。
需要注意的是,脚本中的网站根目录默认为/var/www/html,如果实际部署路径不同,请在脚本开头的WEB_ROOT变量处进行修改。此外,如果Nginx的PHP处理使用socket方式而非TCP端口方式,也需要相应调整fastcgi_pass的配置。
八、安全加固进阶建议
完成基础部署后,建议进一步执行以下安全加固措施,提升网站的整体安全水平:
8.1 修改默认后台路径
织梦CMS安装完成后,后台管理目录默认为/dede/,这是一个公开的路径信息,容易被攻击者扫描和尝试暴力破解。建议将/dede/目录重命名为一个不易猜测的名称,例如:
mv /var/www/html/dede /var/www/html/admin_xxxxx8.2 关闭调试模式
织梦CMS的调试模式会在网站出现错误时输出详细的错误信息,这些信息可能包含数据库连接信息、文件路径等敏感内容。在正式上线前,务必关闭调试模式。在data/common.inc.php文件中找到并修改相关配置:
// 关闭调试模式
define('DEDE_DEBUG', false);8.3 删除不必要的文件和目录
织梦CMS安装包中包含一些在生产环境中不需要的文件和目录,如member(会员模块,如不使用可删除)、special(专题模块,如不使用可删除)、install(安装目录,部署完成后必须删除)。删除这些文件和目录可以减少潜在的攻击面。
8.4 定期更新与备份
定期更新系统和应用程序,及时修补已知的安全漏洞。同时建立完善的备份机制,定期备份网站文件和数据库,防止数据丢失。可以使用crontab设置定时任务自动执行备份:
# 每天凌晨2点备份数据库和网站文件
0 2 * * * mysqldump -u root -p密码 dedecms > /backup/dedecms_$(date +\%Y\%m\%d).sql
0 3 * * * tar -czf /backup/www_$(date +\%Y\%m\%d).tar.gz /var/www/html/九、常见问题与解答
问题1:配置伪静态后访问页面出现404错误,是什么原因?
答:404错误通常由以下原因导致:Nginx配置文件中的伪静态规则不正确或不完整;配置完成后未重启Nginx服务使规则生效;织梦CMS后台的“是否使用伪静态”选项未开启。建议按顺序检查:确认Nginx配置语法正确(nginx -t)、重启Nginx(nginx -s reload)、确认后台伪静态开关已开启。
问题2:上传图片时提示目录没有写入权限,如何解决?
答:这是因为/uploads/目录的权限不足。织梦CMS需要在上传目录中创建文件和子目录,因此需要赋予写入权限。执行以下命令修复:chmod -R 755 /var/www/html/uploads,并确认目录所有者为Web运行用户(如www)。
问题3:安装完成后访问网站提示“DedeTag Engine Create File False”,怎么处理?
答:这个错误通常与/data/目录的权限有关。织梦CMS的标签引擎需要在/data/目录下生成缓存文件,如果该目录没有写入权限就会报错。执行chmod -R 755 /var/www/html/data命令修复权限即可。
问题4:Nginx下伪静态规则可以直接使用Apache的.htaccess文件吗?
答:不可以。Nginx和Apache的URL重写语法完全不同。Apache使用.htaccess文件中的RewriteRule指令,而Nginx使用配置文件中的rewrite或try_files指令。在腾讯云CVM上使用Nginx时,必须按照本文提供的Nginx规则格式进行配置。
问题5:部署完成后如何验证伪静态是否生效?
答:可以通过两种方式验证。一是在浏览器中访问一个伪静态格式的URL,如http://你的域名/list-1.html,如果能正常显示栏目页面内容,说明伪静态生效。二是查看Nginx的访问日志,确认请求的URL是伪静态格式而非动态格式。
问题6:一键脚本执行后还需要手动做什么?
答:一键脚本完成了Nginx伪静态规则配置和目录权限设置,但仍需登录织梦CMS后台完成以下操作:进入“系统”→“系统基本参数”→“核心设置”,将“是否使用伪静态”选项设置为“是”并保存;在“栏目管理”中为各栏目设置伪静态URL规则。这两步是伪静态功能完整生效的必要条件。





