首页 | Linux 基础 | 资讯动态 | Linux 应用 | Linux 服务器 | Linux 开发 | Linux 安全 | 专题 | 联盟论坛
  当前位置:主页>Linux 服务器>文章内容
Linux系统下Apache服务器设置与优化
来源:www.unix5.com 作者:riechelr_hl 发布时间:2007-05-26  

 

虚拟主机是在一台Web服务器上,可以为多个单独域名提供Web服务,并且每个域名都完全独立,包括具有完全独立的文档目录结构及设置,这样域名之间完全独立,不但使用每个域名访问到的内容完全独立,并且使用另一个域名无法访问其他域名提供的网页内容。

 

虚拟主机的概念非常有用,因为虽然一个组织可以把自己的网页挂在具备其他域名的服务器上的下级往址上,但使用独立的域名和根网址更为正式,易为众人接受。传统上,必须自己设立一台服务器才能达到单独域名的目的,然而这需要维护一个单独的服务器,很多小单位缺乏足够的维护能力,更为合适的方式是租用别人维护的服务器。没有必要为一个机构提供一个单独的服务器,完全可以使用虚拟主机能力,使服务器为多个域名提供Web服务,而且不同的服务互不干扰,对外就表现为多个不同的服务器。

 

有两种设定虚拟主机的方式,一种是基于HTTP 1.0标准,需要一个具备多IP地址的服务器,再配置DNS 服务器,给每个IP地址以不同的域名,最后才能配置Apache的配置文件,使服务器对不同域名返回不同的Web文档。由于这需要使用额外的IP地址,对每个要提供服务的域名都要使用单独的IP地址,因此这种方式实现起来问题较多。可以在一个网络界面上绑定多个IP地址,Linux下需要使用ifconfig的 alias参数来进行这个配置,但此时会影响网络性能。

 

HTTP 1.1标准在协议中规定了对浏览器和服务器通信时,服务器能够跟踪浏览器请求的是哪个主机名字。因此可以利用这个新特性,使用更轻松的方式设定虚拟主机。这种方式不需要额外的IP地址,但需要新版本的浏览器支持。这种方式已经成为建立虚拟主机的标准方式。要建立非IP基础的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机。因此需要更改DNS服务器的配置,为服务器增加多个C NAME选项,如:

linux IN A 192.168.1.64

vhost1 IN CNAME linux

vhost2 IN CNAME linux

 

基本的设置选项都是为了linux主机设定的,如果要为vhost1和vhost2设定虚拟主机,就要使用VirtualHost语句定义不同的选项,在语句中可以使用配置文件前面中的大部分选项,而可以重新定义几乎所有的针对服务器的设置。

 

NameVirtualHost 192.168.1.64

DocumentRoot /www/data

ServerName linux.example.org.cn

DocumentRoot /vhost1

ServerName vhost1.example.org.cn

DocumentRoot /vhost2

ServerName vhost2.example.org.cn

 

这里需要注意的是,VirtualHost的参数地址一定要和NameVirtualHost定义的地址相一致,必须保证所有的值严格一致,Apache服务器才承认这些定义是为这个IP地址定义的虚拟主机。

 

此外,定义过NameVirtualHost之后,那么对这个IP地址的访问都被区分不同的虚拟主机进行处理,而对其他IP地址的访问,例如127.0.0.1,才应用前面定义的缺省选项。

 

另外一些加速方法

 

1、 Web 页面和 CGI 页面采用了浏览器缓冲技术。具体的方法可以参考附录一:采用 mod_gzip 加速Apache

2、 不要让 X Windows 运行在你的 Web 服务器上,用 Ctrl-Alt-Backspace 关闭 X 。

3、 在 CGI 脚本中:

文件 I/O:打开的文件数目越少越好。

Shell 命令:采用全路径来调用 shell 命令。

在Web 页面目录中,不要让文件数超过 1000 个,文件越多花费在定位上的时间也越多。

4、 在 Web 服务器上的图片越少越好,保证每个图片都经由图片压缩器运行。

5、 应该配置尽量多的内存,内存的大小对系统性能影响非常大。

6、 可以用strace命令调试调用。

当你不确定httpd.conf里的设置更改对进程的影响时,strace或许能奏效,通过观察输出的行数,可以判断对一个固定页面访问时需要的调用数。如:

#ps –ef|grep http

#strace –p http_pid

accept(18, 0xFFBEFA50, 0xFFBEFA74, 1) = 3

fcntl(24, F_SETLKW, 0x001D0E10) = 0

sigaction(SIGUSR1, 0xFFBEF908, 0xFFBEF98 = 0

getsockname(3, 0xFFBEFA60, 0xFFBEFA74, 1) = 0

setsockopt(3, 6, 1, 0xFFBEF9C4, 4, 1) = 0

read(3, " G E T / c a s e i n c".., 4096) = 590

sigaction(SIGUSR1, 0xFFBED800, 0xFFBED880) = 0

time() = 1043377552

stat("/docroot/osc-new/www/caseincident/listCase.php", 0x0022BF5 = 0

umask(077) = 0

共13页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 11 [12] [13] 下一页
 
如果您对本文有任何疑问或者建议,请到论坛讨论区发表您的意见: >> 论坛入口
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
  热点文章
·在Linux x86上安装Oracle数据库1
·Linux操作系统下IPTables配置方
·Linux系统下SVN服务器的搭建过程
·Linux架设代理服务器(1)
·Linux系统下的Oracle数据库编程
·Linux 服务器集群系统
·Linux下免费数据库PostgreSQL开
·高端Linux操作系统服务器技术之
·在Ubuntu Linux 上架设Web服务器
· 在 Linux 上构建 Web spider
·Debian Linux操作系统下启动远程
·用LVS在Linux上搭建负载均衡的集
  相关文章
·详细解析Apache服务器实现的用户
·MySQL数据库引擎快速指导
·Linux 服务器集群系统实现方案详
·mysql 优化参数(十项)详解设置
·在linux下设置WWW Server
·在Linux上建立DNS服务器
·Oracle数据库的备份与恢复
·ORACLE数据库的启动和关闭
·如何在你的Linux机器上安装运行O
·Linux操作系统下IPTables配置方
·Linux 服务器集群系统
·Linux集群的安装与并行计算

本站信息源至:互联网络,均为学习,交流所用,如有版权问题,请联系我们.
站长QQ:397422079 E_mail:riechelr_hl@unix5.com
转载本站内容请注明原作者名.谢谢!