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

苏南大叔计划在mac上,手工编译php,php编译时有个选项叫做apxs,其实是涉及到apache模块的。但是在苏南大叔的mac上,搜索了好久apxs这个文件的所在之处,但都可耻的失败了。所以,决定先编译apache24,来生成了这个apxs文件先。说实话,这些全部是推翻现有体系的事情,除了特殊目的外,苏南大叔并不建议大家这样做。因为有万能的brew,可以很快速实现类似的目的。

卸载现有apache

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

brew uninstall apache24
brew cleanup

mac系统编译apache24 - 00

mac系统编译apache24 - 01

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

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

mac系统编译apache24 - 02

下载apache源码

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

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

mac系统编译apache24 - 060

其中apr部分,共有3个部分可提供下载(见下图),我们下载apr和apr-util即可。

mac系统编译apache24 - httpd

mac系统编译apache24 - 020

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

mac系统编译apache24 - 021

mac系统编译apache24 - 022

mac系统编译apache24 - 023

mac系统编译apache24 - 024

编译源码

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

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

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

mac系统编译apache24 - 030

mac系统编译apache24 - 031

mac系统编译apache24 - 032

mac系统编译apache24 - 033

找到apxs

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

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

mac系统编译apache24 - 036

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

apache2的具体配置

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

httpd -V

mac系统编译apache24 - 050

然后我们可以通过软连接的方式,把编译好的文件放到系统目录下面去,以便进一步使用。这包括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

mac系统编译apache24 - 053

最终,apache正式启动了。

apachectl -t
apachectl start
apachectl restart

mac系统编译apache24 - 054

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

mac系统编译apache24 - 055

结论

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

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

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。