(三)apache的安装与配置
一、安装:
推荐使用cygwin自带的Setup.exe。带来的好处不言而喻,所有安装的程序都是经过测试的,这样确保你不会把宝贵的时间浪费来毫无意义的劳动上。
在安装程序中选择两个包就行了(分别是apache2:Apache Http Server 和 apache2-manual:Apache Http Server),如下图所示。
注意,图中应该显示“版本号”而不是“Keep”,因本文是在我安装完毕之后所写,显示的已安装的情况。
安装完毕之后,如何验证呢,查看安装路径。
1 可执行程序。在/usr/sbin目录下。
-
- apachectl2。Apachect服务器可执行程序。
- httpd2.exe
- httpd2-config
2 配置文件。在/usr/etc/apache2目录下。最重要的是httpd.conf。一些比较重要的子配置文件在/usr/etc/apache2/extra目录下,比如
httpd-ssl.conf。
3 日志文件。在/var/log/apache2目录下,比较重要的有error_log,运行错误信息都在其中。
注意:这是setup.exe的默认安装方式安装的,手动安装可以使用--prefix指定安装目录。
二、说说rebaseall
1. 概念
这么一个看起来不相干的玩意,对于Cygwin的软件安装非常之重要,使用Cygwin做研发的必须要知道。那么它究竟是什么?查看Cygwin Wiki,描述如下:
Sometimes, after updating or installing packages, you'll start to get strange errors related to "fork()" or .dll loading. These errors are
usually solved by rebasing your packages.
译文:有时候,当更新或者安装软件包以后,你开始遇到奇奇怪怪的错误。这些错误通过Rebaseall命令就能解决。
是不是还是有点云里雾里,要详细理解可以查看飞林沙的这篇文章,讲的比较清楚。
讲个笑话,说的是俄罗斯人。在修理设备遇到麻烦无法解决的时候,俄罗斯人往往对着设备狠狠的猛踹几脚,猛砸几下,设备就能恢复正常运转。
我把Rebaseall命令称作“俄罗斯人的工作方式”。当你在软件安装或更新后遇到问题无法运行时,不妨尝试一下Rebaseall命令。
2. 操作
1 为了rebase操作,首先要保证dash(或者ash)和rebase两个软件包已经安装。
2 在宿主机中停止Cygwin Server服务。
3 在宿主机中执行d:\cygwin\bin\dash
4 在弹出窗口中运行/usr/bin/rebaseall
5 如果正常结束,rebaseall就大功告成。这时可以试试新安装的软件是否能正常运行了。
三、配置Cygserver
Cygserver是一个被设计在后台运行的程序,它对于运行在Cygwin中服务程序尤其有意义。
简言之呢,Cygserver是运行在宿主机的一个框架服务,Cygwin虚拟机中的所有服务实质上都内嵌在Cygserver服务中运行。
因此,在运行apache平台之前,必须要首先配置Cygserver服务。
1 cygserver-config
宿主机中的cygserver服务默认随宿主系统启动。如果需要手动启动执行, 执行 net start cygserver
四、运行
在第一部分中已经介绍,apache执行文件安装在 /usr/sbin/...
1 /usr/sbin/apachectl2 start
2 ps-a
能看到cygserver和httpd2等进程已经运行,如下图所示。
在宿主机浏览器中输入
http://localhost:80
页面访问成功显示:
It works!
五、其它
关于端口冲突。如果宿主机也配置Web服务器(比如IIS),这样就导致有2个程序同时监听80端口,造成端口冲突。
可通过修改Cygwin虚拟机中的Apache2服务器的端口解决。
(1)修改配置文件/etc/apache2/httpd.conf:
找到 Listen 80
增加一行:Listen 127.0.0.1:8080
找到 ServerName 127.0.0.1:80
增加一行:ServerName 127.0.0.1:8080
(2)重启apache服务器:
/usr/sbin/apachectl2 stop
/usr/sbin/apachectl2 start
在宿主机中输入
http://localhost:8080
显示:
It works!