在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法

介绍

Drupal 是一款流行的内容管理系统(CMS),用于运行互联网上一些最大的博客和网站。由于其稳定的基础、平台的适应性和活跃的社区,Drupal 在出现十多年后仍然是一个受欢迎的选择。

在本指南中,我们将介绍如何在 Ubuntu 14.04 服务器上安装 Drupal。我们将使用 Apache 来提供我们的网站,因为这是 Drupal 团队推荐的配置。

先决条件

在开始本指南之前,您需要一个完成了一些基本配置的 Ubuntu 14.04 服务器。请按照我们的 Ubuntu 14.04 初始服务器设置指南,设置一个具有 sudo 权限的非根用户。

您还需要在服务器上配置 Apache、PHP 和 MySQL。您可以按照我们的在 Ubuntu 14.04 上安装 LAMP 指南来学习如何设置这些。

一旦满足了上述要求,就可以继续进行本指南。

在获取 Drupal 文件并将其安装到我们的网站目录之前,我们需要准备我们的系统。虽然 Apache、PHP 和 MySQL 已经安装好了,但我们需要对每个进行一些额外的更改和调整以进行安装。

为 Drupal 配置 MySQL 用户和数据库

我们将首先为我们的 Drupal 安装配置一个 MySQL 用户和数据库以供使用。为了安全起见,配置专用用户和数据库非常重要。

首先,登录到 MySQL:

mysql -u root -p

系统会提示您输入在安装该软件时配置的 MySQL root 用户的密码。

成功验证后,您将进入 MySQL 提示符。首先,为您的 Drupal 安装创建一个数据库。为了简单起见,我们将称我们的数据库为 drupal

CREATE DATABASE drupal;

接下来,您需要创建一个用户,Drupal 软件可以用来连接数据库。在本指南中,我们将称我们的用户为 drupaluser。选择一个强密码来替换下面代码块中的密码:

CREATE USER drupaluser@localhost IDENTIFIED BY 'password';

现在,我们有了一个数据库和一个用户,但是我们的用户还没有权限在数据库上执行任何操作。我们可以通过授予用户权限来解决这个问题。Drupal 需要各种权限才能正确运行。下面是一些很好的选择,可以让软件在不必要地暴露我们的数据库的情况下正常运行:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES ON drupal.* TO drupaluser@localhost;

现在,您的用户已被授予管理我们创建的数据库的权限。要立即实施这些更改,我们需要将权限信息刷新到磁盘:

FLUSH PRIVILEGES;

现在,我们可以退出交互式 MySQL 会话:

exit

您将回到您的 bash 会话。

安装 PHP 模块并调整配置

接下来,我们将安装一些 Drupal 应用程序所需的 PHP 模块。幸运的是,它们在 Ubuntu 的默认存储库中。

通过输入以下命令更新本地软件包缓存并安装它们:

sudo apt-get update
sudo apt-get install php5-gd php5-curl libssh2-php

我们还将对 PHP 配置文件进行一些小的调整。这是 Drupal 开发人员推荐的。使用 sudo 权限在文本编辑器中打开 Apache PHP 配置文件:

sudo nano /etc/php5/apache2/php.ini

搜索 expose_php 指令和 allow_url_fopen 指令,并将它们都设置为 “Off”:

. . .
expose_php = Off
. . .
allow_url_fopen = Off
. . .

完成后保存并关闭文件。

在 Apache 中启用重写功能和 Htaccess 文件

接下来,我们应该看看 Apache。首先,我们要启用重写功能。这将允许我们的 Drupal 站点修改 URL 为用户友好的字符串。

实际的 Apache mod_rewrite 模块已经默认安装好了。但是它没有被启用。我们可以通过输入以下命令来启用该模块:

sudo a2enmod rewrite

这将在下次重启 Apache 时启用该模块。在重新启动 Apache 之前,我们需要调整我们的虚拟主机配置,以允许使用 .htaccess 文件。该文件将包含实际的重写规则,并且在 Drupal 安装中默认包含。

现在打开默认虚拟主机文件:

sudo nano /etc/apache2/sites-enabled/000-default.conf

在 “VirtualHost” 块内,添加一个指向我们网站根目录的目录块。在此块内,将 AllowOverride 指令设置为 “All”。您可能还想添加一个 ServerName 指令来指向您的域名,并更改 ServerAdmin 指令以反映有效的电子邮件地址:

<VirtualHost *:80>
    . . .
    ServerName  example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        AllowOverride All
    </Directory>
    . . .
</VirtualHost>

完成后保存并关闭文件。

现在,我们只需要重新启动 Web 服务器以实施我们对 Apache 和 PHP 的更改:

sudo service apache2 restart

安装 Drupal 文件

现在我们的系统已经准备好了,我们可以将 Drupal 安装到我们的网站根目录中。

实际上,我们将最初解压文件到我们的主目录,然后将它们复制到适当的位置。这样做将使我们在出现问题或以后意外删除文件时能够方便地访问原始文件。

前往 Drupal 下载页面,在“推荐版本”部分查看最新版本。右键单击您感兴趣的版本的 tar.gz 链接,选择“复制链接地址”或您的浏览器提供的类似选项。

回到您的服务器,切换到您的主目录并使用 wget 使用您复制的链接下载项目文件:

cd ~
wget http://ftp.drupal.org/files/projects/drupal-7.32.tar.gz

您的链接可能在结尾有不同的版本号。一旦文件下载完成,通过输入以下命令提取应用程序目录:

tar xzvf drupal*

现在,进入新提取的目录结构,并使用 rsync 实用程序安全地将所有文件复制到服务器的网站根目录。我们在此命令中使用点来指定当前目录。这是必要的,以便复制我们需要的一些隐藏文件:

cd drupal*
sudo rsync -avz . /var/www/html

现在您在家目录中有文件的原始版本,以防以后需要参考。我们将进入网站根目录来自定义我们的安装:

cd /var/www/html

调整 Drupal 文件以提高安全性和安装便利性

基于网络的安装脚本要求我们对 Drupal 目录进行一些更改,以便正确完成该过程。我们应该提前完成这些更改,这样我们就不必在网页浏览器和命令行之间来回切换。

首先,我们需要在子树 sites/default 下创建一个名为 files 的新目录:

mkdir /var/www/html/sites/default/files

接下来,我们应该将默认设置文件复制到 Drupal 用于活动配置的文件名:

cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.php

在安装过程中,这个活动设置文件暂时需要一些额外的权限。我们需要临时为组所有者授予写权限(我们将很快将其分配给 web 用户)。安装成功后,我们将删除这些权限:

chmod 664 /var/www/html/sites/default/settings.php

接下来,我们需要将文件的组所有权分配给 web 用户,在 Ubuntu 中是 www-data。我们希望将整个 Drupal 安装都拥有这些所有权属性:

sudo chown -R :www-data /var/www/html/*

您的服务器现在已经适当配置以运行基于网络的安装脚本。

完成基于网络的安装过程

安装的其余部分将在您的网页浏览器中进行。打开浏览器并导航到您的服务器的域名或 IP 地址:

http://server_domain_or_IP

您将看到 Drupal 安装过程的初始页面:

!Drupal choose profile

除非您有理由不这样做,选择“标准”安装并单击“保存并继续”。点击接下来的几个继续按钮,直到您到达数据库配置页面。填写您在配置数据库和用户时使用的详细信息。

对于本指南,我们使用了一个名为 drupal 的数据库,一个名为 drupaluser 的数据库用户,以及一个密码 password。在用户创建阶段,您应该选择了不同的密码。填写完您的数据库详细信息后,再次单击“保存并继续”:

!Drupal database config

注意:当您单击“保存并继续”时,有可能会被重定向回相同的数据库配置页面。如果发生这种情况,只需刷新页面。数据库将被配置,配置文件将被安装。

您将在页面顶部看到一个信息框,告诉您现在适合更改设置文件的权限。我们马上就会这样做。现在,您需要设置有关您的网站的一些基本信息。使用适合您的网站的合适值填写字段:

!Drupal configure site

最后,单击“保存并继续”按钮以完成安装。现在,您可以通过访问您的域名来访问您的网站:

!Drupal completed install

您已成功完成 Drupal 安装。

但是,我们仍然需要恢复设置文件的权限,以防止未经授权的用户进行更改。在您的服务器上,通过输入以下命令限制文件的写访问:

chmod 644 /var/www/html/sites/default/settings.php

这将锁定进一步更改设置文件的权限。

故障排除

如果 Drupal 安装的最后阶段没有完成,请检查错误日志:

sudo tail /var/log/apache2/error.log

如果你看到类似以下错误:

[Wed Nov 12 13:40:10.566144 2014] [:error] [pid 7178] [client 108.29.37.206:55238] PHP Fatal error:  Call to undefined function field_attach_load() in /var/www/html/includes/entity.inc on line 316, referer: http://12.34.56.78/install.php?profile=standard&locale=en
sh: 1: /usr/sbin/sendmail: not found

这表明安装没有成功完成。Drupal 文档中记录了许多导致此错误的原因和解决方法:

https://www.drupal.org/node/481758

一些最可能的解决方法包括编辑 /etc/php5/apache2/php.ini 文件以提高 max_execution_time

sudo nano /etc/php5/apache2/php.ini

文件内容:

max_execution_time = 300

你可能还想尝试在除了 Chrome 之外的浏览器中进行安装,比如 Safari。浏览器的 cookie 设置可能会干扰安装过程。

无论如何,一旦你实施了修复,你将需要删除现有的 Drupal 数据库和现有的 /var/www/html/sites/default/settings.php 文件,用默认副本替换它们,然后重新开始安装。如果你有任何值得保留的数据或设置,请备份。

为此,你可以登录到 MySQL 并执行 DROP DATABASE drupal;,然后按照前面的数据库部分再次创建数据库并授予相应的权限。

你还可以再次运行 cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.php 来替换设置文件。确保再次运行 chmod 664 /var/www/html/sites/default/settings.php 命令来设置正确的权限。

然后再次访问你的 IP 地址 - 可能在不同的浏览器中 - 并尝试最终的安装。

结论

现在你已经有了一个坚实的基础来构建你的 Drupal 站点。Drupal 非常灵活,可以根据你的需求和用户的需求定制站点的外观和功能。

要了解接下来该做什么,可以访问我们的 Drupal 标签页面,那里可以找到教程来帮助你。你还会找到一个问答区,可以从社区获取帮助或做出贡献。


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
40
分享
相关文章
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
152 78
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
166 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
超聚变服务器2288H V6使用 iBMC 安装 Ubuntu Server 24.04 LTS及后续系统配置
【11月更文挑战第15天】本文档详细介绍了如何使用iBMC在超聚变服务器2288H V6上安装Ubuntu Server 24.04 LTS,包括连接iBMC管理口、登录iBMC管理界面、配置RAID、安装系统以及后续系统配置等步骤。
242 4
|
2月前
|
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
86 4
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
79 5
Linux系统之安装Ward服务器监控工具
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
257 0
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
316 33
The Past, Present and Future of Apache Flink
|
3月前
|
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
909 13
Apache Flink 2.0-preview released
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
122 3
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等