mac系统,如何编译安装apache?
发布于 作者:苏南大叔 来源:程序如此灵动~苏南大叔计划在mac
上,手工编译php
,php
编译时有个选项叫做apxs
,其实是涉及到apache
模块的。但是在苏南大叔的mac上,搜索了好久apxs
这个文件的所在之处,但都失败了。所以,决定先编译apache24
,来生成了这个apxs
文件先。
这些全部是推翻现有体系的事情,除了特殊目的外,苏南大叔并不建议大家这样做。因为有万能的brew
,可以很快速实现类似的目的。测试环境:mac
,apache@2.4.29
,arp@1.6.3
,arp-util@1.6.1
。
卸载现有apache
因为苏南大叔系统里面的Apache
是用brew
安装的,所以这里使用brew
卸载了apache
。下面截图显示用brew
卸载apache
的过程。
brew uninstall apache24
brew cleanup
当然,如果您使用的是系统自带的apache
,您可以kill
掉apache
之后,用which
或者whereis
查找到apache
的位置,然后rm
掉。
which httpd
sudo rm -rf /usr/sbin/httpd
sudo rm -rf /usr/sbin/apachectl
下载apache
源码
在apache
官方网站上面,截至到发稿时为止,最新的apache
版本为2.2.4
,这个源码的下载分为两个部分。
这两部分组合到一起,才能正常编译通过。如果,您并没有正确处理apr
部分的源码的话,您将看到下面的类似错误提示。
其中apr
部分,共有3个部分可提供下载(见下图),苏南大叔下载了apr
和apr-util
。
下面是上述代码的组合效果图,下载得到的apr
和apr-util
源码文件,要放在httpd
源码下,srclib
目录下面。效果图参照如下:
编译源码
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的相关编译文章中,使用这个位置信息。
一般情况下来说,这个位置的位置是:/usr/sbin/apxs
,但是苏南大叔的mac系统里面,并没有这个文件。非常pity。如果您对于这个文件的用途感兴趣的话,可以点击这里查看更多介绍。
apache2
的具体配置
apache2
安装完成后,默认位置是/usr/local/apache2/
,并非系统路径下的文件。如果第一步,卸载apache,咩有搞定的话,你的系统目录下面还是存在着老的apache呢。你可以通过httpd -V
来确定一下这个问题。
httpd -V
然后我们可以通过软连接的方式,把编译好的文件放到系统目录下面去,以便进一步使用。这包括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
字样,来知晓这个事情。
结论
在本篇文章中,苏南大叔拿到了apxs
这个文件,在下一篇文章中,苏南大叔将要在mac
系统上利用这个文件,给apache2
增加php
解析功能。敬请期待。
更多apache
相关文章,请点击这里查看:https://newsn.net/tag/apache/ 。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。