如何在 Ubuntu 12.04 上的 Drupal 安装中启用多个网站

金钱(警告)

** 状态:** 被贬值

如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:

** 原因:** Ubuntu 12.04 已于 2017 年 4 月 28 日到期(EOL)并且不再收到安全补丁或更新。

** 相反,请参阅:** 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本编写的指南。

介绍


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

本指南将涵盖如何在单个 Drupal 安装中部署多个网站. 我们将从本文中安装最新版本的 Drupal (7.23) 在 Ubuntu 12.04 VPS 上. 我们将创建两个单独的网站,从单个安装中提供服务。

安装前提条件


Drupal需要安装一个LAMP(Linux,Apache,MySQL和PHP)堆栈,以便正常工作。

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

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

配置 apache 以优先选择.php 文件而不是.html 文件,键入:

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

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

<IfModule mod_dir.c>

          DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm

</IfModule>

保存并关闭文件。

通过重新启动服务器在 Apache 中实施以下更改:

1sudo service apache2 restart

配置 MySQL


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

1sudo mysql_install_db && sudo mysql_secure_installation

您将被要求输入您在 MySQL 安装过程中配置的管理密码。

然后,您将被问到一些问题,以确保您的安装。 按输入,以回答除第一个问题之外的所有问题(再次更改管理员密码)。

登入MySQL,键入以下内容:

1mysql -u root -p

我们需要为我们创建的每个网站创建一个数据库:

CREATE DATABASE firstsite;
CREATE DATABASE secondsite;

接下来,为每个网站创建一个用户和密码组合,并在您刚刚创建的数据库中授予该网站的权限:

GRANT ALL ON firstsite.* TO firstuser@localhost IDENTIFIED BY 'firstpassword';
GRANT ALL ON secondsite.* TO seconduser@localhost IDENTIFIED BY 'secondpassword';

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

1FLUSH PRIVILEGES;
2exit

下载和配置 Drupal


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

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

提取文件,然后将其添加到服务器的 webroot 中,我们将将所有 drupal 文件存储在单独的drupal目录中:

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

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

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

Drupal需要在安装过程中写入目录和内部文件,我们可以分配写入权限,如下:

1sudo chmod -R a+rw default

接下来,我们将不得不弄清楚我们将如何从子目录或子域中服务网站。

使用子目录服务多个网站


例如,你可以有example.com/site1example.com/site2,每个都有单独的内容,主题等。

Drupal Associates 如何使用目录请求


首先,你需要了解,Drupal通过查看网站目录中的目录结构来解决被传递给它的域的请求。

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

然而,我们想要创建其他目录,这些目录将匹配我们的网站子目录,我们只需指定网站的主要域名(没有www),然后是点子而不是缩略,以及子目录名称。

例如,通过访问http://www.example.com/firstsite访问的网站应该得到一个名为example.com.firstsite的目录。

创建网站目录

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

我们将使用-a旗帜来保存权限,因为我们正在创建的每个Drupal网站也需要相同的权限:

cp -a default example.com.firstsite
cp -a default example.com.secondsite

我们现在有将处理这些网站的请求的目录结构,但我们没有做任何改变,将Apache的流量分类到Drupal。

我们将通过从网页根目录中创建符号链接到drupal根目录,其中每一个都描述了我们的网站:

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

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

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

请确保输入您为每个网站配置的单独数据库信息。

使用独立域名服务多个网站


如果您购买了两个完全独立的域名,您将预定义上面的子目录方法中使用的大多数相同程序,但您将不得不以不同的方式命名目录,并且您必须修改虚拟主机文件来配置域名。

在本节中,我们将假设您的域名都指向您的VPS,我们将使用firstsite.comsecondsite.com的名称来区分。

如果您还没有在Drupal网站目录中,然后再将默认文件复制到适当命名的子目录中,请记住,不要将www列入命名协议中。

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

配置 Apache 虚拟主机


再次,我们需要能够告知Apache如何将正确的域传递给Drupal,我们将使用虚拟主机文件来做到这一点。

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

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

你需要把你的名字都指向这个文件中的 webroot 中的 drupal 文件夹. 使用此格式:

<VirtualHost *:80>
    DocumentRoot /var/www/drupal
    ServerName www.firstsite.com
    ServerAlias firstsite.com *.firstsite.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /var/www/drupal
    ServerName www.secondsite.com
    ServerAlias secondsite.com *.secondsite.com
</VirtualHost>

保存并关闭文件。

通过键入启用新网站配置:

1sudo a2ensite drupal

重新加载服务器配置: sudo 服务 apache2 重新启动

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

1www.firstsite.com
2www.secondsite.com

使用子域服务多个网站


您可以将此配置为提供单独网站的第三种方式是通过在单个母域内使用子域。

例如,我们可以有一个位于first.example.com的网站,另一个位于second.example.com

为了完成这一点,我们再次开始创建相应的网站目录:

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

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

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

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

<VirtualHost *:80>
    DocumentRoot /var/www/drupal
    ServerName www.example.com
    ServerAlias example.com *.example.com
</VirtualHost>

保存并关闭文件。

通过键入启用新网站:

1sudo a2ensite drupal

重新加载服务器配置:

1sudo service apache2 restart

您的网站将可在您的浏览器中设置,访问:

1first.example.com
2second.example.com

结论


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

因为核心的Drupal逻辑是共享的,你必须信任所有单独的域的管理员. 如果你正在管理所有网站,他们有相似的要求,那么这可能是一个很好的解决方案。

By Justin Ellingwood
Published At
Categories with 技术
Tagged with
comments powered by Disqus