13

Rails 的截屏视频给我留下了深刻的印象,这些视频演示了内置的 Web 服务器和数据库,以允许在本地机器上进行开发和测试。如何让 Apache 实例将项目目录作为其 DocumentRoot 执行,并可能在端口 8080(或类似端口)上提供文件?

我问的原因是我将尝试 CodeIgniter,并且我想将它用于多个项目。我宁愿不要把我机器的 DocumentRoot 都弄得乱七八糟。也欢迎有关如何进行数据库迁移的建议。


感谢您到目前为止的回复。我应该澄清一下,我使用的是 Mac OS X。看起来 WAMP 仅适用于 Windows。此外,XAMPP 看起来是安装 Apache 和许多其他 Web 工具的好方法,但我看不到加载实例以提供项目目录的方法。Mac OS X 同时安装了 Apache 和 PHP——我只是在寻找一种方法让它在非标准端口上为项目提供服务。

我刚刚发现MAMP Pro 可以满足我的需求,但如果可能的话,更简约的方法会更好。有没有人httpd.conf可以编辑并放入项目目录的文件?

另外,很抱歉我刚刚提出了那个数据库迁移问题。我希望找到能够让我将模式更改推送到实时服务器上而不会丢失现有数据的东西。我怀疑这很困难并且高度依赖于环境因素。

4

8 回答 8

28

您的 Mac 带有一个 Apache Web 服务器和一个 PHP 版本。这是该平台深受 Web 开发人员喜爱的重要原因之一。

由于您使用的是 Code Igniter,因此您需要 PHP 5,这是 PHP 10.5 附带的默认版本。如果您使用的是以前版本的操作系统,请转到entropy.ch并安装提供的 PHP5 包。

接下来,您需要打开 Apache。在共享首选项面板中,打开个人 Web 共享。这将在您的本地计算机上启动 apache。

接下来,您需要设置一些虚假的开发 URL 以用于您的网站。长期以来的传统是我们会为此使用伪造的 TLD .dev(例如 stackoverflow.dev)。但是,.dev它现在是一个实际的 TLD,因此您可能不想这样做 -.localhost似乎是一个新兴的事实标准。编辑您的 /etc/hosts 文件并添加以下行

127.0.0.1    www.example.localhost
127.0.0.1    example.localhost

这会将上述 URL 指向您的本地计算机。最后一步是配置 apache。具体来说,启用命名虚拟主机、启用 PHP 并设置一些虚拟主机。如果您使用了 entropy PHP 包,则启用 PHP 已经完成。如果没有,您需要按照此处所述编辑您的 http.conf 文件。基本上,您取消注释将加载 PHP 模块的行。

每当您对 apache 配置进行更改时,您都需要重新启动 apache 以使更改生效。在终端窗口中,键入以下命令

sudo apachectl graceful

这将优雅地重新启动 apache。如果您在配置文件中出现语法错误,apache 将不会重新启动。您可以突出显示配置问题

sudo apachectl configtest

因此,启用 PHP 后,您需要打开 NamedVirtualHosts。这将让 apache 响应多个 URL。在 http.conf 文件中查找以下(或类似的)行并取消注释。

#NameVirtualHost *  

最后,您需要告诉 apache 它应该在哪里为您的新虚拟主机查找文件。您可以通过将以下内容添加到您的 http.conf 文件来做到这一点。注意:我发现将这样的配置规则分解到一个单独的文件中并使用 include 指令来包含您的更改是一个很好的最佳实践。这将阻止任何自动更新清除您的更改。

<VirtualHost *>
    DocumentRoot /Users/username/Sites/example.localhost
    ServerName example.localhost
    ServerAlias www.example.localhost
</VirtualHost>

您可以将任何文件夹指定为 DocumentRoot,但我发现使用您的个人站点文件夹很方便,因为它已经配置了包含文件的正确权限。

于 2008-09-23T01:44:29.077 回答
6

抱歉,凯尔,我没有足够的信誉直接回复您的评论。但是,如果您想让每个项目在不同的端口上提供服务,请尝试像上面 Kelly 的一样设置您的虚拟主机配置(减去 DNS 的东西),除了 80 之外,给每个虚拟主机自己的端口号,假设您已将此端口添加到您的ports.conf文件中。

NameVirtualHost *

<virtualhost *:80>
DocumentRoot /site1/documentroot
</virtualhost>

<virtualhost *:81>
DocumentRoot /site2/documentroot
</virtualhost>

<virtualhost *:82>
DocumentRoot /site3/documentroot
</virtualhost>

<virtualhost *:83>
DocumentRoot /site4/documentroot
</virtualhost>

希望有帮助

于 2008-09-23T01:23:40.720 回答
2

我还为每个下载了最新的二进制文件并手动设置它们。我发现这是一个轻松的过程,只要您对配置 Apache 有一点了解。

在我的开发机器上,我有基于名称的虚拟主机的apache 设置。我还有一个dyndns.org帐户,它将我的开发域映射到我的本地机器。DynDNS提供了一个通配符域,因此使用基于名称的虚拟主机,我可以轻松地为尽可能多的开发域创建尽可能多的站点(具有单独的文档根),所有站点都运行在一个 Apache 实例上。

例如,虚拟主机的 Apache 配置可能类似于

NameVirtualHost *:80

<virtualhost *:80>
ServerName site1.mydyndns.dyndns.org
DocumentRoot /site1/documentroot
</virtualhost>

<virtualhost *:80>
ServerName site2.mydyndns.dyndns.org
DocumentRoot /site2/documentroot
</virtualhost>

这是我在本地机器上轻松维护许多开发站点的最快和最简单的方法。

我希望这是有道理的。

于 2008-09-23T00:59:37.143 回答
1

我不使用 macOS,但我使用 Apache。在我的 apache 配置文件(在 Linux 上通常位于/etc/apache2/apache2.conf)中,查找对名为ports.conf. 找到这个文件并添加行

Listen 8080

然后重启apache进程。在那之后,你应该做生意。如果这在mac上不起作用,我提前道歉:)

于 2008-09-23T01:07:40.447 回答
0

您可以使用XAMPP等低端安装包并将其作为单独的实例运行。还有许多其他类似的项目。

于 2008-09-23T00:38:47.817 回答
0

对于 PHP,您有几个用于部署 Apache+Mysql+PHP 的高质量包,例如WAMPXAMPP。就个人而言,我下载每个最新的二进制文件并手动安装以获得更细粒度的控制。有很多关于如何处理的在线教程。

数据库迁移应该很简单——在服务器上转储数据库,无论是在命令行还是通过PHPMyAdmin之类的界面,然后以类似的方式将其导出(如果您没有使用 Mysql 命令行的经验,建议使用 PHPMyAdmin)。

于 2008-09-23T00:42:43.953 回答
0

您可以使用 MAMP pro,但免费版本也是一个很好的选择。在这里获取:http: //www.mamp.info/en/mamp.html

于 2008-09-23T02:24:43.647 回答
0

我可能会建议为您希望试验的每个开发环境使用单独的 LAMP 虚拟设备。

在 VMware Server 或 VirtualBox 上运行它们。

于 2008-09-23T16:25:54.153 回答