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

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

每周讨论专题【第一期】.......................................................点这里查看其他讨论专题

  Apache是这样启动的

QUOTE:
本期讨论主旨为,Apache在不同操作系统下面的开机启动、启动过程中的问题等等

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脚本,内容如下:

[Copy to clipboard] [ - ]
CODE:
#!/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

当然,你也可以在rc.local里面设置Apache 的启动,在rc.local里面添加

[Copy to clipboard] [ - ]
CODE:
###Apache
/usr/local/apache2/bin/apachectl start

如果是在OpenBSD之中,可以在
/etc/rc.local里面添加启动脚本

[Copy to clipboard] [ - ]
CODE:
/usr/local/apache/bin/apachectl start

如果是在瘟到死系列操作系统之中,可以按照如下方法开机启动:

1、瘟到死95/98/Me:在开始=程序=启动,添加一个Apache运行文件的快捷方式
2、瘟到死2000/NT/XP/2003:运行CMD,然后运行

[Copy to clipboard] [ - ]
CODE:
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服务停止

当然,也可以在启动菜单之中添加。
我喜欢第一种的脚本,但我现在是加在 rc.local 里面。
我晕,看到标题以为讲启动过程的原理呢
并没有局限于说什么,与启动相关的都可以讨论。
而且并不是我一个人唱独角戏,而是大家都来讨论,仁者见仁,智者见智
觉得启动真的没什么好说的

httpd --help

就都知道了,

[Copy to clipboard] [ - ]
CODE:
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

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

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

有问题上google搜
me too
但是搜索一下子可以看到:

QUOTE:
启动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失败

我是说根据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