介绍
Drupal 是运行博客和管理企业内容最受青睐的内容管理系统 (CMS) 之一。开发者和企业因其健壮性和易用性而更喜欢它。它具有高度可定制性,并且可以进行扩展以实现各种各样的用例。
在本教程中,我们将演示如何在 Ubuntu 20.04 上配合 Apache.
前提条件
由于我们要在 Ubuntu 上安装 Drupal,我们需要安装最新版本的 Ubuntu。您可以按照我们的 Ubuntu 安装指南(如果您还没有安装的话)。我们还需要准备好已安装的 PHP, MySQL、以及 Apache。如果您还没有安装这些,可以查看我们的指南 LAMP Stack setup – Linux Apache MySQL PHP.
在开始在我们的机器上下载和设置 Drupal 之前,我们必须对系统进行一些调整。在安装好 PHP、MySQL 和 Apache 之后,让我们开始配置系统以进行 Drupal 安装。
准备好 MySQL 用户和数据库
Drupal 依赖 MySQL 数据库来存储数据和配置。我们将设置一个专用的用户和数据库,以便隔离我们的 Drupal 环境。这也有助于确保我们应用程序的安全。我们将创建一个新用户和数据库。首先,在终端中运行以下命令登录 MySQL 服务器:
|
1 |
mysql -u root -p |
输入 MySQL 的 username 和 password。身份验证通过后,运行以下命令创建一个新数据库。我们将其命名为 drupal:
|
1 |
CREATE DATABASE drupal; |
接下来,您需要创建一个新用户来连接到此数据库。我们将其命名为 drupaluser。对于密码,请确保输入一个强密码。运行以下命令创建一个新用户:
|
1 |
CREATE USER drupaluser@localhost IDENTIFIED BY 'password'; |
我们的用户需要拥有在此数据库上执行操作的权限。然而,提供所有权限会使我们的应用程序面临安全漏洞。因此,在这里我们将通过运行以下命令来提供必要的权限:
|
1 |
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES ON drupal.* TO drupaluser@localhost; |
授予权限后,我们就可以继续了。运行以下命令刷新权限,使其立即生效:
|
1 |
FLUSH PRIVILEGES; |
之后,通过运行以下命令退出 MySQL:
|
1 |
exit |
安装和配置 PHP 模块
Drupal 需要 PHP 模块才能工作。我们将从 Ubuntu 官方仓库下载它们。通过运行以下命令更新本地软件包缓存:
|
1 2 |
sudo apt-get update sudo apt-get install php5-gd php5-curl libssh2-php |
接下来,我们将根据 Drupal 的建议对 PHP 模块进行一些调整。使用以下命令打开 PHP 配置文件:
|
1 |
sudo nano /etc/php5/apache2/php.ini |
关闭 expose_php 和 allow_url_fopen 变量:
|
1 2 3 4 5 |
. . . expose_php = Off . . . allow_url_fopen = Off . . . |
保存并关闭文件。您现在可以继续下一步了。
修改 Apache 中的 Htaccess 文件
Drupal 需要修改 URL,以便它们对用户更有意义。为此,它需要重写 URL 的权限。幸运的是,用于重写的模块 mod_rewrite 在 Apache 中默认存在。我们只需要启用它。运行以下命令启用此模块:
|
1 |
sudo a2enmod rewrite |
接下来,我们需要更新虚拟主机设置。我们必须这样做,以便 Drupal 可以访问 .htaccess 文件。通过运行以下命令打开 virtualhost 文件:
|
1 |
sudo nano /etc/apache2/sites-enabled/000-default.conf |
在 virtualhost 设置,添加指向我们 Web 根目录的文件夹。在这里, AllowOverride 设为 All。如果您有域名,可以添加 ServerName 指令,并将 ServerAdmin 指令更改为有效的电子邮件地址:
|
1 2 3 4 5 6 7 8 9 10 11 |
<VirtualHost *:80> . . . ServerName example.com ServerAdmin webmaster@example.com DocumentRoot /var/www/html <Directory /var/www/html> AllowOverride All </Directory> . . . </VirtualHost> |
保存并关闭文件。现在一切准备就绪。我们只需要重启 Apache 和 PHP 即可使更改生效:
|
1 |
sudo service apache2 restart |
安装 Drupal
在这里,我们将在 Web 根目录下安装 Drupal。我们将解压 Drupal 文件并进行复制。之后,我们将这些复制的文件复制到目标目录中。如果出现任何问题,这将为我们提供文件备份。
要下载 Drupal,请打开 https://www.drupal.org/project/drupal。在 Recommended releases 栏目下,您应该找到所需的版本。然后,复制 tar.gz 文件的地址。在您的服务器上,您可以使用 wget 工具。在终端中运行以下命令以获取复制的链接地址:
|
1 2 |
cd ~ wget <your link> |
文件下载完成后,输入以下命令解压应用程序目录:
|
1 |
tar xzvf drupal* |
现在使用以下命令移动到新创建的目录:
|
1 |
cd drupal* |
运行以下命令将此目录中的所有文件复制到 Web 根目录:
|
1 |
sudo rsync -avz . /var/www/html |
文件复制完成后,运行以下命令进入 Web 根目录:
|
1 |
cd /var/www/html |
使 Drupal 文件易于安装且安全
如果我们通过基于 Web 的安装脚本安装 Drupal,我们将需要对 Drupal 目录进行修改。这将迫使我们在浏览器和命令行之间切换。虽然我们也可以通过这种方式安装,但更好的选择是对我们的文件进行微调,从而消除这种麻烦。
在子树 sites/default 下创建一个名为 files:
|
1 |
mkdir /var/www/html/sites/default/files |
将默认设置文件复制到 Drupal 用于活动配置的文件名:
|
1 |
cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.php |
要完成安装,我们需要给活动设置文件赋予更多权限。我们稍后会恢复此设置。运行以下命令将写入权限授予组 所有者:
|
1 |
chmod 664 /var/www/html/sites/default/settings.php |
将我们文件的组所有权授予 Web 用户,在 Ubuntu 中是 www-data。我们的整个 Drupal 安装都需要这些所有权属性:
|
1 |
sudo chown -R :www-data /var/www/html/* |
我们现在可以继续了。
完成基于 Web 的安装
从现在开始,我们将使用浏览器。步骤将非常简单快捷。在浏览器中输入服务器的域名/IP:
|
1 |
http://server_domain_or_ip/ |
您将看到 Drupal 欢迎页面:

在大多数情况下,Standard 是默认选项。如果您的使用场景有特殊需求,请选择 Manual。选择 Standard 后,点击 Save and Continue。您会看到更多提示。继续点击 Next 并接受默认选项,直到到达数据库配置页面。在此页面中,您将被要求输入数据库信息。输入 user 和 password 和 database 在此页面上,即我们上面使用的那些:

点击 Save and Continue。如果您被重定向到同一个数据库配置页面,只需刷新页面即可。数据库设置将被配置,配置文件将被安装。
您将被要求提供有关该网站的更多信息。顶部还会出现一个提示,告知可以更改设置文件的权限。我们只会在短时间内这样做,然后我们会恢复更改。我们不想危及我们的网站。输入网站所需的信息:

我们需要再次点击 Save and Continue 一次以完成安装。通过输入您的 IP/域名来打开您的网站。您将看到欢迎页面:

至此,Drupal 安装就结束了。现在我们将恢复设置的权限以避免未经授权的使用。通过在终端中运行以下命令来限制此操作:
|
1 |
chmod 644 /var/www/html/sites/default/settings.php |
故障排除
我们需要确保 Drupal 安装已完成。如果最后一步未完成,请运行以下命令:
|
1 |
sudo tail /var/log/apache2/error.log |
这将打开 log 文件。接下来检查您是否可以在文件中找到以下日志:
|
1 2 |
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
上述错误的一个常见原因是 max_execution_time。要增加此值,请使用以下命令打开 php.ini 文件:
|
1 |
sudo nano /etc/php5/apache2/php.ini |
接下来,找到 max_execution_time 并将其更改如下:
|
1 |
max_execution_time = 300 |
由于我们使用的是自己的数据库,我们将不得不删除 Drupal 的默认数据库和现有的 PHP 配置文件 /var/www/html/default/settings.php。在此之后,用默认副本替换它们,然后重新开始安装。作为预防措施,不要忘记创建备份。
要删除现有的 Drupal 数据库,请登录 MySQL 数据库并运行以下命令:
|
1 |
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 并尝试再次安装。
结论
在本教程中,我们学习了如何在运行 Ubuntu 的机器上设置 Drupal。这将为您开始使用 Drupal CMS 奠定坚实的基础。搭建好 Drupal 可以帮助您运行高度可定制的网站,而无需从头开始编写所有代码。
要了解有关另一个有用 CMS(WordPress)的更多信息,您可以查看以下教程:
- 如何在 Ubuntu 20.04 上使用 Docker 容器部署 WordPress
- 如何在 Ubuntu 20.04 上使用 LAMP 安装 WordPress
- 为什么您应该为您的网站选择 WordPress 云托管?
- 如何将网站从 WordPress 迁移到 CloudSigma PaaS
祝您使用愉快!
评论
暂无评论。发表第一条评论吧。