实用开发2:工作环境
这是关于实用开发的系列文章的第二篇,主要讨论在为Joomla开发时的工作环境。请参考上个月介绍了解相关内容。
设置您的工作环境和工具
定义一个(目录)结构,其中包含“项目目录”,以便在您的流程中管理多个项目/站点。项目目录将是与项目相关的所有数据的中心位置,使得存档项目或转移到不同的系统变得容易。
利用(软)链接(也适用于Windows!)的文件和目录,使“项目目录”外部的文件在该“项目目录”内可用。链接基本上提供了多个位置来访问相同的文件。
完成之后,您应该能够创建一个开发设置,包括一个或多个并行安装的XAMPP,以及多个独立的项目。每个项目都可以通过浏览器中其唯一的名称在本地访问。
我们需要做的是
- 设置项目目录(文件夹结构),
- 安装XAMPP以拥有包含Apache、PHP和MySQL的服务器堆栈
- 配置系统和Apache网络服务器以进行虚拟和 基于名称的 托管(虚拟主机)
- 使用“链接”调整我们的配置
项目目录
我们的项目组织围绕项目目录来管理项目目录。定义的结构使我们能够将所有项目数据保持在“一个”地方,命名约定使得我们(以及任何我们使用的工具)能够轻松找到它们。通过使用相对引用,我们可以对操作系统平台保持中立(Windows、Linux、Mac)。这样,您可以在系统之间移动您的项目,并通过移动包含所有相关数据的项目基本目录来存档它。
为了描述项目目录结构,我们将使用命名约定。任何在##之间的名称都是您可以使用的变量——它们将被您偏好的任何内容所“替换”。
建议的基本设置看起来像
##PROJECTS##/[apps]
/[archive]
/local.##DOMAIN##/www
| /logs
| /backup
| /patches
/local.##DOMAIN##/www
/logs
/backup
至于XAMPP工具
##XAMPP_INSTALL##/apache/conf
/php
/mysql
##XAMPP_INSTALL## 将是XAMPP的安装目录
##PROJECTS## 是用于存储所有项目的项目目录结构的基目录或根目录。
我将“d:/virtualhosts/”设置为我的项目目录,如您将在下面看到的那样。
##DOMAIN## 是相应项目的域名(将在后面详细说明),然后我们有一个名为##PROJECTS##/local.##DOMAIN##的项目基本目录。
在本系列文章中,我们将扩展此结构,并在进行中添加详细内容。最终,您应该能够构建一个满足您需求的结构。
XAMPP
XAMPP是可在Windows(或其它平台)上运行本地Web服务器、MySQL和PHP栈的选项之一。其基本操作和安装已在网络上广泛覆盖,此处不再赘述。
XAMPP并行安装
通常建议使用最新版本,但如果您正在使用Joomla!(或任何具有特定要求的平台)您可能希望指定您使用的版本。可以并行运行不同的XAMPP版本。选择您感兴趣的特定Apache、MySQL和或PHP版本,并将它们并行安装。
例如,当查看PHP作为变量时,您可以
1.7.7 last XAMPP version with php 5.3 (5.3.8)
1.8.2-1 last XAMPP version with php 5.4.x (5.4.16)
1.8.3-0 first XAMPP version with php 5.5 (5.5.1)
您可以在并行安装中安装任何组合,但通常只有一个处于活动状态!
在我当前的设置中,我有两个安装,一个是PHP 5.4(我的默认版本),另一个是PHP 5.3的最新版本,用于处理Joomla! 1.5的问题。然而,您也可以考虑PHP 5.5进行一些前沿测试。
XAMPP安装位置
您可以将XAMPP安装在任何地方,只要您知道其位置。对于上述PHP 5.4和PHP 5.3的例子,我分别安装在
C:\Portable\XAMPP
C:\Portable\XAMPP-php53
为了便于今后参考,安装/解压位置C:\Portable\XAMPP或C:\Portable\XAMPP-php53将被引用为##XAMPP_INSTALL##
设置基于名称的托管
我们希望能够在并行处理多个开发网站/设置。因此,每个开发网站将运行在其自己的虚拟主机上,并“表现得”像一个具有自己的站点名称(域名)的真正网站。这不仅是一种干净的方法,而且在系列文章中的调试阶段也是必要的。
为了实现这一点,我们需要设置基于名称的托管,并需要设置一个所谓的hosts文件,Apache的虚拟主机配置,以及最后为每个项目设置虚拟主机配置文件。
hosts文件
将hosts文件想象成电话的类比,当您的浏览器需要连接到网站时,它必须通过电话簿中的名称查找该网站的电话号码。在本地和测试目的中,您的本地hosts文件充当那个电话簿。
运行在您自己计算机上的服务器通常可以通过IP地址127.0.0.1访问。现在,我们可以通过将它们添加到hosts文件中,将那个IP地址链接到几个不同的网站名称。现在浏览器可以使用网站名称进行连接,例如通过在地址栏中输入http://local.viryagroup.com。
在Linux机器上,hosts文件位于/etc/hosts。在Windows机器上,它更隐蔽。有关每个操作系统中hosts文件位置的更多详细信息,请参阅hosts维基百科条目。我个人使用一个名为windows hosts文件编辑器的简单实用程序,需要以管理员身份运行才能保存hosts文件。
站点命名,向hosts文件添加条目
在开发站点中使用某种命名约定,最好是与生产站点相关,这将使您在长期内更容易。作为一个约定,我建议取正在建设的网站(生产网站)的域名,去掉www.,并将其作为命名的依据。
运行在您本地计算机上的网站将以其名称以local.开头(local.viryagroup.com),一个共享的外部开发网站将以其名称以dev.开头(dev.viryagroup.com)。使用这种命名约定还有助于在使用像keepass或lastpass这样的密码管理工具时。
我们将把您的生产站点的域名称为##DOMAIN##,并将本地或dev标识称为##SUB##。
例如,生产网站viryagroup.com的本地对应物将是local.viryagroup.com(local.##DOMAIN##),而主机文件的条目将是
127.0.0.1 local.viryagroup.com
127.0.0.1 www.local.viryagroup.com
对于共享协作开发,我们将选择dev.viryagroup.com(dev.##DOMAIN##)。此网站将托管在外部(即不在您的计算机上)的服务器上。为了访问“dev”服务器,您可以将其添加到您的本地主机文件中,或者更理想的是,通过将类似于主机文件条目的A记录添加到区域文件来将其添加到域名DNS中。除了编辑区域文件外,没有一种唯一的方法来做这件事,但大多数托管提供商都提供cPanel或其他网页界面来轻松添加A记录。在DNS中设置“dev”站点允许轻松与客户分享进度。在实验时,请确保将记录的生存时间(TTL)最初设置为低值,以确保您的更改快速传播。
配置Apache
现在我们已经处理了命名和名称查找,我们还需要告诉Web服务器,Apache在XAMPP中,我们希望如何处理该站点以及在哪里找到内容。位置
##XAMPP_INSTALL##/apache/conf
将包含Apache使用的配置文件。要修改的文件是extra/httpd-vhosts.conf和httpd.conf。
extra/httpd-vhosts.conf
##XAMPP_INSTALL##/apache/conf/extra/httpd-vhosts.conf
首先,我们需要在Apache Web服务器(XAMPP)中启用“基于名称的虚拟主机”。取消注释(移除任何前导“#”)以下行
##NameVirtualHost *:80
NameVirtualHost *:80
这就是全部,要访问名为“XAMPP”的原版“XAMPP”应用程序,其中文档根为“##XAMPP_INSTALL##/htdocs”。可选地,将以下内容添加到httpd-vhosts.conf的末尾(将##XAMPP_INSTALL##替换为您自己的位置)
<VirtualHost *:80>
ServerName XAMPP
DocumentRoot "##XAMPP_INSTALL##/htdocs"
</VirtualHost>
定义vhosts:站点可用性站点启用
接下来,我们将为Web服务器创建实际使用的vhosts,其中每个vhost文件定义了该网站的特定配置。现在我们可以将所有vhosts配置添加到httpd-vhosts.conf中,但我们正在采取更基于结构的做法(类似于“debian”)。我们将为各自网站(vhosts /域名)创建单独的##DOMAIN##.conf文件。
这些配置文件将存储和管理于文件夹sites-available和sites-enabled中。
sites-available
##XAMPP_INSTALL##/apache/conf/sites-available
站点可用性目录将包含我们可能正在工作的所有##DOMAIN##.conf文件,该目录需要创建。请注意,实际激活虚拟主机将在稍后进行。
如工作结构部分所述,我们希望将所有虚拟主机组织在一个名为##PROJECTS##的位置。因此,对于单个站点,我们会有
##PROJECTS##/##SUB##.##DOMAIN##
作为基础。作为一个例子,我们可以有
D:\VirtualHost\local.viryagroup.com\www
| \logs
\local.joomla3\www
\logs
现在,我们需要为每个项目创建的vhost.conf文件需要引用工作目录。
<VirtualHost *:80>
ServerName ##SUB##.##DOMAIN##
ServerAlias www.##SUB##.##DOMAIN##
DocumentRoot "##PROJECTS##/##SUB##.##DOMAIN##/www"
ErrorLog "##PROJECTS##/##SUB##.##DOMAIN##/logs/error.log"
CustomLog "##PROJECTS##/##SUB##.##DOMAIN##/logs/access.log" combined
<Directory "##PROJECTS##/##SUB##.##DOMAIN##/www">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
# Order allow,deny
# Allow from all
Require all granted
</Directory>
</VirtualHost>
在这个配置中,www和logs目录是强制性的。您需要将它们创建为##PROJECTS##/##DOMAIN##的子目录。如果没有这样做,XAMPP将无法启动。
完成此操作后,vhost.conf文件可能看起来像这样:
<VirtualHost *:80>
ServerName local.viryagroup.com
ServerAlias www.local.viryagroup.com
DocumentRoot "D:\VirtualHost\local.viryagroup.com\www"
ErrorLog "D:\VirtualHost\local.viryagroup.com\logs\error.log"
CustomLog "D:\VirtualHost\local.viryagroup.com\logs\access.log" combined
<Directory "D:\VirtualHost\local.viryagroup.com\www">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
您可以根据自己的需求定制任何vhost.conf文件。选项的数量是无限的,但这不在这些文章的范围内。
启用站点
##XAMPP_INSTALL##/apache/conf/sites-enabled
现在我们知道了(从站点可用)我们可以工作的vhosts以及它们的设置,我们将定义我们实际上在做什么。启用站点目录包含从站点可用中选择的文件,用于实际使用的vhosts。
可以将相关的vhost.conf文件复制到该目录中,或者更理想的是,从“站点可用”位置创建一个软链接。
在Debian中,这由a2ensite和a2dissite命令管理。在Windows中,我们需要手动或使用鼠标来做(请参阅下面的链接部分)。
启用站点后,请务必使用XAMPP控制面板重新启动您的Apache Web服务器。如果不使用XAMPP,请查阅您的文档了解如何进行此操作。
httpd.conf
##XAMPP_INSTALL##/apache/conf/httpd.conf
由于所有vhost.conf文件都在启用站点位置,我们仍然需要告诉Apache关于它们的信息,以便它们将被使用。为此,您必须修改httpd.conf文件。找到以下部分:
# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"
并添加以下行:
Include "conf/sites-enabled/*"
链接
文件和目录的(软)链接是Linux中的一个已知概念。简化的链接允许从多个位置引用单个文件/文件夹。通过使用链接,您可以访问更多逻辑和易于记忆的位置的文件和目录,并避免数据重复。
与普遍看法相反,链接在最新的Windows版本中也是作为原生命令mklink.exe提供的。链接的形式包括
软链接,对另一个文件的透明引用,到“filename”
硬链接,对另一个文件的引用(引用其内容)
junctions,对于文件夹就像软链接对于文件一样
有关更深入的了解,请参阅http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html。在这里,您可以下载hardlinkshellext,这是一个允许使用'explorer'轻松创建所有类型链接的工具。
不幸的是,并非所有应用程序都意识到并准备好处理链接。在这篇文章系列中,我们将尽可能使用链接来使生活更加容易。请注意,由于相关工具的支持水平,可能存在限制。
与XAMPP相关的链接技巧
为了保持整齐的组织,我们可以将“启用站点”和“可用站点”移动到eXAMPPle的##PROJECTS##/[apps]目录中,以将其保存在项目目录中。
为了避免与多个XAMPP安装的重复,可能需要在反映XAMPP版本的目录中。例如,##PROJECTS##/[apps]/xampp173/sites-enabled
##PROJECTS##/[apps]/xampp177/sites-available
| /sites-enabled
/xampp183/sites-available
/sites-enabled
在Windows上完成后,可以使用链接将启用站点目录“链接”回XAMPP上下文。
##PROJECTS##/[apps]/xampp177/sites-available
/sites-enabled =J> ##XAMPP_INSTALL##/apache/conf/sites-enabled
请注意,在这个设置(使用junctions)下,在Windows中,您需要从##PROJECTS##/[apps]/xampp177/sites-available将vhost.conf文件复制到##PROJECTS##/[apps]/xampp177/sites-enabled。遗憾的是,在junctions中软链接不起作用。我们将在构建文章中解决这个问题。
完成后,我们将留下那些vhost.conf文件,然后它们将更容易为自动化任务“可用”。
在Joomla社区杂志上发表的一些文章代表了作者对特定主题的个人观点或经验,可能与Joomla项目的官方立场不一致。
通过接受,您将访问 https://magazine.joomla.net.cn/ 外部的第三方服务
评论