(三)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!

 

posted @ 2013-12-24 20:37  翻书  阅读(1009)  评论(0编辑  收藏  举报