如何在Ubuntu12.04上的Drupal安装中启用多个站点

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍


Drupal 是一种流行的内容管理系统 (CMS),用于在易于使用的框架中快速在站点上部署网站。

本指南将介绍如何在单个 Drupal 安装中部署多个站点。 在撰写本文时(7.23),我们将在 Ubuntu 12.04 VPS 上安装最新版本的 Drupal。 我们将创建从单个安装服务的两个独立站点。

安装先决条件


Drupal 需要安装 LAMP(Linux、Apache、MySQL 和 PHP)堆栈才能正常运行。 我们将通过键入以下内容安装必要的组件:

sudo apt-get update
sudo apt-get install apache2 mysql-server libapache2-mod-auth-mysql php5-mysql php5 libapache2-mod-php5 php5-mcrypt php5-gd

您将被要求为安装的 MySQL 部分创建并确认管理密码。 请记住这一点,因为稍后您将不得不使用它。

通过键入以下命令将 apache 配置为首选 .php 文件而不是 .html 文件:

sudo nano /etc/apache2/mods-enabled/dir.conf

在“DirectoryIndex”之后添加一个读取“index.php”的参数作为第一项:

 
      DirectoryIndex <span class="highlight">index.php</span> index.html index.cgi index.pl index.php index.xhtml index.htm

保存并关闭文件。

通过重新启动服务器在 Apache 中实现这些更改:

sudo service apache2 restart

配置 MySQL


您可以执行初步数据库初始化并通过键入以下内容锁定一些不安全的设置:

sudo mysql_install_db && sudo mysql_secure_installation

系统将提示您输入在 MySQL 安装期间配置的管理密码。

然后将询问您一些问题以确保您的安装安全。 按“Enter”对除第一个问题以外的所有问题回答“是”(再次更改管理员密码)。

通过键入以下内容登录 MySQL:

mysql -u root -p

您将收到一个 MySQL 提示以输入更多命令。 我们需要为将要创建的每个站点创建一个数据库:

创建数据库firstsite ; 创建数据库第二站点;

接下来,为每个站点创建一个用户和密码组合,并授予它对刚刚创建的数据库的权限:

 GRANT ALL ON firstsite .* TO firstuser  @localhost 由' firstpassword '识别;  GRANT ALL ON secondsite .* TO seconduser  @localhost 由“第二个密码”识别;

通过键入以下命令应用更改并退出 MySQL 环境:

FLUSH PRIVILEGES;
exit

下载和配置 Drupal


我们将从项目的存储库中将 Drupal 源下载到我们的主目录中:

cd ~
wget http://ftp.drupal.org/files/projects/drupal-7.23.tar.gz

提取文件,然后将它们更多到服务器的 webroot 中。 我们将所有的drupal文件存储在一个单独的“drupal”目录中:

tar xzvf drupal-7.23.tar.gz
sudo mv drupal-7.23 /var/www/drupal

接下来,我们将默认设置文件复制到有效的设置文件中:

cd /var/www/drupal/sites
cp default/default.settings.php default/settings.php

Drupal 在安装过程中需要对目录和其中的文件进行写访问。 我们可以像这样分配写权限:

sudo chmod -R a+rw default

接下来,我们必须弄清楚我们将如何从子目录或子域中为站点提供服务。 选择下面的相应部分。

使用子目录服务多个站点


Drupal 可以配置为从集中域的子目录中为单独的站点提供服务。 例如,您可以有“example.com/site1”和“example.com/site2”,每个都有单独的内容、主题等。

Drupal 如何将请求与目录关联


首先,您需要了解 Drupal 通过查看“站点”目录中的目录结构来解析传递给它的域请求。

“默认”目录完美地描述了它的功能。 如果没有找到其他匹配项,则它包含提供的默认内容。

但是,我们希望创建与我们的站点子目录匹配的其他目录。 为此,我们只需指定站点的主域名(不带“www”),后跟一个点而不是斜线,以及子目录名称。

例如,通过“http://www.example.com/firstsite”访问的站点应该被赋予一个名为“example.com.firstsite”的目录。

创建站点目录

我们会将我们之前配置的默认目录复制到“/var/www/drupal/sites”目录中的两个单独的目录中。

我们将使用“-a”标志来保留权限,因为我们还需要为我们正在创建的每个 Drupal 站点提供相同的权限:

 cp -a 默认example.com 。  firstsite cp -a 默认example.com 。 第二站点

我们现在拥有处理这些站点请求的目录结构,但是我们没有进行任何更改来引导 Apache 正在分类到 Drupal 的流量。

我们将通过从 web 根目录中创建指向 drupal 根目录的符号链接来做到这一点,每个链接都描述我们的站点:

sudo ln -s /var/www/drupal /var/www/ firstsite sudo ln -s /var/www/drupal /var/www/ secondsite

现在,您可以通过导航到以下位置来设置单独的 Drupal 安装:

http://www.example.com/firstsite
http://www.example.com/secondsite

请务必输入您为每个站点配置的单独数据库信息。

为具有独立域的多个站点提供服务


如果您购买了两个完全独立的域,您将执行上述子目录方法中使用的大部分相同程序,但是您必须以不同的方式命名目录,并且您必须修改 Virtual Hosts 文件来配置域。

我们将在本节中假设您的域都已指向您的 VPS。 我们将使用名称“firstsite.com”和“secondsite.com”来区分。

如果您还没有到 Drupal 站点目录,请转到该目录并再次将默认值复制到适当命名的子目录中。 请记住,不要在命名约定中包含“www”。

cd /var/www/drupal/sites cp -a 默认firstsite.com cp -a 默认secondsite.com

配置 Apache 虚拟主机


同样,我们需要能够告知 Apache 如何将正确的域传递给 Drupal。 我们将使用虚拟主机文件来执行此操作。

转到 Apache 的可用站点目录并为 Drupal 创建一个新的虚拟主机文件:

cd /etc/apache2/sites-available
sudo nano drupal

您需要将您的两个名称都指向此文件中 webroot 中的 drupal 文件夹。 使用这种格式:

 DocumentRoot /var/www/drupal 服务器名 www.firstsite.com 服务器别名第一网站 *.firstsite.com
 DocumentRoot /var/www/drupal 服务器名 www.secondsite.com 服务器别名 secondsite.com  *.secondsite.com

保存并关闭文件。

通过键入以下内容启用新站点配置:

sudo a2ensite drupal

重新加载服务器配置:

sudo service apache2 restart

您应该可以在浏览器中设置您的网站(假设您正确设置了域名),方法是访问:

www.firstsite.com
www.secondsite.com

使用子域服务多个站点


您可以将其配置为为单独的站点提供服务的第三种方法是通过在单个父域中使用子域。

例如,我们可以有一个站点位于“first.example.com”,而第二个站点位于“second.example.com”。

为了完成这个,我们再次开始创建适当的站点目录:

cd /var/www/drupal cp -a 默认first.example.com cp -a 默认second.example.com

创建一个 Apache 虚拟主机文件,将您的基本域指向文档根目录中的“drupal”子目录:

cd /etc/apache2/sites-available
sudo nano drupal

将以下基本配置放入文件中:

 DocumentRoot /var/www/drupal 服务器名 www.example.com 服务器别名例子.com  *.example.com

保存并关闭文件。

通过键入以下内容启用新站点:

sudo a2ensite drupal

重新加载服务器配置:

sudo service apache2 restart

您可以通过访问以下网址在浏览器中设置您的网站:

first.example.com
second.example.com

结论


您现在知道如何在单个 Drupal 实例上配置多个不相关的站点。 请记住,这可能不是所有情况下的最佳解决方案。

因为核心 Drupal 逻辑是共享的,所以您必须信任所有独立域的管理员。 如果您正在管理所有站点并且它们具有相似的要求,那么这可能是一个很好的解决方案。

贾斯汀·艾林伍德