Apache学习笔记(二)—— 运行apache(1)

这篇博客介绍了在UNIX/Linux系统中如何手动和自动启动Apache服务器。手动启动涉及使用httpd命令,而自动启动部分讲解了BSD和SysV两种风格的区别,并提供了配置启动脚本的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在UNIX/Linux的系统中,重要的服务一般都是作为系统进程在后台运行的,它们在后台不断的处理请求,而如何运行和管理它们,成了每一个系统管理员要做的重要事情之一。

运行Apache

手动启动Apache

由于Apache程序是通过可执行文件httpd启动的,因此手动启动Apache是容易的,如下命令就可以了:


如果返回上面的错误,说明Apache没有找到默认的服务器主机名,这时Apache会使用本机的IP地址作为服务器名称,当然这样运行也是没有问题的。如果返回一个shell提示符,则一切正常。

我们通过访问主页,会看见一个“”It works!“”的页面。

我们也可以通过命令查看httpd程序是否在运行。


上面的ps命令中,a参数来显示 所有的进程,x参数显示所有终端的进程,u参数显示程序所属用户,| grep httpd 则是通过grep程序过滤出所有的httpd内容。从上面的结果可以看出,httpd正在后台运行。

不了解ps命令的同学可以看  Linux 之 ps命令 。

注:只有一个httpd 进程是属于root ,它永远不响应任何用户的请求,只是负责创建httpd的子进程,这些子进程才是提供Web访问的服务进程。在这里子进程的用户名是daemon。

自动启动Apache服务器

通常在Linux上有两种启动风格:BSD和SysV ,大多数的Linux发行版都使用SysV风格来启动。

BSDBerkeley Software Distribution,伯克利软件套件)是Unix的衍生系统,1970年代伯克利加州大学(University of California, Berkeley)开创。BSD用来代表由此派生出的各种套件集合。

BSD 常被当作工作站级别的Unix系统,这得归功于BSD 使用授权非常地宽松,许多1980年代成立的计算机公司,不少都从BSD 中获益,比较著名的例子如DECUltrix,以及Sun公司SunOS1990年代BSD 很大程度上被System V 4.x版以及OSF/1系统所取代,但其开源版本被采用,促进了因特网的开发。

System V, 曾经也被称为AT&T System V,是Unix操作系统众多版本中的一支。它最初由AT&T开发,在1983年第一次发布。一共发行了4个System V的主要版本:版本1、2、3和4。System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如”SysV 初始化脚本“(/etc/init.d),用来控制系统启动和关闭,System V Interface Definition (SVID)是一个System V如何工作的标准定义。

AT&T出售运行System V的专有硬件,但许多(或许是大多数)客户在其上运行一个转售的版本,这个版本基于AT&T的实现说明。流行的SysV派生版本包括Dell SVR4和Bull SVR4。当今广泛使用的System V版本是SCO OpenServer,基于System V Release 3,以及SUN Solaris和SCO UnixWare,都基于System V Release 4。

System V是AT&T的第一个商业UNIX版本(UNIX System III)的加强。传统上,System V被看作是两种UNIX"风味"之一(另一个是BSD)。然而,随着一些并不基于这两者代码的UNIX实现的出现,例如LinuxQNX,这一归纳不再准确,但不论如何,像POSIX这样的标准化努力一直在试图减少各种实现之间的不同。

它们之间的区别主要为:

 Sytem VBSD
Root脚本位置/etc/init.d/etc/rc.d
默认ShellBshellCshell
文件系统数据/etc/mnttab/etc/mtab
内核位置/UNIX/vmUnix
打印机设备lprlp
字符串函数memcopybcopy
终端初始化设置文件/etc/initab/etc/ttys
终端控制termiotermios
BSD

由于BSD风格的脚本倾向于使用顺序运行,因此只需要在启动脚本的后面加上你的程序路径和名称就可以了。

例:直接在rc文件的最后面加上如下代码

/usr/local/apache/bin/httpd

现在每次启动计算机后都会自动运行httpd,如果要取消服务,则只需要简单地注释掉这一行就可以了。当然,更合理的方法是编写一个启动脚本(脚本中包含路劲判断、出错信息控制等内容),然后在rc的后面加上对脚本的调用。

SysV

sysv风格将Linux的启动分为很多不同的等级,每一个级别有不同的定义:

[root@localhost etc]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:

0 — 表示关机

1 — 表示单用户模式

2 — 表示多用户的图形模式

3 — 表示多用户的shell模式

4 — 很少使用

5 — 表示启动图形界面的多用户模式

6 — 表示重启

id:5:initdefault:

上面当前系统的默认启动级别为5.

通常在服务器上使用启动级别3 作为默认设置。

现在我们做两件事:一是写一个启动脚本,将它放入 /etc/init.d 目录中,二是使用In制作链接文件到相应的启动级别目录中。

可以直接使用 /usr/local/apache/bin/ 目录下的apachectl 文件 ,将它复制到/ect/init.d中,然后将它链接到rc3.d目录和rc6.d目录。

[root@localhost /]# cp /usr/local/apache2/bin/apachectl /etc/init.d
[root@localhost /]# ln -s /etc/init.d/apachectl /etc/rc3.d/S90httpd
[root@localhost /]# ln -s /etc/init.d/apachectl /etc/rc0.d/K90httpd
[root@localhost /]# ln -s /etc/init.d/apachectl /etc/rc6.d/K90httpd

以后要是使用启动级别3,那么Linux启动时就会自动启动httpd。

下面我们改变系统启动级别为3,重启:

id:3:initdefault:

可以看见:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值