阿里云Linux云服务器搭建Drupal网站:从零开始的全栈部署指南
一、引言:为什么选择阿里云Linux服务器部署Drupal
Drupal作为全球最成熟的开源内容管理框架之一,凭借其强大的扩展性、灵活的内容类型构建能力和稳健的安全机制,被广泛应用于企业门户、政府网站、电商平台和大型社区等场景。与WordPress相比,Drupal在复杂数据结构建模和权限控制方面具有显著优势,尤其适合构建需要高度定制化的数字体验平台。
阿里云ECS(弹性计算服务)为Drupal提供了理想的运行载体。Linux服务器以其开源、稳定、资源占用低的特点,成为Drupal部署的首选操作系统。无论是个人开发者测试小型站点,还是企业构建高并发业务系统,阿里云ECS都能通过灵活的规格配置和按需付费模式满足不同层次的需求。本文将以Alibaba Cloud Linux 3操作系统为例,从零开始完整演示在阿里云ECS上搭建Drupal网站的全过程,涵盖环境部署、Drupal安装、安全加固和性能优化等核心环节。
需要先登录阿里云控制台,点击:阿里云控制台
二、准备工作:ECS实例选购与基础配置
2.1 服务器规格选型建议
Drupal对服务器资源有一定要求,并非所有最低配实例都能流畅运行。根据实际使用场景,建议参考以下选型标准:
- 个人博客、学习测试等轻量场景:推荐阿里云轻量应用服务器,配置为2核CPU、2GB内存、40GB SSD系统盘、2Mbps带宽。轻量应用服务器预装了Linux系统,操作门槛较低,适合初学者快速上手。
- 企业官网、中型电商、社区站点等生产场景:推荐ECS通用算力型u1实例(2核4GB)或更高配置。这类实例性能更稳定,支持弹性扩容,能够应对业务增长带来的负载变化。
- 高并发、大数据量的大型门户:建议选择计算型或内存型实例,如ecs.c7系列(4核8GB起步),并结合负载均衡SLB和云数据库RDS进行分布式部署。
地域选择应遵循"就近访问"原则:国内用户优先选择华东1(杭州)、华北2(北京)等节点,以降低网络延迟;面向海外用户则可选择中国香港、新加坡等境外节点,且无需ICP备案即可上线。
2.2 操作系统选择
阿里云ECS支持多种Linux发行版。本文推荐使用Alibaba Cloud Linux 3,这是阿里云自研的官方操作系统,针对阿里云基础设施进行了深度优化,且在安全更新和内核稳定性方面有长期支持。此外,CentOS 7.x/8.x也是常见选择,但需注意CentOS 7已于2024年6月停止维护,生产环境建议优先使用Alibaba Cloud Linux 3。
2.3 安全组规则配置
安全组是ECS实例的虚拟防火墙,控制着进出实例的网络流量。在搭建Drupal之前,必须在安全组中放行以下关键端口:
- 22端口(TCP):用于SSH远程连接服务器,是运维管理的必备通道。
- 80端口(TCP):用于HTTP协议的网站访问。
- 443端口(TCP):用于HTTPS加密访问,若后续配置SSL证书则需要放行。
配置方法:登录阿里云控制台,进入ECS实例详情页,点击"安全组"→"配置规则"→"入方向"→"快速添加",依次勾选22、80、443端口即可。来源IP可设置为"0.0.0.0/0"(允许所有IP访问),生产环境中建议根据实际访问来源限制IP范围以增强安全性。
2.4 远程连接服务器
阿里云提供了多种远程连接方式,新手最推荐使用Workbench——这是阿里云自带的网页版终端工具,无需安装任何客户端软件。操作步骤:在ECS实例详情页点击"远程连接",选择"Workbench远程连接",输入root账号和密码即可进入服务器命令行界面。熟悉Linux的用户也可以使用SSH客户端(如PuTTY、Xshell或终端命令行)通过 ssh root@<公网IP> 方式进行连接。
三、环境部署:搭建LAMP/LNMP运行环境
Drupal基于PHP开发,需要Web服务器、数据库和PHP运行环境三大组件协同工作。主流的架构方案有两种:LAMP(Linux + Apache + MySQL + PHP)和LNMP(Linux + Nginx + MySQL + PHP)。Apache配置简单、兼容性好,适合新手入门;Nginx性能更优、并发处理能力强,适合高流量场景。下文将分别给出两种架构的完整部署步骤,读者可根据自身需求任选其一。
3.1 LAMP架构部署
(1)更新系统软件包
在开始安装任何软件之前,首先更新系统的软件包索引,确保安装的均为最新版本:
yum update -y(2)安装Apache Web服务器
Apache是全球使用最广泛的Web服务器软件,在Alibaba Cloud Linux 3中可通过yum直接安装:
yum install httpd -y
systemctl start httpd
systemctl enable httpd安装完成后,在本地浏览器中输入ECS实例的公网IP地址,若看到Apache的默认测试页面,说明Web服务器已成功运行。
(3)安装MySQL数据库
Drupal需要数据库来存储网站内容、用户信息、配置参数等数据。推荐安装MySQL 8.0版本:
yum install mysql-server -y
systemctl start mysqld
systemctl enable mysqldMySQL安装完成后,执行安全初始化脚本进行加固配置:
mysql_secure_installation该脚本会引导你完成以下安全设置:
- 设置MySQL root用户的密码(需8位以上,包含大小写字母、数字和特殊符号)
- 删除匿名用户(Remove anonymous users)
- 禁止root用户远程登录(Disallow root login remotely)
- 删除测试数据库(Remove test database and access to it)
- 刷新权限表(Reload privilege tables now)
完成上述配置后,可通过以下命令验证数据库是否正常运行:
mysql -u root -p输入密码后若能进入MySQL命令行界面(提示符为 mysql>),则说明安装成功。
(4)安装PHP及扩展
Drupal 10及以上版本要求PHP版本不低于8.1。Alibaba Cloud Linux 3的默认软件源可能不包含PHP 8.x,需要先启用EPEL和Remi仓库。以下是完整的安装命令:
# 安装EPEL和Remi仓库
yum install -y epel-release
yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
# 启用PHP 8.1模块
yum module reset php -y
yum module enable php:remi-8.1 -y
# 安装PHP及Drupal所需扩展
yum install -y php php-fpm php-mysqlnd php-gd php-xml php-mbstring php-json php-cli php-opcache php-pdo php-zip php-dom php-simplexml上述扩展的作用分别为:
- php-gd:图像处理库,用于图片缩放、水印等操作
- php-xml / php-dom / php-simplexml:XML解析,Drupal核心依赖
- php-mbstring:多字节字符串处理,支持中文等非ASCII字符
- php-opcache:PHP字节码缓存,大幅提升执行效率
- php-zip:压缩文件处理,用于模块和主题的安装
- php-pdo / php-mysqlnd:数据库连接驱动
启动PHP-FPM服务并设置为开机自启:
systemctl start php-fpm
systemctl enable php-fpm验证PHP版本:
php -v接下来需要配置Apache与PHP-FPM的联动,使Apache能够解析PHP文件。编辑Apache配置文件:
vim /etc/httpd/conf.d/php.conf确保文件中包含以下内容(若不存在则添加):
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm/www.sock|fcgi://localhost/"
</FilesMatch>保存退出后重启Apache使配置生效:
systemctl restart httpd3.2 LNMP架构部署
如果您的站点预期有较高并发访问量,LNMP架构是更好的选择。Nginx在处理静态资源和高并发连接方面优于Apache。
(1)安装Nginx
yum install nginx -y
systemctl start nginx
systemctl enable nginx浏览器访问公网IP,看到Nginx欢迎页面即安装成功。
(2)安装MySQL
与LAMP架构中的MySQL安装步骤完全相同,参考3.1节第(3)部分即可。
(3)安装PHP及扩展
PHP的安装与LAMP架构一致,参考3.1节第(4)部分。不同之处在于Nginx与PHP的联动配置:
vim /etc/nginx/conf.d/default.conf在 server 块中添加以下PHP解析规则:
root /usr/share/nginx/html;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}保存后重启Nginx和PHP-FPM:
systemctl restart nginx
systemctl restart php-fpm四、安装Drupal核心
4.1 安装Composer
Composer是PHP的依赖管理工具,Drupal官方推荐使用Composer来安装和管理Drupal核心及所有模块。安装命令如下:
# 下载Composer安装脚本并执行
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php
# 赋予执行权限
chmod +x /usr/local/bin/composer若服务器位于中国大陆地区,建议将Composer的镜像源切换为阿里云镜像,以大幅提升下载速度:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/4.2 使用Composer下载Drupal
进入Apache或Nginx的默认网站根目录,使用Composer创建Drupal项目。本文以Apache环境为例,根目录为 /var/www/html:
cd /var/www/html
composer create-project drupal/recommended-project:11.1.0 my_site上述命令会创建一个名为 my_site 的目录,并在其中下载Drupal 11.1.0的核心文件及其所有依赖。如需安装其他版本,修改命令中的版本号即可,例如 drupal/recommended-project:10.3.0。
下载完成后,Drupal的实际网站根目录为 /var/www/html/my_site/web,后续所有访问都将指向该目录。
4.3 下载中文语言包
Drupal支持多语言,若希望在安装过程中使用简体中文界面,需要提前下载中文翻译包:
cd /var/www/html/my_site/web
mkdir -p sites/default/files/translations
wget -P sites/default/files/translations https://ftp-origin.drupal.org/files/translations/all/drupal/drupal-11.1.0-beta1.zh-hans.po注意:语言包的版本号必须与Drupal核心版本严格匹配。如果安装的是Drupal 10.3.0,则需下载对应的10.3.0翻译包。
4.4 设置目录权限
Drupal在安装过程中需要向 sites/default 目录写入配置文件,因此必须提前赋予写入权限:
# 为files目录添加写入权限
chmod a+w sites/default/files
# 创建settings.php配置文件(从默认模板复制)
cp sites/default/default.settings.php sites/default/settings.php
chmod a+w sites/default/settings.php4.5 配置Apache支持简洁URL
Drupal的"简洁URL"功能需要Apache开启 mod_rewrite 并允许 .htaccess 文件覆盖配置。编辑Apache主配置文件:
vim /etc/httpd/conf/httpd.conf找到或添加以下 Directory 配置块:
<Directory "/var/www/html/my_site/web">
AllowOverride All
Require all granted
</Directory>保存后重启Apache:
systemctl restart httpd若使用Nginx,则需要在站点配置中设置根目录为 /var/www/html/my_site/web,并配置相应的重写规则。
五、通过浏览器完成Drupal安装向导
5.1 访问安装页面
在本地浏览器中输入以下地址,进入Drupal安装界面:
http://<ECS实例公网IP地址>/my_site/web5.2 选择安装语言
页面加载后首先出现语言选择界面。如果之前已下载中文翻译包,此处可以选择"简体中文",然后点击 "Save and continue"。
5.3 选择安装方式
Drupal提供两种安装方式:标准(Standard)和精简(Minimal)。标准安装会预置一些常用功能模块(如文章、基本页面、用户系统等),适合大多数场景;精简安装仅包含最基础的功能,适合需要高度定制化开发的场景。新手建议选择"标准"方式,点击"保存并继续"。
5.4 环境检查
Drupal会自动检查当前服务器环境是否满足安装要求,包括PHP版本、扩展模块、文件权限等。如果所有检查项均通过,页面将自动跳转至下一步;如果出现警告或错误(例如缺少某个PHP扩展),页面会给出具体提示。按照提示安装缺失的扩展后,执行以下命令重启服务使扩展生效:
systemctl restart httpd # Apache环境
systemctl restart nginx # Nginx环境
systemctl restart php-fpm然后点击页面上的"重试"按钮重新检查。
5.5 配置数据库
环境检查通过后,进入数据库配置页面。需要填写以下信息:
- 数据库类型:选择 MySQL
- 数据库名称:为Drupal创建的数据库名(需提前在MySQL中创建)
- 数据库用户名:具有该数据库操作权限的用户
- 数据库密码:对应用户的密码
- 数据库主机:默认填写 localhost
- 端口号:默认3306
若尚未创建数据库,可通过以下SQL语句在MySQL中完成:
CREATE DATABASE drupal_db;
CREATE USER 'drupal_user'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON drupal_db.* TO 'drupal_user'@'localhost';
FLUSH PRIVILEGES;填写完成后点击"保存并继续",Drupal将开始导入数据表结构。
5.6 站点信息设置
数据库初始化完成后,进入站点配置页面。需要填写:
- 站点名称:网站的显示名称
- 站点邮箱:网站的管理员联系邮箱
- 管理员用户名:Drupal超级管理员的登录名(建议不要使用admin等常见名称)
- 管理员密码:需符合安全强度要求
- 管理员邮箱:管理员的联系邮箱
- 默认国家/时区:根据实际位置选择
填写完成后点击"保存并继续",Drupal将完成最后的安装步骤。
5.7 安装完成
安装完成后,页面会跳转至新搭建的Drupal网站首页。此时您已经拥有了一个可正常运行的Drupal站点,可以开始进行内容创建、主题配置、模块安装等后续工作。
六、安装后的安全加固
Drupal安装完成后,必须立即执行以下安全操作,否则可能面临严重的安全风险。
6.1 移除配置文件的写入权限
安装过程中,为了能够写入配置文件,我们临时赋予了 sites/default 目录及其子文件的写入权限。安装完成后,这些目录不再需要写入权限,应立即移除,以防止攻击者通过Web漏洞篡改配置文件:
chmod a-w /var/www/html/my_site/web/sites/default
chmod a-w /var/www/html/my_site/web/sites/default/files
chmod a-w /var/www/html/my_site/web/sites/default/settings.php6.2 修改默认的.htaccess保护
确认 /var/www/html/my_site/web/.htaccess 文件存在且配置正确,该文件提供了对敏感目录(如 /sites/default/files)的访问保护。
6.3 启用HTTPS
生产环境必须启用HTTPS加密传输。阿里云提供了免费的SSL证书(DigiCert品牌单域名证书),可通过控制台的"数字证书管理服务"申请并部署到ECS实例。部署完成后,修改Drupal的配置文件 settings.php,将 $settings['trusted_host_patterns'] 设置为您的域名,并强制所有流量重定向到HTTPS。
6.4 定期更新
Drupal核心和第三方模块会定期发布安全更新。建议通过以下命令定期检查并更新:
cd /var/www/html/my_site
composer update七、性能优化建议
7.1 启用OPcache
OPcache是PHP的内置字节码缓存扩展,能够将PHP脚本的编译结果缓存到共享内存中,大幅减少重复编译的开销。确认php.ini中已启用OPcache:
vim /etc/php.ini确保以下配置生效:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=607.2 配置Drupal内部缓存
在Drupal后台的"配置"→"开发"→"性能"页面中,启用页面缓存、区块缓存和渲染缓存,并配置合理的缓存过期时间。对于匿名访问者较多的站点,还可以启用内部页面缓存模块(Internal Page Cache)。
7.3 使用Redis或Memcached
对于高流量站点,建议使用Redis或Memcached作为Drupal的缓存后端,替代默认的数据库缓存。这些内存级缓存系统能够显著降低数据库查询压力。安装和配置Redis的简要步骤:
# 安装Redis
yum install redis -y
systemctl start redis
systemctl enable redis
# 安装Drupal的Redis模块(通过Composer)
cd /var/www/html/my_site
composer require drupal/redis然后在Drupal后台启用Redis模块,并在 settings.php 中添加相应的缓存配置。
7.4 启用CSS/JS聚合
在Drupal后台的"性能"设置中,启用"聚合CSS文件"和"聚合JavaScript文件"。这可以将多个CSS或JS文件合并为一个,减少HTTP请求数量,加快页面加载速度。
八、常见问题排查
8.1 无法访问Drupal安装页面
如果在浏览器中输入地址后无法打开安装页面,按以下顺序排查:
- 检查ECS实例的安全组是否已放行80端口
- 检查Web服务是否正常运行:systemctl status httpd 或 systemctl status nginx
- 检查PHP-FPM是否正常运行:systemctl status php-fpm
- 检查防火墙是否拦截了80端口:systemctl status firewalld
8.2 PHP版本不兼容
Drupal对PHP版本有严格的依赖关系。如果安装过程中提示PHP版本不满足要求,可通过以下命令查看当前PHP版本:
php -v若版本过低,需要卸载旧版本并安装符合要求的PHP版本。
8.3 数据库连接失败
如果数据库配置页面提示连接失败,检查:
- MySQL服务是否正常运行:systemctl status mysqld
- 数据库用户名、密码、数据库名称是否正确
- 数据库用户是否具有从localhost连接的权限
九、总结
本文完整介绍了在阿里云Linux云服务器上搭建Drupal网站的完整流程,从ECS实例选购、安全组配置、LAMP/LNMP环境部署,到Composer安装Drupal核心、中文语言包配置、安装向导操作,再到安装后的安全加固和性能优化。整个流程涉及多个技术环节,但只要按照步骤逐一执行,即使是没有深厚Linux背景的开发者也能顺利完成Drupal站点的部署。
Drupal作为企业级内容管理框架,其价值随着站点规模的扩大而愈发凸显。掌握在云服务器上部署Drupal的技能,不仅能够帮助个人开发者快速构建原型系统,更是企业数字化转型中一项实用的技术能力。希望本文能够成为您在Drupal部署之路上的一份可靠参考。
常见问题解答
问1:搭建Drupal网站最低需要什么配置的ECS实例?
答:个人测试或小型博客场景下,建议至少2核CPU、2GB内存、40GB SSD硬盘。生产环境建议2核4GB起步,具体取决于预期的访问量和内容规模。
问2:LAMP和LNMP架构应该如何选择?
答:Apache配置简单、兼容性好,适合新手和中小型站点;Nginx并发处理能力强、静态资源性能优异,适合高流量站点。两者均可稳定运行Drupal,可根据自身熟悉程度选择。
问3:安装Drupal时提示缺少PHP扩展怎么办?
答:根据页面提示的扩展名称,使用 yum install php-<扩展名> 安装对应扩展,然后重启Web服务和PHP-FPM即可。
问4:安装完成后为什么还要移除settings.php的写入权限?
答:安装完成后保留写入权限存在安全风险,攻击者可能通过Web漏洞篡改配置文件。移除写入权限是最基本的安全加固措施。
问5:如何为Drupal站点启用HTTPS?
答:首先在阿里云控制台申请免费的SSL证书,将证书部署到ECS实例后,修改Nginx或Apache的配置文件开启443端口的SSL监听,并配置证书路径。然后在Drupal的settings.php中设置 trusted_host_patterns 并启用HTTPS重定向。
问6:Drupal核心和模块如何更新?
答:使用Composer进行更新。进入Drupal根目录(如 /var/www/html/my_site),执行 composer update 即可更新所有依赖包。建议在更新前备份数据库和代码。



