如何使用Apache在Ubuntu14.04服务器上安装Drupal
介绍
Drupal 是一种流行的内容管理系统 (CMS),用于在 Internet 上运行一些最大的博客和网站。 由于基础的稳定性、平台的适应性和活跃的社区,Drupal 在出现十多年后仍然是一个受欢迎的选择。
在本指南中,我们将介绍如何在 Ubuntu 14.04 服务器上安装 Drupal。 我们将使用 Apache 来服务我们的站点,因为这是 Drupal 团队推荐的配置。
先决条件
在开始使用本指南之前,您需要一个 Ubuntu 14.04 服务器并完成一些基本配置。 按照我们的 Ubuntu 14.04 初始服务器设置指南 获取设置了 sudo 权限的非 root 用户。
您还需要在服务器上配置 Apache、PHP 和 MySQL。 您可以按照我们关于 在 Ubuntu 14.04 上安装 LAMP 的指南来了解如何进行设置。
满足上述要求后,请继续阅读本指南。
在我们获取 Drupal 文件并将它们安装到我们的 web 目录之前,我们需要准备我们的系统。 虽然已经安装了 Apache、PHP 和 MySQL,但我们需要进行一些额外的更改并对每一个进行一些调整以进行安装。
为 Drupal 配置 MySQL 用户和数据库
我们要做的第一件事是配置一个 MySQL 用户和数据库供我们的 Drupal 安装使用。 出于安全原因,配置专用用户和数据库非常重要。
首先,登录 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 目录进行一些更改,以便正确完成该过程。 我们应该事先解决这个问题,这样我们就不必在 Web 浏览器和命令行之间来回切换。
首先,我们需要在子树 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/*
您的服务器现在已正确配置为运行基于 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 标签页面,在那里您可以找到帮助您一路走来的教程。 您还将找到一个问答区域,以从社区获得帮助或为社区做出贡献。