drupal 创建表
系统管理员或开发人员可能选择以多站点配置在同一服务器上托管多个站点的原因有很多。 例如,这样的配置可以:
- 使您能够构建高效的开发环境
- 允许您在网站公开之前进行登台和测试
- 让您在同一站点上运行不同的软件
- 允许在多个站点之间共享单个代码库
- 利用共享托管
- 允许您在同一服务器上运行类似的安全(安全套接字层上的HTTP [HTTPS])和标准(HTTP)站点
- 轻松管理服务器
但是,并非所有这些原因都可以使用Drupal的多站点功能来最好地解决。 本文仅关注一种策略:如何使用Drupal的内置多站点支持从一个Drupal实例创建和服务多个站点。
基本注意事项
使用Drupal内容管理系统(CMS)创建多站点配置具有几个明显的优点,其中之一就是它可能是最容易设置和维护的配置。 另一个是,由于Drupal仅安装在服务器上的一个位置,因此可以最大限度地减少数据重复。 最后,Drupal拥有大量的有用模块,可用于增强多站点处理,为该安排中的所有站点提供高级功能。 新增功能和简化管理的结合对于任何想要设置和管理多站点安排的人来说都是福音。 尽管如此,使用这种配置仍然存在一些缺点,特别值得一提的是两个:安全性和共享性。
多站点安装中的站点共享相同的代码,因此共享相同的文件。 结果,任何人可以访问一个站点的服务器文件系统,也可以访问该多站点安装中用于所有站点的所有文件。 因此,在不同的人管理安排中的不同站点的情况下,它可能不是很安全。 如果站点间的安全性是主要问题,或者由不同的人来管理各个站点,则Drupal的内置多站点功能可能不是最佳解决方案。 相反,请考虑为每个站点提供自己的独特Drupal实例。 尽管将失去多站点安排所带来的易于管理的优势,但可以更好地保护您的站点免受灾难的影响。
第二个问题-共享-围绕数据库访问。 即使Drupal的多站点共享相同的源代码,也不会共享相同的数据库数据。 因此,默认情况下无法从其他站点访问一个站点中的节点,用户和评论。 这种行为实际上可以视为一件好事,但是在管理员可能要求所有站点共享信息的情况下,这可能会限制Drupal的多站点功能的设计。 尽管如此,Drupal内置的多站点支持的优点是可以在所有站点之间共享模块,主题,甚至在某种程度上还可以是上传的文件。 此外,相同或自定义文件可以保留在与配置中不同站点相对应的不同文件夹中。 如果必须共享所有内容,请考虑使用多域功能,该功能很容易由同名模块提供。
安装Drupal以用于多站点
下载Drupal归档文件之后(请参阅参考资料中的链接),解压缩文件并将结果文件夹复制到Web服务器的文档根目录。 使用合适的FTP客户端,这项任务并不困难。 通过Secure Shell(SSH)访问服务器,任务将变得更加轻松。 只需运行wget
命令从资源库中下载存档文件,然后解压缩该文件即可生成Drupal安装文件夹。 (如果您的开发环境是本地的,请等待获得更多选项。)将安装文件夹命名为/goodsite
。
将为该练习创建三个不同的站点; 因此,需要三个不同的数据库-每个站点一个。 使用服务器Cpanel中的phpMyadmin,可以轻松完成此任务。 接下来,安装框架。 但是,在使用Web浏览器运行安装程序之前,必须执行两个任务:
- 向Drupal提供有关您打算运行的站点所需的信息。
- 将特定于站点的配置数据从Drupal传递到所有站点。
要完成第一个任务,请为每个站点创建一个特殊目录。 第二,在每个目录中找到一个设置文件。 目的是建立一个带有两个子站点的主安装。 每个子站点都与核心共享相同的文件,但是每个子站点都有其自己的独立URL和数据库。 要创建的站点的URL为:
- 主站点: http : //goodsite.com
- 子网站1: http : //bettersite.com
- 子网站2: http : //bestsite.com
安装第一个主机
将Drupal源代码放置在文档根目录中并创建MySQL数据库之后,开始安装第一个站点和主域。
主域
主域名是将从其访问主站点的URL(在本文中,http://goodsite.com)。 主域的主要目的是托管基本的Drupal安装。 无论此域是否用作您的站点之一,如果任何子站点出现故障,它们的URL都将默认为主域。 因此,最好将此站点包含与子站点相关的信息,例如联系信息。
如前所述,必须在主Drupal文件夹内为每个子站点创建一个子文件夹。 许多人会想到,Drupal的多站点安装中最困难的任务只是日常工作:让Drupal知道要托管的站点,并只需在/ sites文件夹中为这些站点创建子文件夹。
在Drupal主根文件夹中有一个名为/ sites的目录。 如果您以前曾管理过Drupal,那么您将知道所有非核心代码都应位于此文件夹中。 在默认的Drupal安装中,/ sites文件夹包含两个目录。 第一个称为all /,是放置下载的主题和模块的位置。 all /目录是在所有站点之间共享信息的位置。 第二个文件夹名为default /,是应保存配置文件以及非核心和自定义主题和模块的位置。 Drupal通常会在default /目录中搜索站点配置信息,除非另有说明。 但是请注意,这些是针对一般的单主机站点的假设,而对于多站点安装则不一定。
创建子文件夹和文件
构建多站点Drupal的一个重要提示是,除了all /和default /文件夹之外,还可以在/ sites中创建其他文件夹,并且Drupal将为其赋予特殊含义。 更具体地说,Drupal假定在/ sites文件夹中找到的所有其他目录都代表主机名或主机名模式。
您可以在/ sites文件夹下的/goodsite/sites/<sub-site>
下为所有子站点创建一个子文件夹,并用预期的URL替换每个子站点文件夹的名称。 在此示例中,您具有以下子站点,如图1所示。
- 子网站1 : / goodsite / sites / bettersite
- 子网站2: / goodsite / sites / bestsite
图1. / sites文件夹层次结构
![该图显示了子站点文件夹的层次结构](https://i-blog.csdnimg.cn/blog_migrate/5e01d56364c24a69c6df2caabc6d912b.png)
对于每个子站点,请完成以下步骤:
- 将文件default.settings.php从site / default复制到每个子站点文件夹,并将其重命名为
settings.php
。 - 如果不是当前权限,请使用
CHMOD
将settings.php的权限设置为644。 - 对于Drupal版本6安装,在每个子站点下创建一个名为
files
的文件夹,并使用CHMOD
将权限更改为755。这是Drupal能够在其中写入内容的文件夹-通常是上载的文件,图像缩略图,汇总的级联样式表(CSS)和JavaScript文件。 这些文件不是存储在数据库中,而是存储在文件系统中,因此您必须具有一个可以存放这些文件的目录。
默认情况下,Drupal在每个站点的目录中寻找一个名为files /的子目录。 在默认的Drupal安装中,该文件夹位于site / default / files /中。
- 为每个子站点创建一个名为
modules
的文件夹。这是该子站点特定模块所在的文件夹。 所有站点将使用的任何模块应驻留在sites / all / modules文件夹中。
- 为每个子站点创建一个名为
themes
的文件夹。在此放置该子站点特有的所有主题。 所有站点将使用的任何主题都应驻留在site / all / themes中。
现在,如果子站点URL不是由同一托管公司管理,则将其指向您的Web服务器。 如果您在各个站点上使用不同的主机,则需要更改域名系统(DNS)信息(注册商和托管公司都应能够告诉您如何操作)。 之后,您将不得不将该域名“停放”在您的主域名(在本例中为goodsite.com)的顶部。 从这一点来看,您有几种选择,其中更困难的是使用所谓的symlink 。 但是,停车要简单得多。 因此,在您的Cpanel中,点击托管域名 。 在“ 新域名”中添加Bettersite.com和bestsite.com,然后单击“ 添加域” 。
创建多站点
此处有几种方法,但还是让我们采用最简单的方法:使用在主站点安装中创建的表直接为每个子站点加载数据库。 为此,您必须从主站点安装中创建数据库表的转储并将其保存在本地。 然后,使用phpMyadmin上传此文件,或使用代码编辑器将其打开。 要使用第二个选项,请在phpMyadmin中执行以下任务:
- 转到为子站点创建的数据库。
- 转到SQL ,然后将结构化查询语言(SQL)转储中的所有代码粘贴到那里。
- 点击Go 。
此过程在子站点数据库中复制主站点数据库表。
接下来,打开每个子站点的settings.php文件,并查找以下行:
$db_url = 'mysql://username:password@localhost/databasename';
更改此数据库连接字符串,以反映子站点数据库的参数(用户名,密码,主机名,数据库名)。 现在,如果您转到Bettersite.com,则应该获得标准的“欢迎使用您的新Drupal网站”页面,如图2所示。对所有其他网站重复这些步骤。
图2.您在Drupal中的新网站
从子域创建多站点
另一种方法是通过首先将多站点详细描述为Cpanel的子域来快速创建多站点。 但是,在这种方法中,您必须首先在/ goodsite / sites下为每个站点创建文件夹,这一次使用以下约定(请参见图3):
- 子网站1 : / www / goodsite / sites / bettersite.com
- 子网站2: / www / goodsite / sites / bestsite.com
图3.从子域创建多站点
请注意,子域文件夹必须与子域本身具有相同的名称。 和以前一样,在每个子域文件夹中放置一个default.settings.php副本,将文件名更改为settings.php
,然后发出CHMOD
将权限更改为644。
现在,返回Cpanel并创建两个子域:
- bettersite.goodsite.com
- bestsite.goodsite.com
创建一个符号链接
符号链接是一个文件,它以绝对或相对路径的形式包含对另一个文件或文件夹的引用,并被创建来影响路径名的解析。 使用任何代码编辑器创建一个名为symlink.php
的文件,然后添加类似于以下内容的代码:
<?php
symlink( '/home/Cpanel_User_Name/public_html/', 'sub-domain' );
?>
在这种情况下,文件将如下所示:
<?php
symlink('/home/myuserdirectory/goodsite/','bettersite');
symlink('/home/myuserdirectory/goodsite/','bestsite');
?>
将此符号链接放在主站点的主目录中,然后从URL http://goodsite.com/symlink.php运行它。 如果代码语法良好,您应该会看到一个空白页; 否则,您将看到错误消息。 调整此文件中的代码,直到正确显示为止。
配置.htaccess
现在,在任何代码编辑器中打开.htaccess文件。 查找以下行:
# RewriteBase/
删除井号( #
),并在保存更改之前添加以下行:
RedirectMatch 301 ^/sub-domain/(.*)$
http://sub-domain.yoursite.com $1
这是.htaccess完成后的样子:
RewriteBase / RedirectMatch 301 ^/bettersite/(.*)$
http://bettersite.goodsite.com/$1 RedirectMatch 301
^/bestsite/(.*)$http://bestsite.goodsite.com/$1
此重定向使http://goodsite.com/bettersite和http://bettersite.goodsite.com都可以重定向到同一站点。 如果一切都正确完成,那么当您访问子站点URL http://bettersite.goodsite.com和http://bestsite.goodsite.com时,您将被定向到安装页面。
安装了所有站点后,Cpanel可以轻松地通过重定向到URL http://bettersite.com来关联站点http://bettersite.goodsite.com。
运行Ubuntu的本地主机上的多站点
在Ubuntu上运行多站点安装要比到目前为止对远程主机所做的复杂一些。 使用以下各节概述的方法可以轻松配置多站点安装。
创建一个新的主机文件夹
首先使用以下代码在主文件夹中创建一个名为goodsite的文件夹:
>> filesystem/home/<your ubuntu login name>/
结果应为-> /home/<your ubuntu login name>/goodsite
。
现在,将所有Drupal文件复制到此文件夹中。
编辑主机文件
通过使用以下命令打开终端窗口来编辑主机文件:
sudo gedit /etc/hosts'
然后,您可以添加格式为127.0.0.1 mysite.com
任何站点名称。 对于此示例,添加以下行:
127.0.0.1 goodsite.com
127.0.0.1 bettersite.com
127.0.0.1 bestsite.com
编辑可用的网站
现在,使用以下命令转到sites-available文件夹创建一个名为goodsite.com的文件:
cd /etc/apache2/sites-available
sudo cp default goodsite.com
sudo gedit goodsite.com
第一个命令转到sites-available文件夹; 第二个命令复制默认文件,并将其重命名为goodsite.com。 第三个命令打开文件goodsite.com进行编辑。 将清单1所示的代码添加到文件中。
清单1.新站点添加到站点可用的文件夹文件中
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName goodsite.com
DocumentRoot /home/<your ubuntu login name>/goodsite
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
保存goodsite.com,启用它,然后使用以下命令重新加载Apache:
sudo a2ensite mysite.com
sudo /etc/init.d/apache2 reload
创建子站点文件夹
在/ sites文件夹/ home / [您的ubuntu登录名] /goodsite/sites/bettersite.com中创建子站点,然后将settings.php添加到新文件夹。 如果您已经导航到sites /目录,请使用以下命令复制settings.php文件:
$ cp default/default.settings.php bettersite.com/settings.php
$ chmod 777 bettersite.com/settings.php
运行子站点安装
打开浏览器,然后输入http://bettersite.com
。 您应该看到安装设置页面。 再次将settings.php文件设置为只读以避免出现安全消息,然后运行子站点安装。
接下来,创建一个站点文件夹,并运行bestsite.com以及主机配置中提到的任何其他子站点的安装。
多站点模块
模块用于扩展基本Drupal安装的功能,并具有从管理到实际性能增强功能的各种类别。 几个模块可以帮助创建多站点或类似的配置。 有关如何使用这些模块的详细信息,请查阅每个模块的安装文档。
域访问模块
使用域访问模块(请参阅参考资料中的链接),可以使用单个代码库,共享的用户数据库和共享的登录名,但使用不同的内容数据库来创建多站点。 这种配置与本文中所做的不同。 域访问实际上被描述为一组模块,这些模块通过使用安装在单个共享数据库中的一个基本Drupal代码来促进运行一组站点。 这些模块使所有站点可以共享用户,内容和设置(如果已将它们预先配置为以这种方式运行)。 域访问模块使用Drupal的节点访问系统来确定应在多站点安排中的每个站点上提供哪些内容。 与其他多域模块不同,这些模块还根据用户正在查看的活动域而不是根据用户所属的组或站点来控制用户访问。
多站点管理器模块
多站点管理器(见相关信息中的链接)是一个贡献模块,允许从基础Drupal站点的Drupal新创建的网站,而不需要访问的安装数据库。 默认情况下,新站点与基本安装安装在同一数据库中,但前缀不同。 否则,如果当前用户具有创建数据库的访问权限,则可以在该数据库中完成安装。
结论
本文探讨了如何使用Drupal作为基础CMS创建多站点配置。 您安装了主站点,并在其目录结构中找到了子站点。 您学习了如何使用托管公司提供的管理工具在远程服务器上运行多站点安装。 您还学习了如何在本地计算机上(特别是在运行UbuntuLinux®的计算机上)创建多站点安装。 本文还介绍了两个Drupal模块,它们可以帮助您创建多站点和多域配置。
翻译自: https://www.ibm.com/developerworks/opensource/library/wa-multisitedrupal/index.html
drupal 创建表