实用开发2:工作环境
本系列文章的第二篇,讨论在为Joomla!开发时的工作环境,参考上个月关于如何期待的文章介绍。
设置您的工作环境与工具
定义一个(目录)结构,包含“项目目录”,以支持在您的流程中处理多个项目/网站。项目目录将是所有与项目相关的数据的中心位置,使得归档项目或转移到不同的系统变得容易。
使用(软)链接(也适用于windows!)文件和目录,使得“项目目录”之外文件的文件在“项目目录”内可用。基本而言,链接提供了多个访问同一文件的位置。
完成时,您应该能够创建一个开发设置,包含一个或多个并行安装的XAMPP,以及多个独立项目。每个项目都可以通过浏览器中其独特的名称在本地访问。
我们需要
- 设置项目目录(文件夹结构),
- 安装XAMPP以拥有包含Apache、PHP和MySQL的服务器堆栈
- 配置系统和Apache Web服务器以支持虚拟和基于名称的主机(虚拟主机)
- 使用“链接”调整我们的配置
项目目录
我们项目组织围绕项目目录来管理项目目录。定义的结构允许我们将所有项目数据保存在“一个”地方,命名约定使我们(以及我们使用的任何工具)能够轻松找到它们。通过使用相对引用,我们可以不依赖于使用的操作系统平台(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的虚拟主机配置,最后是每个项目的vhosts配置文件。
hosts文件
将hosts文件想象成一个电话的类比,当你的浏览器需要连接到一个网站时,它必须通过电话簿中的名称查找该网站的电话号码。在本地和测试目的中,你的本地hosts文件充当那个电话簿。
运行在你自己电脑上的服务器通常可以通过IP地址127.0.0.1访问。现在,我们可以通过将它们添加到hosts文件中,将这个IP地址链接到几个不同的网站名称。现在浏览器可以使用网站名称来连接,例如,在地址栏中输入http://local.viryagroup.com。
在Linux机器上,主机文件位于/etc/hosts。在Windows机器上它更隐蔽。有关每个操作系统中主机文件位置的更多详细信息,请参阅Hosts 维基百科条目。我个人使用一个名为windows hosts file editor的简单实用程序,需要以管理员身份运行才能保存主机文件。
站点命名,向主机文件添加条目
为您的开发站点使用某种命名约定,最好与生产站点相关联,这将使您在长期内更容易。作为一个约定,我建议取正在建设的站点(生产站点)的域名,不包含www.,并用作命名的基础。
在您的本地计算机上运行的所有网站,其名称将以local.开始(local.viryagroup.com),一个共享的外部开发站点将有一个以dev.开始的名称(dev.viryagroup.com)。使用这种命名约定还有助于使用像keepass或lastpass这样的密码管理工具。
我们将把生产站点的域名称为##DOMAIN##,并将本地或开发标识称为##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记录来将其添加到DOMAIN的DNS中。除了编辑区域文件外,没有一种单一的方法可以做到这一点,但大多数托管提供商都提供cPanel或其他网页界面来轻松添加A记录。在DNS中设置“dev”站点可以轻松与客户分享进度。在实验时,请确保最初将记录的生存时间(TTL)设置为低值,以确保您的更改快速传播。
配置Apache
现在我们已经处理了命名和名称解析,我们还需要告诉Web服务器(XAMPP中的Apache),我们希望如何处理该站点以及在哪里查找内容。位置
##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”的vhost访问原始“XAMPP”应用程序,其中文档根为“##XAMPP_INSTALL##/htdocs”。可选地,将以下内容添加到httpd-vhosts.conf的末尾(用您的位置替换##XAMPP_INSTALL##)
<VirtualHost *:80>
ServerName XAMPP
DocumentRoot "##XAMPP_INSTALL##/htdocs"
</VirtualHost>
定义vhosts:sites-available sites-enabled
接下来,我们将创建用于Web服务器的实际vhosts,其中每个vhost文件定义了该网站的特定配置。现在,我们本可以将所有vhosts配置添加到httpd-vhosts.conf中,但我们采用了一种更基于结构的做法(类似于“debian”)。我们将为相应的网站(vhosts / domains)创建单独的##DOMAIN##.conf文件。
这些配置文件将存储并受控于文件夹 sites-available 和 sites-enabled。
sites-available
##XAMPP_INSTALL##/apache/conf/sites-available
“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。选项的数量是无限的,但这超出了这些文章的范围。
sites-enabled
##XAMPP_INSTALL##/apache/conf/sites-enabled
现在我们知道(从 sites-available)可以工作哪些虚拟主机以及它们的设置,我们将定义我们实际上在做什么。sites-enabled 目录包含从 sites-available 选择的部分文件,用于实际使用的虚拟主机。
您可以复制相关的 vhost.conf 文件到该目录,或者更理想的是,从“sites-available”位置创建软链接。
在 Debian 中,这由 a2ensite 和 a2dissite 命令管理。在 Windows 中,我们需要手动或通过鼠标来完成(请参阅下文关于链接的部分)。
在启用站点后,请务必使用 XAMPP 控制面板重启您的 Apache 网络服务器。如果您不使用 XAMPP,请查阅您的文档了解如何操作。
httpd.conf
##XAMPP_INSTALL##/apache/conf/httpd.conf
虽然所有的 vhost.conf 文件都位于 sites-enabled 位置,但我们仍然需要告诉 Apache 关于它们的信息,以便它们可以被使用。为了实现这一点,您必须修改 httpd.conf 文件。找到以下部分
# Virtual hosts
Include "conf/extra/httpd-vhosts.conf"
并添加以下行
Include "conf/sites-enabled/*"
链接
文件和目录的(软)链接是 Linux 中的一种已知概念。简化的链接允许从多个位置引用单个文件/文件夹。使用链接,您可以更容易地访问文件和目录,并避免数据重复。
与普遍的看法相反,链接也作为最近的 Windows 版本中的原生功能通过 mklink.exe 命令提供。链接的形式包括
软链接,对另一个文件的透明引用,通过到“filename”
硬链接,对另一个文件的引用(引用其内容)
链接,对文件夹的作用类似于对文件的作用
有关更深入的讨论,请参阅 http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html。在这里,您可以下载 hardlinkshellext,这是一个使用‘explorer’轻松创建所有类型链接的工具。
遗憾的是,并非所有应用程序都意识到并准备好处理链接。在这系列文章中,我们将尽可能使用链接来使生活更加简单。请注意,由于相关工具的支持水平,可能存在限制。
与 XAMPP 相关的链接技巧
为了保持更整洁的组织,我们可以将“sites-enabled”和“sites-available”移动到例如##PROJECTS##/[apps]目录,以便将其保持在项目目录中。
为了避免与多个XAMPP安装重复,可能需要在目录中反映XAMPP版本。例如:##PROJECTS##/[apps]/xampp173/sites-enabled
##PROJECTS##/[apps]/xampp177/sites-available
| /sites-enabled
/xampp183/sites-available
/sites-enabled
在Windows上完成设置后,可以使用链接来将sites-enabled目录“链接”回XAMPP上下文。
##PROJECTS##/[apps]/xampp177/sites-available
/sites-enabled =J> ##XAMPP_INSTALL##/apache/conf/sites-enabled
注意,在Windows下使用链接的情况下,您需要将vhost.conf文件从##PROJECTS##/[apps]/xampp177/sites-available复制到##PROJECTS##/[apps]/xampp177/sites-enabled。不幸的是,在链接中软链接不起作用。我们将在构建文章中讨论这个问题。
完成设置后,我们将留下那些vhost.conf文件,这些文件的位置更容易“可用”于eXAMPP示例和自动化任务。
《Joomla社区杂志》上发表的一些文章代表了作者对特定主题的个人观点或经验,可能并不代表Joomla项目官方立场。
通过接受,您将访问https://magazine.joomla.net.cn/外部第三方提供的服务
评论