如何使用 Apache 在 Ubuntu 14.04 服务器上安装 Drupal
介绍
Drupal 是一种流行的内容管理系统 (CMS),用于在 Internet 上运行一些最大的博客和网站。由于基础的稳定性、平台的适应性及其活跃的社区,Drupal 在出现十多年后仍然是一个受欢迎的选择。
在本指南中,我们将介绍如何在 Ubuntu 14.04 服务器上安装 Drupal。我们将使用 Apache 为我们的站点提供服务,因为这是 Drupal 团队推荐的配置。
先决条件
在开始使用本指南之前,您需要一台已完成一些基本配置的 Ubuntu 14.04 服务器。按照我们的 Ubuntu 14.04 初始服务器设置指南获取具有 sudo 权限设置的非根用户。
您还需要在服务器上配置 Apache、PHP 和 MySQL。您可以按照我们在 Ubuntu 14.04 上安装 LAMP 的指南了解如何进行设置。
满足上述要求后,请继续阅读本指南。
在我们获取 Drupal 文件并将它们安装到我们的 Web 目录之前,我们需要准备我们的系统。虽然已经安装了 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 块中,添加一个指向我们 Web 根目录的目录块。在该块中,将 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 安装到我们的 Web 根目录中。
实际上,我们最初会将文件解压到我们的主目录中,然后将它们复制到适当的位置。这样做将使我们能够在出现问题或以后意外删除任何文件时随时访问原始文件。
转到 Drupal 下载页面并在“推荐版本”部分下检查最新版本。右键单击您感兴趣的版本的 tar.gz
链接,然后选择“复制链接地址”或您的浏览器提供的任何类似选项。
回到您的服务器,切换到您的主目录并使用 wget
使用您复制的链接下载项目文件:
cd ~
wget http://ftp.drupal.org/files/projects/drupal-7.32.tar.gz
您的链接末尾可能会有不同的版本号。下载文件后,通过键入以下命令解压缩应用程序目录:
tar xzvf drupal*
现在,进入新提取的目录结构并使用 rsync
实用程序将所有文件安全地复制到服务器的 Web 根目录中。我们在此命令中使用点来指定当前目录。这是复制我们需要的一些隐藏文件所必需的:
cd drupal*
sudo rsync -avz . /var/www/html
现在您的主文件夹中的一个目录中有文件的原始版本,以备您需要引用它们时使用。我们将进入 web 根目录来自定义我们的安装:
cd /var/www/html
调整 Drupal 文件以确保安全性和易于安装
基于 Web 的安装脚本要求我们对 Drupal 目录进行一些更改才能正确完成该过程。我们应该事先解决这个问题,这样我们就不必在网络浏览器和命令行之间来回切换。
首先,我们需要在名为 files
的子树 sites/default
下创建一个新目录:
mkdir /var/www/html/sites/default/files
接下来,我们应该将默认设置文件复制到 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
接下来,我们需要将文件的组所有权授予网络用户,在 Ubuntu 中为 www-data
。我们想为整个 Drupal 安装提供以下所有权属性:
sudo chown -R :www-data /var/www/html/*
您的服务器现已正确配置,可以运行基于 Web 的安装脚本。
完成基于 Web 的安装过程
安装的其余部分将在您的 Web 浏览器中进行。打开浏览器并导航到服务器的域名或 IP 地址:
http://server_domain_or_IP
您将看到 Drupal 安装程序的初始页面:

除非您有理由不这样做,否则请选择“标准”安装并单击“保存并继续”。单击接下来的几个继续按钮,直到您到达数据库配置页面。填写您在配置数据库和用户时使用的详细信息。
对于本指南,我们使用了一个名为 drupal
的数据库,一个名为 drupaluser
的数据库用户,以及一个名为 password
的密码。您应该在用户创建阶段选择不同的密码。填写数据库详细信息后,再次单击“保存并继续”:

注意:当您单击“保存并继续”时,您可能会被重定向回相同的数据库配置页面。如果发生这种情况,只需刷新页面即可。数据库将被配置并安装配置文件.
您将在页面顶部看到一个信息框,告诉您现在可以更改设置文件的权限。我们将立即执行此操作。现在,您需要设置有关站点的一些基本信息。使用适合您站点的值填写字段:

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

您已成功完成 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 记录了此错误的许多原因和修复方法:
一些最可能的修复包括编辑 /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 标签页面,您可以在其中找到帮助您的教程。您还将找到一个问答区,以从社区获得帮助或为社区做出贡献。