介绍
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 标签页面,那里可以找到教程来帮助你。你还会找到一个问答区,可以从社区获取帮助或做出贡献。