web服务器apache 
田逸(sery@163.com) 《网管员世界》2006年第2期

相信使用过计算机的人,都应该有过访问web服务器的经历。在网站浏览新闻、登录邮件服务器收发邮件、通过网络购物、以浏览器方式配置防火墙等等,无一例外都有一个web服务器在为访问者提供服务。尽管有别的方式来实现对设备或服务的访问(如配置卫星调制解调器),但以web方式提供访问的策略依然是最受欢迎的,因为它更直观,也更方便。也是因为这样,是的web服务器得以更广泛的流行。 
apache是linux主流的服务器,为linux的迅速繁荣立下汗马功劳。根据资料显示,截至2005年12月,在internet上,apache服务器以70.98%的绝对优势雄居web服务器之首。在这节内容中,我们就话花些时间来讨论linux下大名鼎鼎的web服务器apache。请初学者注意,不要花费心思去搜寻名字为apache这样的软件包,它现在的名字是httpd。

apache 服务器的安装 
有两种安装apache服务器的机会:安装linux操作系统的时候选择安装web服务器和安装完系统后安装apache服务器。如果是在安装linux操作系统期间没有安装apache,这就需要使用包文件来安装。一个运行着的系统,你怎么知道它装没装apache服务器?用下面这个命令来检查 # rpm ╟qa | grep httpd ,如果没有输出,则表明没有安装。下图是某个安装了apache服务器输出的一个输出范例。

提示:如果是以源码安装的apache服务器,则此种方法无效,需要用find工具查找httpd文件是否存在。 
1、rpm包的安装。linux的安装光盘和互联网上,都可以得到apache的rpm安装包,然后把安装包复制到硬盘,并切换到安装包文件所在的目录。本案以httpd-2.0.52-9.ent.rpm为例,执行命令 # rpm ╟ivh httpd-2.0.52-9.ent.rpm ,然后再执行 # rpm ╟ivh httpd-manual-2.0.52-9.ent.rpm 把手册也安装上去。 
2、源码安装。到网站www.apache.org下载欲安装的版本,笔者喜欢尝试最新的版本,当前的最新有效版本为httpd-2.2.0.tar.gz 。在httpd-2.2.0.tar.gz 文件所在的当前目录解压文件 # tar zxvf httpd-2.2.0.tar.gz ,然后切换目录到 httpd-2.2.0 ,进行配置 # cd httpd-2.2.0 ; ./c --prefix=/usr/local/apache ,顺利完成这步后,接着进行编译安装 # make;make install 。其中,配置这一过程,使用了选项“--prefix=/usr/local/apache”来指定apache的安装目录,使apache服务器所需的大部分文件都被复制在这个目录里。实际上,配置是一个很灵活的选择,根据需要可以添加更多的选项,来支持更多的功能。由于这里打算先讲述基本功能,其它选项将在后面的应用中逐步增加。

配置文件 
apache的配置文件是httpd.conf,一般在/etc/http/conf或/usr/local/apache/conf目录,以rpm包形式安装的apache的配置文件的位置是/etc/httpd/conf/httpd.c apache服务器进行得最多的操作恐怕就是在不时更改这个文件的内容。当然,如果只是运行简单的静态网页,也可以不用对它做任何更改。 
打开配置文件httpd.c

上传网页文件及目录 
上传网页文件及目录的最佳方式是启用ftp服务。关于怎样安装、配置、启用ftp服务在这里不再介绍。创建一系统用户,使该用户对目录/usr/local/apache/htdocs具有读写权限或者该用户的主目录为/user/local/apache/htdocs。在这里我们创建一用户,使其主目录为apache的根文档目录。# useradd ╟d /usr/local/apache/htdocs webuser //添加的用户为webuser, 
# passwd webuser //再给该用户设置一个访问密码。这样就可以很方便的修改或上传网页文件和目录了。有的人认为,用ssh客户端工具也可以实现文件的上传,但这是不方便的,因为ssh客户端工具只可以传送文件而不能上传目录。

启用/关闭apache服务 
上面的步骤都准备好以后,就可以启用这个网站服务器了。启用方法如下: 
# /usr/local/apache/bin/apachctl start //源码安装的启动方式 
#/usr/local/apache/bin/apachectl stop 
# service httpd start //rpm包安装的启动方式 
# service httpd stop 
如果不出意外,apache服务器将如我们所期待的那样运行起来,我们只要在某台能访问apache服务器的计算机浏览器里输入apache服务器的ip地址或者预先解析好的域名,网站的主页就会出现在浏览器里。在apache服务器端,通过输入命令 # ps -aux | grep httpd 检查apache服务器是否正在运行。到此,一个具备基本功能的apache服务器诞生了。

虚拟主机 
有时候,我们可能需要用一个apache服务器来做多个web服务器,比如运行几个不同的网站,这样就可以大大地节省开支。 
使用虚拟主机大致有以下几个步骤: 
1、 确定使用虚拟主机的方式。虚拟主机有基于域名、ip、端口等几种形式,应该根据自己的实际情况来决定。 
2、 修改配置文件/etc/httpd/conf/httpd.c / usr/local/apache/conf/httpd.conf.在这个文件里,已经给出了如何更改的范例,它是以注释方式出现的。只要按照范例的格式添加需要的内容即可。然后保存退出配置文件。 
3、 域名解析(基于域名的虚拟主机)。这一步需要在域名服务器上进行。 
4、 启用/关闭虚拟主机。启用/关闭apache守护进程即可,但这将关闭所有的web服务。能否单独关闭某个虚拟主机,我本人没这方面的经验。 
接下来,我就给出以个虚拟主机的实例。先描述一下需求:一台服务器,要求运行一个以php为脚本的网站,另外还要用它来做网络流量监控(需要web服务)。在这里,我们采用二进制源码包的方式来安装配置apache虚拟服务器,以便于对apache服务器有更深刻的理解。 
(一)安装apache服务器。从www.apache.org下载包httpd-2.2.0.tar.gz到目录/root,然后执行操作 
# tar zxvf httpd-2.2.0.tar.gz //包解压 
# cd # tar zxvf httpd-2.2.0. 
#./c --prefix=/usr/local/apache --enable-module=most --enable-shared=max 
# make 
# make install 
到这儿,apache就算安装好了,先测试一下,运行命令 # /usr/local/apache/bin/apachectl start ,然后在与之联网的计算机的浏览器里输入运行apache服务的计算机的ip地址,出现测试页面表明配置一切正常。 
(二)安装php。下载包php-4.3.11.tar.gz到目录/root,然后执行下面的操作 
# tar ╟zxvf php-4.3.11.tar.gz //解压文件 
#./c -╟prefix=/usr/local/php -╟with-apxs2=/usr/local/apache/bin/apxs //正常//完成后会在/usr/local/apache/modules 里生成文件 libphp4.so,并且会在//apache的配置文件httpd.c loadmodule php4_module //modules/libphp4.so 
# make 
# make install 
#cp php.ini-dist /usr/local/lib/php.ini //拷贝文件

完成后看是否真在目录/usr/local/apache/modules生成文件libphp4.so,再打开配置文件httpd.c loadmodule php4_module modules/libphp4.so是否被自动追加。 
(三)修改apache配置文件/usr/local/apache/conf/httpd.c 
typeadd application /x-httpd-php .php4 到307行的位置,当然其他位置也是可以的。请特别注意:.php4前面有一个空格。我第一次配置php整合apache的时候就犯了这个错误,用了好几天的时间才弄明白的。php前面那个“.”(小黑点)一定不要写漏了,会有什么后果,请读者自己去尝试一下。 
(四)启动一下apache服务器。找几个php脚本的网页文件,把它复制到apache指定的根文档目录/usr/local/apache/htdocs,然后在与之联网的计算机的浏览器中输入apache所在机器的url(形如 http://192.168.100.10/test.php),来检验一下配置是否成功。 
(五)创建虚拟服务器。apache/2.2.0与以前的版本有些差异,它是以包含文件的方式来加载用户定义的虚拟主机配置,前面的版本定义虚拟主机就在httpd.c /usr/local/apache/conf/extra/httpd-vhosts.c conf/extra/httpd-vhosts.c conf/extra/httpd-vhosts.conf,这一行在httpd.conf的行号是394。然后保存后退出。接着我们打开文件/usr/local/apache/conf/extra/httpd-vhosts.c 

<virtualhost *:80> 
serveradmin webmaster@dummy-host.example.com 
documentroot /www/docs/dummy-host.example.com 
servername dummy-host.example.com 
serveralias www.dummy-host.example.com 
errorlog logs/dummy-host.example.com-error_log 
customlog logs/dummy-host.example.com-access_log common 
</virtualhost> 
等我们先安装配置mrtg,然后再回过头来修改文件/usr/local/apache/conf/extra/httpd-vhosts.c 
(六)启用交换机的snmp功能。要监控连接在交换机每个端口的服务器的网络流量,必须启用交换机的snmp,这样就不必更改被监控的服务器的任何设置。关于怎样启用交换机的snmp,请参照相关文档。 
(七)安装和配置mrtg。把软件包下载到硬盘,解压后直接安装就是。配置mrtg有点复杂,在这里仅仅给出方法,具体意思就不做说明,请大家自己去查手册。 
#./cfgmaker --global "workdir: /usr/local/mrtg/html" 
--global "ic /mrtg" --global "language: chinese" 
--global "opti growright,bits" --show-op-down 
--ifref=nr --ifdesc=descr --output=/etc/mrtg/mrtg.cfg 
public@192.168.100.250>/dev/null //是一个整行,交换机的snmp的 
//community的值是public 
#./ indexmaker -t "title" -o /usr/local/mrtg/html/index.html 
/etc/mrtg/mrtg.cfg 
(八)修改虚拟主机配置文件。需要指定根文档目录、服务器名称这几项。

namevirtualhost *

<virtualhost *> 
serveradmin webmaster@sery.com //假定域名为sery.com 
documentroot /usr/local/mrtg/html 
servername mrtg.sery.com 
errorlog /usr/local/apache/logs/error_log 
customlog /usr/local/apache/logs/access_log combined 
directoryindex index.html index.php 
</virtualhost>

保存后退出。如果要对虚拟主机的访问进行用户验证,还需要在apache的主配置文件对虚拟机的根文档目录进行相关的处理。把下面的行插入到apache的主配置文件httpd.c

<directory "/usr/local/mrtg/html"> 
authname "mrtg 
authtype basic 
authuserfile /usr/local/apache/.mrtg //带点是为了使文件的属性为隐藏 
require valid-user 
</directory>

保存后退出。然后运行命令 # /usr/local/apache/bin/htpasswd ╟c /usr/local/apache/.mrtg sery 
按照提示设定用户sery的访问密码。 
(九)做域名解析。在域名服务器上解析主机mrtg.sery.com. 
(十)启用apache服务。用指令 # ps ╟aux | grep httpd 检查apache是否正常运行,然后在另外的计算机的浏览器里输入apache服务器的url,如输入www.sery.com则应该访问到主配置文件设定的网页,如果输入mrtg.sery.com则访问上面设定的虚拟机页面,并且需要输入正确的用户名和密码才能访问。

总结 
通过上面的实践,我们可以得出这样一个结论:apache服务器功能设定的主要操作就是修改配置文件—主配置文件httpd.con及包含配置文件。当然,apache的配置不仅仅是上文所描述的那些,可以说是非常丰富,也是非常灵活的,限于篇幅,不再详叙。至于要让apache随系统启动,可以把守护进程/usr/local/apache/bin/httpd&加在文件/etc/rc.local里。

偏方:为了在同一环境下使用更多的apache服务,可以安装多个apache到不同的目录,安装目录在安装过程中的配置操作 ./c ╟ prefix=<安装目录> 制定,所有apache的配置原则都是一致的。所有配置完成后,把他们全部启动起来。关于配置多个虚拟主机与安装多个apache服务,究竟有多大的差别,望各位读者自己去做评判。

本文转自sery51CTO博客,原文链接:http://blog.51cto.com/sery/5546 ,如需转载请自行联系原作者

一招一式攻克linux(五)相关推荐

  1. 一招一式攻克linux

    http://sery.blog.ccidnet.com/blog/ccid/uid_3587/dirid_1.html---佩服田逸 一招一式攻克linux之一 第一招 安装linux 关于wind ...

  2. 一招一式攻克linux(四)

    linux下的文件服务器 作者:田逸(sery@163.com) <网管员世界>2006年第一期 对于一个真实的运行环境而言,配置和启用文件服务器都是很有必要的.把重要的数据集中存储和管理 ...

  3. 攻克 Linux 系统编程

    课程亮点 完整学习路线图,系统掌握核心知识点 内核源码深入分析,知其然更知所以然 高频问题全面汇总,精准定位症结所在 八大主题商业案例,实操中获得拔高提升 专家推荐 曾与宇文拓共事五年,他对技术的钻研 ...

  4. Linux五种IO模型性能分析

    转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型性能分析 目录(?)[-] 概念理解 Linux下的 ...

  5. Windows五种IO模型性能分析和Linux五种IO模型性能分析

    Windows五种IO模型性能分析和Linux五种IO模型性能分析 http://blog.csdn.net/jay900323/article/details/18141217 http://blo ...

  6. 资深程序员带你攻克 Linux 系统编程

    作者简介:宇文拓,近十年 Linux C/C++ 开发经验,现就职于某创业公司,负责服务器架构与系统设计.曾就职于某通信业知名美企,负责核心网和防火墙产品研发.在 GitHub 上发布了开源项目 An ...

  7. 深入聊聊Linux五种IO模型

    一.相关概念讲解 1.同步与异步 同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列.要么成功都成功,失败都失败,两个任务的状态可以 ...

  8. linux 五种IO模型 简介

    Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO). 同步:调用端会一直等待服务 ...

  9. 详解Linux 五种IO模型

    原文:https://www.jianshu.com/p/486b0965c296 上一篇 同步.异步.阻塞.非阻塞 已经通俗的讲解了,要理解同步.异步.阻塞与非阻塞重要的两个概念点了,没有看过的,建 ...

最新文章

  1. c语言le后能跟变量吗,【C语言】C语言常量和变量
  2. windows下rpc框架thrift的环境配置
  3. TensorFlow1.8.0正式发布,Bug修复和改进内容都在这里了
  4. 春招不迷茫,模板刷题101实验室上线啦
  5. 几个大神程序猿更喜欢用的Python编辑器!
  6. java面试题三 位运算符
  7. wps分享为什么要登入_【知识分享】柴油为什么要加氢处理?
  8. 在PyTorch中转换数据
  9. CruiseControl.NET与TFS结合的配置文件
  10. JAVA中用于处理字符串的 三兄弟
  11. 【clickhouse】clickhouse 表引擎之 set
  12. 七阶拉丁方阵_C语言实例 拉丁方阵
  13. 基站的小区号256变换
  14. 平台式惯性导航系统简介(持续更新ing)
  15. lstm实例:基于lstm的DGA域名检测
  16. ClickHouse数据库介绍
  17. C51单片机 SIM900A 手机给门禁解锁 智能家居 【C程序代码已开源,更新至Ver4.0】...
  18. CCF计算机职业资格认证数字排序问题
  19. Conduit-面向Kubernetes的轻量化服务网格
  20. 打印机打印中文,截取字符时出现乱码问题

热门文章

  1. Linux中Iptable防火墙规则的应用
  2. SQL SERVER 2008自动备份维护计划
  3. 如果在BackgroundWorker运行过程中关闭窗体…
  4. 代码 删除的stach 找回_阿里大佬教你,如何写好 Java 代码!
  5. 零基础入门学习Python,这13个Python惯用小技巧一定要收藏
  6. python读写文件函数_Python读写文件
  7. c# wpf listbox 高度_农村太阳能路灯厂家报价表2020(不同高度)
  8. win10终端仿真程序_win10下子系统的使用
  9. 桌面上的计算机打开速度慢,电脑开机进入桌面特别慢
  10. c语言统计输入文本不同字母单词数,【C语言统计不同单词个数编写一个程序,输入一个句子,然后统计-查字典问答网...