我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔计划在mac上,手工编译phpphp编译时有个选项叫做apxs,其实是涉及到apache模块的。但是在苏南大叔的mac上,搜索了好久apxs这个文件的所在之处,但都失败了。所以,决定先编译apache24,来生成了这个apxs文件先。

苏南大叔:mac系统,如何编译安装apache? - mac-编译安装apache
mac系统,如何编译安装apache?(图9-1)

这些全部是推翻现有体系的事情,除了特殊目的外,苏南大叔并不建议大家这样做。因为有万能的brew,可以很快速实现类似的目的。测试环境:macapache@2.4.29arp@1.6.3arp-util@1.6.1

卸载现有apache

因为苏南大叔系统里面的Apache是用brew安装的,所以这里使用brew卸载了apache。下面截图显示用brew卸载apache的过程。

brew uninstall apache24
brew cleanup

苏南大叔:mac系统,如何编译安装apache? - 00
mac系统,如何编译安装apache?(图9-2)

当然,如果您使用的是系统自带的apache,您可以killapache之后,用which或者whereis查找到apache的位置,然后rm掉。

which httpd
sudo rm -rf /usr/sbin/httpd
sudo rm -rf /usr/sbin/apachectl

苏南大叔:mac系统,如何编译安装apache? - 02
mac系统,如何编译安装apache?(图9-3)

下载apache源码

apache官方网站上面,截至到发稿时为止,最新的apache版本为2.2.4,这个源码的下载分为两个部分。

这两部分组合到一起,才能正常编译通过。如果,您并没有正确处理apr部分的源码的话,您将看到下面的类似错误提示。

苏南大叔:mac系统,如何编译安装apache? - 060
mac系统,如何编译安装apache?(图9-4)

其中apr部分,共有3个部分可提供下载(见下图),苏南大叔下载了aprapr-util

苏南大叔:mac系统,如何编译安装apache? - 020
mac系统,如何编译安装apache?(图9-5)

下面是上述代码的组合效果图,下载得到的aprapr-util源码文件,要放在httpd源码下,srclib目录下面。效果图参照如下:

苏南大叔:mac系统,如何编译安装apache? - 021
mac系统,如何编译安装apache?(图9-6)

编译源码

apache的源码,确认组合好之后,就可以编译源码了。这个编译过程,和php的扩展编译,是非常类似的。相关步骤的命令如下:

cd <httpd_source_path>
autoconf --force
./configure
make
sudo make install

当然在执行./configure的时候,可以通过--prefix=<your_install_path>,来指定好:最终的编译安装完成的字节包的位置。默认的位置是:/usr/local/apache2/

找到apxs

因为苏南大叔的主要目的就是这个apxs文件,所以这里单独说明一下。聪明的读者你,如果不需要这个文件的话,并不需要关心本节的内容。

这个来之不易的文件的最终位置是:<your_apache2_path>/bin/apxs,对于默认情况来说,位置就是:/usr/local/apache2/bin/apxs 。记住这个位置,将在苏南大叔的接下来的php72的相关编译文章中,使用这个位置信息。

苏南大叔:mac系统,如何编译安装apache? - 036
mac系统,如何编译安装apache?(图9-7)

一般情况下来说,这个位置的位置是:/usr/sbin/apxs,但是苏南大叔的mac系统里面,并没有这个文件。非常pity。如果您对于这个文件的用途感兴趣的话,可以点击这里查看更多介绍。

apache2的具体配置

apache2安装完成后,默认位置是/usr/local/apache2/,并非系统路径下的文件。如果第一步,卸载apache,咩有搞定的话,你的系统目录下面还是存在着老的apache呢。你可以通过httpd -V来确定一下这个问题。

httpd -V

苏南大叔:mac系统,如何编译安装apache? - 050
mac系统,如何编译安装apache?(图9-8)

然后我们可以通过软连接的方式,把编译好的文件放到系统目录下面去,以便进一步使用。这包括httpd以及apachectl这两个文件。

sudo ln -s /usr/local/apache2/bin/httpd /usr/sbin/httpd
sudo ln -s /usr/local/apache2/bin/apachectl /usr/sbin/apachectl

鉴于mac系统下,80端口的监听,是需要特殊权限的。所以,在这里,自己编译的这个apache也是不能幸免的,还需要进一步设置权限。
关联文章见这里:https://newsn.net/say/mac-port-80.html

sudo chown root:wheel /usr/local/apache2/bin/httpd
sudo chmod u+s        /usr/local/apache2/bin/httpd
sudo chown root:wheel /usr/local/apache2/bin/apachectl
sudo chmod u+s        /usr/local/apache2/bin/apachectl

最终,apache正式启动了。

apachectl -t
apachectl start
apachectl restart

需要特别说明的是:这个时候的apache,还不能支持php文件的解析。我们可以通过在/usr/local/apache2/conf/httpd.conf 这个文件中查找php字样,来知晓这个事情。

苏南大叔:mac系统,如何编译安装apache? - 055
mac系统,如何编译安装apache?(图9-9)

结论

在本篇文章中,苏南大叔拿到了apxs这个文件,在下一篇文章中,苏南大叔将要在mac系统上利用这个文件,给apache2增加php解析功能。敬请期待。

更多apache相关文章,请点击这里查看:https://newsn.net/tag/apache/

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    mac