读书人

在MacOS停编译安装Apache HTTPD

发布时间: 2013-04-05 10:24:33 作者: rapoo

在MacOS下编译安装Apache HTTPD
下载httpd的源码包

http://httpd.apache.org/download.cgi





编译与安装

我喜欢把自己编译安装的项目放在单独的目录当中,这样维护起来比较方便:

sudo mkdir -p /usr/local/weli


然后设置好权限:

sudo chown weli:staff /usr/local/weli


设置权限的目的是保证自己可以访问。我在MacOS环境中,因此用户组设置为staff。如果你在Linux环境下,那么用户组应该是和你自己的用户名一致,比如:

sudo chown weli:weli /usr/local/weli


接下来是编译安装。如果你使用的是MacOS Mountain Lion,需要正确设置cc[1]:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain


接下来是各平台一致的编译过程:

./configure --prefix=/usr/local/weli/


make


make install




启动服务

在运行httpd服务器之前,我们要把主机名配置好。

我们可以在以在/etc/hosts中将公网IP地址对应的主机名设置好:



接下来配置httpd的绑定地址及端口,打开:

<your_dir_prefix>/httpd/conf/httpd.conf


并进行编辑如下:



配置工作就算是完成了,接下来在运行httpd之前,我们修改一下主页的内容:

vi <your_dir_prefix>/httpd/htdocs/index.html


将“It works!"改成:"Hello, world!":



准备工作完成,接下来进到httpd/bin目录中使用apachectl命令启动服务:

sudo ./apachectl -k start




-k选项的含义就是以daemon形式启动,更多对apachectl命令的说明可以参考[2]

注意路径非常重要,如果你不加"./",而是直接运行"apachectl",那么你可能会运行系统中已经安装的httpd,而不是自己编译的这个版本。可以通过which命令来验证这点:

Last login: Tue Apr  2 15:42:12 on ttys001weli@power:~$ which apachectl/usr/sbin/apachectlweli@power:~$


可以看到,在MacOS中,有默认安装好的httpd,并且位于"/usr/sbin/"。

接下来访问服务看看是否启动成功:



一般情况下,到此为止你应该都很顺利地完成了配置并启动了服务。但也有的时候你可能会发现服务无法启动并显示80端口已经被bind,这可能是因为你机器上有其它的服务正在侦听80端口,比如系统里面自带的HTTPD。在MacOS下,如何关闭自带的httpd服务,可以参考[3]。

定制模块

我们可以看看在默认情况下httpd安装了哪些模块:



如果你想看httpd的configure都提供了哪些编译选项,可以使用这个命令:

./configure --options


后续的文章中我们会用到httpd的各种编译选项。

小结

在本文中,我们学习了httpd的编译安装方法。通过这种方式,我们可以很灵活地定制httpd的各个方面,在编译阶段对其打Patch,或者是把特定的模块给编进去。以这篇文章为基础,我将后续介绍httpd的一系列配置及使用方面的内容。

参考资料

[1] Problems with compiling apache2 on Mac OS X Mountain Lion

[2] apachectl - Apache HTTP Server Control Interface

[3] How to enable Web Sharing in OS X Mountain Lion

读书人网 >操作系统

热点推荐