第1部分:macOS 10.13高Sierra Web开发环境
这是我们以前的OS X开发系列的更新版本。新发布的macOS 10.13高Sierra以及随之而来的Brew更新与以前的发布版本相比需要进行重大更改,因此需要对此过程进行彻底的修改。从10.12开始,我们现在使用 Homebrew的Apache ,而不是内置的版本,但是这个新的Appraoch更加灵活,并且应该继续在以前的OS X版本上工作。
在macOS上开发web应用程序是一个真正的乐趣。有很多选项可用于设置开发环境,包括在Apache,PHP和MySQL之上提供良好UI 的广受欢迎的
MAMP Pro
。但是,有时候MAMP Pro的速度会变慢,或者版本过时,或者由于其配置模板和非标准版本的限制系统而导致性能不佳。
人们经常寻找替代方法,幸运的是有一种方法,设置起来相对比较简单。
在这篇博文中,我们将引导您设置和配置Apache 2.4 和多个PHP版本。在本系列的第二篇博文中,我们将介绍 MySQL ,Apache虚拟主机,APC 缓存和Xdebug 安装。
本指南适用于经验丰富的Web开发人员。如果你是初学者开发者,那么使用
MAMP或MAMP Pro
会更好。
的XCode中的命令行工具
如果您还没有安装的的XCode中,最好先安装命令行工具,因为这些工具将被自制软件使用:
$ xcode-select --install
自制软件安装
这个过程在很大程度上依赖于叫做自制的MacOS的的的软件包管理器。使用
brew
命令,可以您轻松地将强大的功能添加到您的下载苹果机上,但首先我们必须安装它。这是一个简单的过程,你但需要启动你的终端(
/Applications/Utilities/Terminal
)应用程序,然后输入:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
只需按照终端提示,并根据需要输入您的密码。这可能需要几分钟的时间,但完成后,快速确保您已安装
brew
正确的,只需输入:
$ brew --version
Homebrew 1.3.6
Homebrew/homebrew-core (git revision 94caa; last commit 2017-10-22)
您应该也可以运行以下命令以确保一切正确配置:
$ brew doctor
它会告诉你,如果你需要纠正任何事情。
额外的啤酒水龙头
我们将使用需要外接一个PHP啤酒龙头:
$ brew tap homebrew/php
如果您已经安装了BREW,请确保您拥有所有最新的可用的冲泡:
$ brew update
现在你准备好了酿造!
阿帕奇的安装
最新的macOS 10.13 High Sierra 预装了Apache 2.4,然而,在Homebrew上使用这个版本已经不是一个简单的任务了,因为苹果已经删除了这个版本中的一些必要的脚本。但是,解决方案是通过Homebrew安装Apache 2.4,然后将其配置为在标准端口(80/443)上运行。
如果您已经有内置的阿帕奇的运行,那么需要首先关闭它,然后删除所有自动加载的脚本。按顺序运行所有这些命令真的没什么用处-即使是全新的安装:
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
$ brew install httpd
如果没有选项,httpd的的的将不需要从源代码构建,因此安装速度非常快。完成后,您应该看到如下信息:
� /usr/local/Cellar/httpd/2.4.28: 1,622 files, 26.0MB
现在我们只需要配置一些东西,以便我们的新的阿帕奇的服务器自动启动
$ sudo brew services start httpd
您现在已经安装了自制的阿帕奇,并将其配置为使用特权帐户自动启动。它应该已经在运行了,所以你可以尝试通过指向它在浏览器中访问你的服务器
http://localhost:8080
,你应该看到一个简单的标题,上面写着“It works!” 。
疑难解答提示
如果您收到浏览器无法连接到服务器的消息,请首先检查以确保服务器已启动。
$ ps -aef | grep httpd
如果阿帕奇的启动并运行,您应该会看到一些的的的httpd进程。
尝试重新启动的阿帕奇的:
$ sudo apachectl -k restart
您可以在重新启动期间在新的“终端”选项卡/窗口中查看的阿帕奇的错误日志,以查看是否有任何内容无效或导致问题:
$ tail -f /usr/local/var/log/httpd/error_log
阿帕奇是通过控制
apachectl
命令所以一些有用的命令使用是:
$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl -k restart
该
-k
将| |立即强制重新启动,而不是礼貌地重新启动,当阿帕奇的是好的,准备好了
阿帕奇的配置
现在我们有一个可用的网络服务器,我们将要做的就是进行一些配置更改,使其作为本地开发服务器运行得更好。
在最新版本的啤酒中,您必须手动将侦听端口设置为默认值
8080
至
80
,所以我们需要编辑的阿帕奇的配置文件。
/usr/local/etc/httpd/httpd.conf
为了简单起见,我们将使用内置的字幕下载:编辑。程序应用来进行所有的编辑你可以通过使用终端来启动终端
open -e
命令,然后是该文件的路径:
$ open -e /usr/local/etc/httpd/httpd.conf
找到说的那一行
Listen 8080
并将其更改为
80
:
Listen 80
接下来,我们将其配置为使用更改的阿帕奇 的文档根目录。这是阿帕奇的看起来提供文件的文件夹。默认情况下,文档根目录被配置为
/usr/local/var/www
。由于这是一个开发机器,我们假设我们想要将文档根目录指向我们自己的主目录中的一个文件夹。
搜索这个词
DocumentRoot
,你应该看到下面这行:
DocumentRoot "/usr/local/var/www"
将其更改为指向您的用户目录所在的位置
your_user
是您的用户帐户的名称:
DocumentRoot /Users/your_user/Sites
你也需要改变
<Directory>
。在的DocumentRoot的下方行的标记引用。这也应该改成指向你的新文档根目录:
<Directory /Users/your_user/Sites>
我们删除了目录路径周围的可选引号,因为文本编辑可能会尝试将这些引号转换为智能引号,并且当您尝试重新启动的阿帕奇时将导致语法错误。即使您在引号周围进行编辑并将其保留原来在的位置,保存文档可能会导致转换并导致错误。
在这一点上
<Directory>
块你会发现一个
AllowOverride
设置,这应该改变如下:
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
此外,我们现在应该启用默认情况下注释掉的 mod_rewrite 。搜索
mod_rewrite.so
并通过删除领先取消注释行
#
:
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
用户和组
现在我们有阿帕奇的配置指向一个
Sites
我们的主目录中的文件夹。但是,仍然存在一个问题。默认情况下,阿帕奇的作为用户运行
daemon
和组
daemon
。当试图访问我们的主目录中的文件时,这将导致权限问题。大约三分之一的路
httpd.conf
文件有两个设置来设置
User
和
Group
阿帕奇将在下运行。更改这些以匹配您的用户帐户(替换
your_user
与你真正的用户名),与一组
staff
:
User your_user
Group staff
服务器名称
阿帕奇喜欢在配置中有一个服务器名称,但默认情况下这是禁用的,所以搜索:
#ServerName www.example.com:8080
并将其替换为:
ServerName localhost
站点文件夹
现在,你需要创建一个
Sites
您的主目录的根目录中的文件夹。你可以在你的终端或查找程序中做到这一点。在这个新的
Sites
文件夹创建简单
index.html
并在其中放入一些虚拟内容,如:
<h1>My User Web Root</h1>
。
$ mkdir ~/Sites
$ echo "<h1>My User Web Root</h1>" > ~/Sites/index.html
重新启动的阿帕奇以确保您的配置更改已生效:
$ sudo apachectl -k restart
如果在重新启动的Apache的时收到错误,请尝试删除我们之前设置的的的DocumentRoot和目录指定的引号。
指着你的浏览器
http://localhost
应该显示你的新消息。如果你有这个工作,我们可以继续前进!
PHP安装
我们将继续安装PHP 5.6 ,PHP 7.0 ,PHP 7.1 和PHP 7.2,并使用简单的脚本在需要时切换它们。
您可以通过键入来获得可用选项的完整列表
brew options php56
,例如,在这个例子中,我们只是通过包括Apache的支持
--with-httpd
为阿帕奇的构建所需的PHP模块。
$ brew install php56 --with-httpd
$ brew unlink php56
$ brew install php70 --with-httpd
$ brew unlink php70
$ brew install php71 --with-httpd
$ brew unlink php71
$ brew install php72 --with-httpd
这可能需要一些时间,因为您的计算机实际上是从源代码编译PHP。
您必须重新安装每个PHP版本
reinstall
命令而不是
install
如果您以前通过的酿造安装了PHP。
另外,您可能需要根据需要调整PHP的配置设置。一个常见的事情是改变内存设置,或者
date.timezone
组态。该
php.ini
每个PHP版本的文件位于以下目录中:
/usr/local/etc/php/5.6/php.ini
/usr/local/etc/php/7.0/php.ini
/usr/local/etc/php/7.1/php.ini
/usr/local/etc/php/7.2/php.ini
你可以安装尽可能多的PHP版本或者尽可能少的PHP版本,你可以选择正确的版本吗?
现在切换回第一个PHP版本:
$ brew unlink php72
$ brew link php56
Apache PHP设置 – 第1部分
您已经成功安装了您的PHP版本,但是我们需要告诉阿帕奇的使用它们。你将再次需要编辑
/usr/local/etc/httpd/httpd.conf
文件和搜索
#LoadModule php5_module
。
您会注意到每个PHP版本都添加了一个
LoadModule
入口,但是这些都是指向非常具体的版本。我们可以用一些更一般的路径替换这些路径(确切的版本可能不同):
LoadModule php5_module /usr/local/Cellar/php56/5.6.31_7/libexec/apache2/libphp5.so
LoadModule php7_module /usr/local/Cellar/php70/7.0.24_16/libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/Cellar/php71/7.1.10_21/libexec/apache2/libphp7.so
修改路径如下:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php72/libexec/apache2/libphp7.so
我们一次只能有一个模块处理PHP,所以现在除了注释外
php56
条目:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
#LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
#LoadModule php7_module /usr/local/opt/php72/libexec/apache2/libphp7.so
这将告诉Apache使用PHP 5.6来处理PHP请求。(我们将添加以后切换PHP版本的功能)。
你也必须明确地设置PHP的目录索引,所以搜索这个块:
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
并用此替换它:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
保存文件并停止阿帕奇然后重新启动,现在我们已经安装了PHP:
$ sudo apachectl -k stop
$ sudo apachectl start
验证PHP安装
测试PHP是否安装,并预期运行的最佳方法是使用
phpinfo()
。这不是你想要在生产机器上留下的东西,但在开发环境中是非常宝贵的。
只需创建一个名为的文件
info.php
在你的
Sites/
。之前您创建³³文件的数夹数在那个文件中,只需输入一行:
<?php phpinfo();
将浏览器指向
http://localhost/info.php
你应该看到一个闪亮的PHP信息页面:
如果看到您的类似的的phpinfo结果,恭喜!您现在已经成功运行了Apache的PHP的和。您可以通过评论来测试其他PHP版本
LoadModule ... php56 ...
进入并取消其中一个注释。然后只需重新启动Apache的的并重新加载相同的页面。
PHP切换器脚本
我们硬编码的Apache使用PHP 5.6 ,但我们真的希望能够切换版本。幸运的是,一些勤劳的人已经为我们做了很多辛苦的工作,并写了一个非常方便的小小的
PHP切换器脚本
。
我们将安装
sphp
脚本酿造的标准
/usr/local/bin
:
$ curl -L https://gist.github.com/w00fz/142b6b19750ea6979137b963df959d11/raw > /usr/local/bin/sphp
$ chmod +x /usr/local/bin/sphp
检查你的路径
自制应该添加它的首选
/usr/local/bin
和
/usr/local/sbin
。到您的路径作为其安装过程的一部分通过输入侧侧以下内容快速测试:
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
如果你没有看到这个,你可能需要手动添加到你的路径。根据你使用的外壳,你可能需要添加这一行
~/.profile
,
~/.bash_profile
,要么
~/.zshrc
。我们将假定你正在使用默认的bash shell,所以把这行添加到你的
.profile
(如果它不存在,创建它)文件在你的用户目录的根目录下:
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
在这一点上,强烈我建议关闭所有的终端标签窗口显示状语从句:。这意味着要开一个新的终端来继续下一步。这是强烈建议,因为现有的终端可能会出现一些非常奇怪的路径问题(相信我,我已经看到了!)。
Apache PHP设置 – 第2部分
尽管我们将阿帕奇的配置为早些时候使用PHP,但是现在我们需要再次更改它,以将PHP模块指向PHP器é脚本月刊所使用的位置。你将再次需要编辑
/usr/local/etc/httpd/httpd.conf
文件和搜索
LoadModule php
您之前编辑的文本。
您必须替换当前的的的LoadModule块(包括任何注释掉的):
#LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
#LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
有了这个:
# Brew PHP LoadModule for `sphp` switcher
LoadModule php5_module /usr/local/lib/libphp5.so
#LoadModule php7_module /usr/local/lib/libphp7.so
注释掉了
php7_module
如果您在安装PHP 5.6和7.X时使用独特的PHP模块处理程序,这一点非常重要,该脚本将自动处理取消注释和评论适当的PHP模块。
测试PHP切换
完成这些步骤之后,您应该可以使用该命令切换您的PHP版本
sphp
后面是PHP版本的两位数值:
$ sphp 70
您可能必须输入您的管理员密码,它应该给您一些反馈:
$ sphp 70
PHP version 70 found
Unlinking old binaries...
Linking new binaries...
Linking /usr/local/Cellar/php70/7.0.24_16... 17 symlinks created
Linking new modphp addon...
/usr/local/lib/libphp7.so
Fixing LoadModule...
Updating version file...
Restarting homebrew Apache...
Done.
PHP 7.0.24 (cli) (built: Oct 22 2017 07:56:52) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
通过再次指向浏览器,测试您的Apache是否正在运行PHP 7.0
http://localhost/info.php
。有一点运气,你应该看到这样的事情:
更新PHP和其他酿造包
BREW使得更新PHP和您安装的其他软件包变得非常容易。第一步的英文更新 酿造,以便获取可用更新的列表:
$ brew update
这将吐出一个可用的更新列表,以及任何删除的公式。要升级软件包,只需输入:
$ brew upgrade
您将需要切换到每个已安装的PHP版本,并再次运行更新以电子杂志每个PHP版本的更新,并确保您正在运行您打算使用的PHP版本。
激活特定/最新的PHP版本
由于我们的PHP链接设置的方式,只一次链接一个PHP版本,当前只有活动版本的PHP会更新到最新版本。您可以通过键入以下命令来查看当前活动版本
$ php -v
您可以通过输入以下命令来查看特定版本的PHP:
$ brew info php70
homebrew/php/php70: stable 7.0.24 (bottled), HEAD
PHP Version 7.0
...
您将看到PHP 7.0 brew的所有版本都可用,然后可以通过键入以下命令切换到特定版本:
$ brew switch php70 7.0.23
好了,这个包含了这个3部分系列的第1部分现在,您已经有了一个功能齐全的Apache 2.4安装程序,可以快速轻松地在PHP 5.6,7.0,7.1和7.2之间切换。
查看第2部分
,了解如何使用的MySQL ,虚拟主机,APC 缓存,YAML 和Xdebug的来设置您的环境。另
请参阅第3部分
,如何了解为Apache的虚拟主机设置 SSH