Apache虚拟主机相关配置

软硬维护No Comments »

虚拟主机的概念:安装了Apache程序的主机被称为网页服务器,在此服务器上可同时运行多个不同的网站,而每个网站可以被配置为不同的身份,这个身份就被成为虚拟主机。打个比方,如果网页服务器代表某个人的本名,则虚拟主机则是这个人的绰号。

参考:http://www.uplinux.com/download/doc/apache/ApacheManual/vhosts/

1. 不配置虚拟主机,直接以网页服务器的网页文件目录做为网站目录。网页服务器有一个IP地址,并且通过此IP地址访问,这也是最简单的配置。

在Apache的配置文件,httpd.conf中设置

ServerName 127.0.0.1

DocumentRoot “d:/phproot”

这样就可以通过http://127.0.0.1访问phproot下的文件。

通过ServerAlias参数配置对特定的虚拟主机设定多个名称。

Read the rest of this entry »

Related posts

Windows+Apache 下运行perl脚本

软硬维护No Comments »

之前介绍安装awstats的环境是Windows+IIS,日前在一台Windows+Apache的机子上安装awstats却出现了一些小问题。在进行完一些基础的配置之后,才发现浏览awstats.pl的时候,出来的它的源码而不是日志统计的结果。归结原因,在于Apache并不是直接就支持perl脚本的,还需要对其httpd.conf文件进行下配置。

  1. 首先还是要安装ActivePerl。 按照默认配置安装在c:\perl目录下。
  2. 配置perl脚本的运行目录。一般情况下在http.conf中有这样一句:
    #ScriptAlias /cgi-bin/ “C:/Apache/cgi-bin/”
    去掉#,表示cgi-bin目录为perl脚本的目录。这意味着你需要把perl脚本放到这里才能运行。
    如果你希望在任何目录下的脚本文件都可以运行,就要按照下面的配置。
  3. 找到这行:Options Indexes FollowSymLinks
    修改为
    Options Indexes FollowSymLinks ExecCGI
  4. 找到这行:#AddHandler cgi-script .cgi
    修改为
    AddHandler cgi-script .cgi .pl
  5. 修改perl脚本文件中的perl path。将perl脚本的首行修改为 #!c:\Perl\bin\perl。否则会出现浏览器500错误。

这样就OK了。再说一下用awstats分析Apache的日志。由于Apache日志文件不是按天分割的,需要首先用cronolog对Apache的日志文件格式进行改造,然后再用于awstats分析。

Related posts

Apache下利用mod_rewrite防盗链

软硬维护4 Comments »

最近发现服务器的流量猛增,打开网页速度很慢,查看了一下Apache的log,发现:

166.111.208.185 – - [18/Dec/2007:22:27:55 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 2120152
166.111.208.185 – - [18/Dec/2007:22:27:56 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 2025202
166.111.208.185 – - [18/Dec/2007:22:27:56 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 757441
59.70.246.42 – - [18/Dec/2007:22:27:57 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 3012532
59.70.246.42 – - [18/Dec/2007:22:27:58 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 2809812
59.70.246.42 – - [18/Dec/2007:22:28:00 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 3033136
59.70.246.42 – - [18/Dec/2007:22:28:00 +0800] “GET /music/tea.mp3 HTTP/1.1″ 206 3036570

原来是因为服务器上的mp3文件被盗链了或者被迅雷这类的下载软件当成了种,被别人多线程下载,造成带宽被占,Apache响应不过来。

在网上找了一下,发现利用mod_rewrite模块就可以很好的完成Apache 的防盗链。

1. 在httpd.conf中加载mod_rewrite模块:

  • 去掉#LoadModule rewrite_module modules/mod_rewrite.so 中的#号
  • <Directory />
    Options FollowSymLinks
    AllowOverride None
    </Directory>,将AllowOverride None改成AllowOverride All

2. 在music目录下新建一个.htaccess文件

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?xmulib\.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://210.34.4.17/.*$ [NC]
RewriteRule \.(mp3|jpg)$ http://www.xmulib.net [R,NC]
#RewriteLog “logs/rewrite.log”
#RewriteLogLevel 3

参数说明:

  • RewriteCond :rewrite规则定义,只有满足这里定义的规则,才执行rewrite
  • %{HTTP_REFERER} :表示链接的来源参照
  • !^http://(www\.)?xmulib\.net/.*$ :表示与%{HTTP_REFERER}进行匹配的字符串
  • [NC] :nocase,表示在进行匹配的时候忽略大小写。当有多个RewriteCond时默认其关系为And,如果要改成OR,可用[NC, OR]表示
  • RewriteRule :当满足RewriteCond条件时,访问mp3或者jpg文件就会被重定向到http://www.xmulib.net
  • RewriteLog : 日志文件,帮助分析rewrite规则是否正确

Related posts

用cronolog处理Apache HTTP Server log

软硬维护No Comments »

Apache有两个log文件access.log 和error.log。error.log中存放诊断信息和处理请求中出现的错误,由于这里经常包含了出错细节以及如何解决,如果服务器启动或运行中有问题,首先就应该查看这个错误日志。access.log 访问日志中会记录服务器所处理的所有请求。

在默认情况下,log记录存在于这两个单独的文件中,当网站访问量较大或者错误信息较多的时候,log文件的大小会急速增长。一般每10000个请求,访问日志就会增加1MB或更多。在这种情况下,如果当日志文件过大,就很难通过日志文件来分析。而且,对于AWStats这样的日志分析软件,它要求日志文件是按日存储的。

Apache httpd可以通过管道将访问记录和出错信息传递给另一个进程,而不是写入一个文件。只要用管道操作符”|“后面跟一个可执行文件名,就可以使这个程序从标准输入设备获得事件记录。Apache在启动时,会同时启动这个管道日志进程,并且在运行过程中,如果这个进程崩溃了,会重新启动这个进程(所以我们称这个技术为”可靠管道日志”)。

Apache推荐使用cronolog程序对log文件进行截断并按日存放。根据web服务器的操作系统,下载win32 version的cronolog程序。

  1. 复制cronolog.exe to /apache/bin/
  2. 在httpd.conf中:
    用CustomLog “|bin/cronolog.exe logs/global/access%Y%m%d.log” combined
    替换 CustomLog logs/access.log
    用ErrorLog “|bin/cronolog.exe logs/global/error%Y%m%d.log”
    替换 ErrorLog logs/error.log
  3. 重启Apache

Related posts

Web Server调用PHP的两种方式

经验技巧No Comments »

近日一台服务器上的Web服务不正常,连接速度和打开页面都很慢。经查发现主机CPU和内存占用率都很高,查看发现进程中竟然有很多PHP.exe。这台服务器在配置Web服务时,采用的时IIS+PHP的组合,IIS采用CGI方式调用PHP,这样客户端每浏览一个网页,就会调用一次PHP.exe,在大量访问的情况下,服务器的负担可想而知。

从PHP4.3版本开始,PHP就提供了两种方式供Web Server运行PHP,一种是原来的CGI方式,还有一种就是CLI(command line interface)。

CGI 方式除了上面所说的在每打开一个php页面时都会产生一个PHP.exe进程以外,还包括一些不安全因素,存在某些安全漏洞。

CLI 方式,把PHP视为Web Server 的一个模块进行调用,比CGI方式提供更多选项和更好的性能。

注意:对于php.exe文件,PHP4中的是CGI方式的(在php目录下的cli文件夹下的php.exe是cli方式的),而PHP5中是CLI方式的(另有一个名为php-cgi.exe)。
IIS和Apache都支持模块化调用PHP,具体方法如下:

IIS6中添加一个新的Web扩展服务,扩展名为php,选择文件php4isapi.dll,然后把扩展服务设为允许。然后在网站属性-》主目录-》配置添加一个新的应用程序扩展名映射。

IIS5中配置应用程序-》添加应用程序映射,可执行文件选php4isapi,后缀名为.php,isapi筛选器-》同样是选php4isapi。

Apache中,在httpd.conf文件中加入[code]LoadModule php4_module "c:/php/sapi/php4apache2.dll"
addtype application/x-httpd-php .php

[/code]

Related posts

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS 登录