[每周讨论专题]--第一期--Apache是这样启动的

发表于:2007-05-25来源:作者:点击数: 标签:
[b:fe5c1b8171][url=http://bbs.chinaunix.net/forum/13/20031212/221690.html][size=20:fe5c1b8171]每周讨论专题[/size:fe5c1b8171][/url][/b:fe5c1b8171]【第一期】.......................................................[url=http://bbs.chinaunix.net

[b:fe5c1b8171][url=http://bbs.chinaunix.net/forum/13/20031212/221690.html][size=20:fe5c1b8171]每周讨论专题[/size:fe5c1b8171][/url][/b:fe5c1b8171]【第一期】.......................................................[url=http://bbs.chinaunix.net/forum/13/20031212/221690.html]点这里查看其他讨论专题[/url]

[b:fe5c1b8171][color=red:fe5c1b8171]  [size=24:fe5c1b8171]Apache是这样启动的[/size:fe5c1b8171][/color:fe5c1b8171][/b:fe5c1b8171]                                              
[quote:fe5c1b8171]
本期讨论主旨为,Apache在不同操作系统下面的开机启动、启动过程中的问题等等
[/quote:fe5c1b8171]

Apache是怎样启动的
如果配置文件中Listen的定义为默认的80端口(或其他1024以下的端口),那么启动Apache将需要root权限以将它绑定在这个特权端口上。一旦服务器开始启动并完成了一些诸如打开日志文件之类的操作,它将创建很多子进程来完成一些诸如侦听和回应客户端请求的工作。httpd主进程仍然以root用户的权限运行,而它的子进程将以一个较低权限的用户运行。这将由你选择的多道处理模块进行控制。

启动httpd执行文件的推荐方法是使用apachectl控制脚本。 此脚本设置了在某些操作系统中正常运行httpd所必需的环境变量。 apachectl会传递命令行的所有参数, 因此所有httpd的选项多半也可以用于apachectl。 你可以直接修改apachectl脚本, 改变头部的HTTPD变量使之指向httpd文件的正确位置, 也可以设置任意命令行参数,使之总是有效。

httpd被调用后第一个要做的事情是找到并读取配置文件httpd.conf。此文件的位置是在编译时设定的,但也可以象下面这样在运行时用 -f 命令行可选项来指定:

/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf

如果启动时一切都很正常,服务器将与终端分离并几乎同时出现平时的命令行提示符。这代表着服务器已经启动并开始运行。然后你就可以用你的浏览器去连接你的服务器来查看DocumentRoot目录下的测试文档及其页面链接里的其它文档的本地拷贝。


启动时发生的错误
如果Apache在启动过程中产生了致命错误,它将在退出前把描述这个错误的信息显示在终端上或者写入到ErrorLog中。一个最常产生的错误信息是“Unable to bind to Port ...”。这个信息主要由以下原因造成:

想由一个特权端口启动服务但没有以root用户登录,或 
启动服务时已经有另外的Apache实例在运行或其他的web服务器已经绑定了同样的端口。 
更多问题的解决办法,请参见Apache的FAQ。


随系统启动
如果你希望你的服务器在系统重启后仍保持运行状态, 你应该把httpd或者apachectl的调用加入到你的系统启动文件中 (典型文件为rc.local或rc.N目录下的某一文件)。 这将会以root权限启动Apache。当然,在此之前, 你必须保证你的服务器已经完成了安全和访问权限的设定。

apachectl脚本被设计为可以用作SysV初始化脚本, 它接受start, restart, 和stop参数, 并把它们转译为httpd的对应信号, 所以通常都可以连接apachectl到适当的初始目录, 但是需要检查你的系统对此的精确要求。



  我使用服务器多半是FreeBSD系统,所以在FreeBSD之中,要开机启动Apache,一般是在/usr/local/etc/rc.d/里面建立apache.sh脚本,内容如下:
[code:1:fe5c1b8171]
#!/bin/sh
###FileName=Apache.sh
###Author=HonestQiao

PREFIX=/usr/local/apache2

case "$1" in
start)
        [ "ssl" = "ssl" -a -f "$PREFIX/etc/apache2/ssl.crt/server.crt" ] && SSL=ssl
        [ -x ${PREFIX}/sbin/apachectl ] && ${PREFIX}/sbin/apachectl start${SSL} > /dev/null && echo -n ' apache2'
        ;;
stop)
        [ -r /var/run/httpd.pid ] && ${PREFIX}/sbin/apachectl stop > /dev/null && echo -n ' apache2'
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        ;;
esac

exit 0
[/code:1:fe5c1b8171]

当然,你也可以在rc.local里面设置Apache 的启动,在rc.local里面添加
[code:1:fe5c1b8171]
###Apache
/usr/local/apache2/bin/apachectl start
[/code:1:fe5c1b8171]

 HonestQiao 回复于:2003-12-12 16:38:46
如果是在OpenBSD之中,可以在
/etc/rc.local里面添加启动脚本
[code:1:12c2d23fcf]
/usr/local/apache/bin/apachectl start
[/code:1:12c2d23fcf]

 HonestQiao 回复于:2003-12-12 16:45:01
如果是在瘟到死系列操作系统之中,可以按照如下方法开机启动:

1、瘟到死95/98/Me:在开始=程序=启动,添加一个Apache运行文件的快捷方式
2、瘟到死2000/NT/XP/2003:运行CMD,然后运行
[code:1:bb427cf27d]
cd 到你的apache运行文件的目录里面
apache -k install       //把Apache安装为系统的服务
apache -k uninstall  //把Apache服务去掉
net start apache    //Apache服务启动
net stop apache    //Apache服务停止
net start apache2    //Apache2服务启动
net stop  apache2   //Apache2服务停止
[/code:1:bb427cf27d]

当然,也可以在启动菜单之中添加。

 IPphone 回复于:2003-12-12 16:51:23
我喜欢第一种的脚本,但我现在是加在 rc.local 里面。

 haohaoo 回复于:2003-12-13 00:41:55
我晕,看到标题以为讲启动过程的原理呢

 HonestQiao 回复于:2003-12-15 12:42:27
并没有局限于说什么,与启动相关的都可以讨论。
而且并不是我一个人唱独角戏,而是大家都来讨论,仁者见仁,智者见智

 jhsea3do 回复于:2003-12-16 14:37:03
觉得启动真的没什么好说的

httpd --help

就都知道了,
[code:1:e020211213]
win :    $apache_home/bin/apache -k [ start | stop ]
             or   net [ start | stop ] $apache_service_name

Linux: $apache_home/bin/apachectl start

RH: service httpd start
[/code:1:e020211213]

执行命令后看 netstat -an |grep 80 或者lynx http://localhost/检查是否运作

如果没有去看日志 $apache_home/logs/error_log

有问题上google搜

 IPphone 回复于:2003-12-16 15:19:59
me too

 HonestQiao 回复于:2003-12-16 15:51:20
但是搜索一下子可以看到:
[quote:f66ce0d57c]
启动APACHE2。0 FOR WIN98出现如下错误: 
如何利用Apache来启动机器里的某个程序? 
启动apache失败 : 
我的apache为什么不启动??? 
apache+mod_ssl如何自启动?----急 
怎样启动apache服务呢? 
启动问题! 
我启动apache时提示下面的错误信息,怎么回事 
启动apache的问题!! 
启动IE很慢,怎么办?? 
apache启动不了,用configtest测试,报告是没有错误 
apache,启动时出这样的错误,在线等。。。。 
请求帮助:aix 上启动了oralce带的apache但jsp不能执行? 
apache启动出错 
请教关于apache的启动错误 
apache 启动时wrong ELF data format: ELFDATA2MSB 
apache在2000下启动的问题 
Help Tom 无法启动 
apache2 无法启动 
在SOLARIES下面启动APACHE错误提示: 
solaris 8 下apache无法开机启动? 
关于apache-1.3.26的启动问题!!! 
启动apache 时,在httpd.conf中报PerlModule语法错误,why 
apache 启动错误, 有截图 
apache 启动问题?? 
如何设置Apache的默认启动文件为default.cgi? 
tomcat启动狂锉!找了很久不知道为什么!!!只好求救!!! 
在<virtualhost>内加user后apache不能启动 
怎样不启动sco unix自带的web服务?? 
在sol9上编译的apache 2.0.45不能启动? 
请问在SCO中如何让Apache随系统一起启动? 
编译resin之后,apache启动不起来,什么原因? 
WebSphere中Default Server进程自动重新启动! 
apache 启动后的问题 
在线等: 我的apache不能启动啊 
请问如何在SUSE linux pro8.2下启动Apache? 
help!httpd 无法启动~~ 
我的apache启动不起来?怎样启动? 
apache启动出错!!!!!!!!!! 
请教SCO5.0.7的APACHE配置文件到底是哪个?怎么启动服务? 
hp-ux下apache 启动问题! 
大虾救命! Apache 无法启动!!!! 
请教,装apache+tomcat 启动APACHE时报错。 
请教:apache启动后不能正常浏览 
请问怎样使一个cgi程序有root的权限?(apache以非root启动) 
xinetd启动apache的错误? 
如何实现apache每次跟随机器的启动而启动? 
怎样启动webserver呀????? 
apache 启动时没有任何反应???怪!! 
启动apache失败 
可以用一般用户启动apache服务么? 
请教一个关于apache启动的问题。 
我在启动APACHE的时候,碰到这么一个错误。。。 
噢,我的 APACHE 2 ,不知为什么不能自己启动了 
apache ssl启动无任何问题,可是却无法访问,请问是什么问题 
apache2.0.48启动问题,请高手指点 
安装apache后启动的时候出现的错误 
websphere administrative console启动不了 
服务不能自动启动,需手动开启 
jboss 启动报错,有难度的问题! 
jboss+tomcat的启动问题。 
linux字符界面下启动jboss的麻烦。 
APACHE+PHP4编译好后,启动APACHE提示找不到LIBPHP4.SO 
配完虚拟主机,启动apache时怎么老是出现这样的错误??? 
为什么两个tomcat 不能同时启动! 
linux下,如何启动apache? 
请问怎样启动was里的Remote Agent Controller服务? 
安装QMAIL后启动不了APACHE………… 
启动apache的问题. 
Apache启动不起来,大侠们帮帮我啊。 
为何无法启动apche 
为何无法启动apche 
怎样让apache随系统一起启动? 
求教,apache不能启动的问题!谢谢各位大哥 
无法启动apache,是什么原因 
高手帮帮我啊!Apache2(不能启动) 
高手帮帮我啊!Apache2(不能启动) 
机子重起后,apache不能启动,为什么? 
redhat下开机无法启动httpd 
急救! Apache不能启动? 
急!!!怎么样修改apach的默认启动用户 
求助--apache启动时报错 
solaris下启动tomcat失败 
[/quote:f66ce0d57c]

 jhsea3do 回复于:2003-12-16 17:03:24
我是说根据log里面的出错信息来查google,尤其是出错代码!

而且不要局限于查中文的文章。

[Tue Sep 09 10:04:04 2003] [error] [client 127.0.0.1] PHP Warning:  Unknown(): Unable to load dynamic library 
这一个一看就知道文件找不到!

还有这个
[Fri Nov 21 16:47:24 2003] [warn] proxy: No protocol handler was valid for the URL /XXXXXXXXXXXX/index.jsp. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.

启动不了的主要原因一般是错误的修改了httpd.conf

 seacaptain 回复于:2003-12-18 15:22:09
老大什么时候安排一个apache性能调优和测试的主题啊

 HonestQiao 回复于:2003-12-18 18:18:29
[quote:a4a2ada7b1="seacaptain"]老大什么时候安排一个apache性能调优和测试的主题啊[/quote:a4a2ada7b1]

到http://bbs.chinaunix.net/forum/13/20031212/221690.html
提出意见丫

 啊奥 回复于:2004-02-04 10:15:25
怎么样在W2K上启动APACHE支持ASP呢?各位老大跪求答案,我在线等,


问题很弱,不爽的可以顶我

 @哭@ 回复于:2004-03-06 16:36:55
什么玩意吗???
这还知顶啊

 @哭@ 回复于:2004-03-06 16:38:28
倒!!!!

 Vogel 回复于:2004-03-15 21:24:57
Das ist Scheisse

 baobaofei 回复于:2004-03-22 14:55:34
我对你们各位楼上都服得如绵绵江水不断地流呀。
因为我是初学者,从听说APACHE不到一周。
但我准备去学这,老大们能不能指一条明路,哪些东东最适合我目前情形学习。相关的学习资料什么的哪有链接,请高抬贵手贴个出来,以后各位老大的贴我必将拼死力顶呀

 baobaofei 回复于:2004-03-22 14:56:03
我也在线等呀

 jiadingjun 回复于:2004-03-22 21:57:53
[quote:4b3e112ca2="Vogel"]Das ist Scheisse[/quote:4b3e112ca2]
这位朋友不要以为自己会两句德语就在这儿卖弄。大家是在这儿讨论有关apache的问题,而不是骂人。

 HonestQiao 回复于:2004-03-23 08:01:25
[quote:d63f978197="baobaofei"]我对你们各位楼上都服得如绵绵江水不断地流呀。
因为我是初学者,从听说APACHE不到一周。
但我准备去学这,老大们能不能指一条明路,哪些东东最适合我目前情形学习。相关的学习资料什么的哪有链接,请高抬贵手贴个..........[/quote:d63f978197]

http://w.yi.org/ftp/FAPM

 yu10101 回复于:2004-10-31 17:34:10
初学者,喜欢:)


------------------------------------
喜欢自由,喜欢这里

 dtedu 回复于:2004-11-01 20:36:19
[quote:2d6dc7afbe="啊奥"]怎么样在W2K上启动APACHE支持ASP呢?各位老大跪求答案,我在线等,


问题很弱,不爽的可以顶我[/quote:2d6dc7afbe] 这个也可以解决...

 gregorian 回复于:2005-09-08 11:18:32
不错,可以学到不少东西。

 haoyufu 回复于:2005-09-08 17:30:34
只要把它看懂,做起来也就可以了

http://man.chinaunix.net/newsoft/ApacheManual/

原文转自:http://www.ltesting.net