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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 在 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 标签页面,那里可以找到教程来帮助你。你还会找到一个问答区,可以从社区获取帮助或做出贡献。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
2月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
2月前
|
数据库连接 Apache Java
【独家揭秘】图书管理系统的奇幻之旅:一文看透Apache Wicket如何从想法萌芽到服务器上翩翩起舞?
【8月更文挑战第31天】本文通过实战案例,详细介绍从概念到部署的Apache Wicket应用开发全流程。以在线图书管理系统为例,涵盖应用概念定义、项目创建、架构设计、首页编写、数据库交互及应用部署等关键步骤。通过Maven或Gradle引入Wicket依赖,设计包结构,并使用JPA或Hibernate处理数据持久化。最终,将应用配置并部署到Tomcat或Jetty服务器,帮助你全面掌握Wicket开发技巧。
32 0
|
2月前
|
监控 Linux 测试技术
|
2月前
|
监控 安全 网络安全
如何保护 Apache 服务器的安全
【8月更文挑战第23天】
51 0
|
2月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
36 1
|
25天前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
2月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
108 2
|
2月前
|
消息中间件 分布式计算 Hadoop
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
37 3
|
2月前
|
消息中间件 运维 Kafka
Apache Flink 实践问题之达到网卡的最大速度如何解决
Apache Flink 实践问题之达到网卡的最大速度如何解决
36 2
下一篇
无影云桌面