官方发布的 Apache 的主配置文件是 httpd.conf, 服务器还会读取一个包含 MIME 文件类型的文件,其文件名由 TypesConfig 指令确定,默认值是mime.types 。
Ubuntu/Debian 下的 Apache 的主配置文件是 /etc/apache2/apache2.conf, 包含 MIME 文件类型的文件是 /etc/mime.types 。
此外,为了按逻辑分割配置,还可以用 Include 指令和通配符附加许多其他配置文件。Ubuntu 下附加了如下的配置文件: Read More
CentOS Apache配置详解
要想在linux上实现网页服务器(www)需要Apache这个服务器软件,不过Apache仅能提供最基本的静态网站数据而已,想要实现动态网站的话,最好还是要PHP与MySQL的支持,所以下面我们将会以 LAMP(linux+Apache+MySQL+PHP)作为安装与设置的介绍。
LAMP所需软件与其结构
httpd mysql mysql-Server php php-devel php-mysql
可以用rpm包安装,或者直接用yum安装
#yum install httpd mysql-server php php-devel php-mysql
先来了解一下apache 2.0这个版本的相关结构,这样才能知道如何处理我们的网页数据
/etc/httpd/conf/httpd.conf:最主要的配置文件,不过很多其他的distribution都将这个文件拆成数个小文件,分别管理不同的参数。但是最主要配置文件还是以这个文件名为主。
/etc/httpd/conf.d/*.conf:这个事CentOS的特色之一,如果你不想修改原始配置文件httpd.conf的话,那么可以将你自己的额外参数独立出来,而启动apache时,这个文件就会被读入到主要配置文件。
/usr/lib/httpd/modules:apache支持很多的模块,所以您想要使用的模块默认都放置在此目录
/var/www/html:这里是CentOS默认的“首页”所在目录。
/var/www/error:如果因为主机设置错误,或者是浏览器端要求的数据错误,在浏览器上出现的错误信息就已这个目录的默认信息为主。
/var/www/icons:提供apache的一些小图标
/var/www/cgi-bin :默认给一些可执行的CGI程序放置的目录
/var/log/httpd:默认apache的日志文件都放在这里,对于流量大的网站来说,这个目录要很小心,因为这个文件很容易变的很大,您需要足够的空间哦
/usr/sbin/apachectl:这是Apache的主要执行文件,这个执行文件其实是shell script,它可以主动检测系统上的一些设置值,好让您启动Apache时更简单
/usr/sbin/httpd:这是主要的apache的二进制文件
/usr/bin/htpasswd:当您想登陆某些网页时,需要输入账号与密码。那么Apache本身就提供一个最基本的密码保护方式。该密码的产生就是通过这个命令实现的
至于MySQL方面,您需要知道的几个重要目录与文件有以下几个:
/etc/my.cnf:这是Mysql的配置文件,包括您想要进行mysql数据库的最佳化,或者是正对mysql进行一些额外的参数指定,都可以在这个文件里实现
/usr/lib/mysql:这个目录是MySQL数据库放置的位置,当启动任何MySQL的服务器时,请务必记得在备份时,将此目录完整的备份下来。
另外,在PHP方面,应该了解以下几个文件。
/usr/lib/httpd/modules/libphp4.so:PHP提供给apache使用的模块,这个关系我们能否在apache网页上面设计php程序语言的最重要文件
/etc/httpd/conf.d/php.conf:你要不要手动将该模块写入Httpd.conf中呢?不需要,因为系统已经主动将php设置参数写入到这个文件中了,而这个文件会在apache重新启动时被读入。
/etc/php.ini:这是PHP的主要配置文件,包括PHP能不能允许用户上传文件,能不能允许某些低安全性的标志等,都在这个配置文件中设置。
/etc/php.d/mysql.ini /usr/lib/php4/mysql.so:PHP能否可以支持MySQL接口就看这两个文件了。这两个文件是由php-mysql软件提供的
/usr/bin/phpize /usr/include/php:如果您以后想要安装类似PHP加速器可以让浏览速度加快的话,那么这个文件与目录就需要存在,否则加速器软件没法用。
httpd.conf的基本设置
首先,你需要在/etc/hosts内需要有个一个完整的主机名,否则在重启apache服务时,会提示找不到完整的主机名。
httpd.conf的基本设置是这样的:
<设置项目>
次设置项目内的相关参数
。。。。
例如,你想要针对首页/var/www/html提供额外的功能,那么可以进行如下设置:
Options Indexes
……
针对主机环境的设置项目
#vi /etc/httpd/conf/httpd.conf
ServerTokens OS
# 这个项目在告诉客户端WWW服务器的版本和操作系统,不需要改编它
#如果你不想告诉太多的主机信息,将这个项目的OS改成Minor
ServerRoot “/etc/httpd”
#这个是设置文件的最顶层目录,通常使用绝对路径,下面某些数据设置使用相对路径时
#就是与这个目录设置值有关的下层目录,不需要更改它
ServerRoot
设定Apache 安装的绝对路径
TimeOut
设定 服务器接收至完成的最长等待时间
KeepAlive
设定服务器是否开启连续请求功能,真实服务器一般都要开启
Port
设定http服务的默认端口。
User/Group
设定 服务器程序的执行者与属组,这个一般是apache
下面我们就针对Apache做几个实验
1:我们测试把默认网站目录改到root家目录下
新建/root/website目录
#mkdir -p /root/website
#echo “website page” >> /root/website/index.html
#vi /etc/httpd/conf/httpd.conf
找到 DocumentRoot “/var/www/html” 这一段 //apache的根目录
把/var/www/html 这个目录改到 /root/website
在找到 //定义apache /var/www/html这个区域
把 /var/www/html改成/root/website
这样我们就把apahce的默认路径改掉了
然后重启服务
#service httpd restart
//这里在你重启服务的时候,可能会报错,说找不到目录,这个主要是由于selinux导致的
那怎么解决呢?有2个办法,关掉selinux
#setenforce 0
或者更改/root/website这个文件的selinux属性,让它匹配httpd这个服务器的要求
怎么改?我们可以复制/var/www/html这个目录的selinux属性
#chcon -R –reference /var/www/html /root/website
然后在重启服务,之后你就看到它没有报错了
不过你去访问localhost的时候,会发现访问拒绝 这是为什么呢?主要是因为你的/root的权限是750,ahache这个用户没有权限访问,你需要更改掉权限,可以这样改
#chmod -R 755 /root
然后去访问 发现正常了
2:基于名称的虚拟主机
需要两个域名解析到你的服务器,对应关系是
/var/www/server server.example.com
/var/www/client client.example.com
当访问这两个域名时,可以分别显示出不同文件里面主页的内容
#echo “server page” >> /var/www/server/index.html
#echo “client page” >> /var/www/client/index.html
然后我们编辑一个配置文件
#vi /etc/httpd/conf.d/virtual.conf //记住conf.d里面的内容也是apache的配置文件
添加如下内容:
NameVirtualHost 192.168.76.133:80
ServerName service.example.com
DocumentRoot /var/www/server
ServerName client.example.com
DocumentRoot /var/www/client
#service httpd restart
这样基于名称的虚拟主机就配置好了
如果你没有DNS你可以再你的机器上hosts文件里加记录 linux在/etc/hosts这个文件 windows在C:\windows\system32\drivers\etc\hosts文件
加上这两行
192.168.76.133 server.example.com
192.168.76.133 client.example.com
这样你在去测试,就会发现访问不同的域名显示不同的内容了 这样基于名称的虚拟主机就配置好了!
3:基于IP地址的虚拟主机
先添加一个临时网卡
#ifconfig eth0:0 192.168.76.132 //临时使用,重启后就会消失
然后便捷virtual.conf文件
#vi /etc/httpd/conf.d/virtual.conf
把内容修改为
#NameVirtualHost 192.168.76.133:80
ServerName service.example.com
DocumentRoot /var/www/server
ServerName client.example.com
DocumentRoot /var/www/client
让后你在用ip访问,发现也能显示不同的内容,或者你编辑hosts文件,用域名访问也没问题
这样基于IP地址的虚拟主机也成功了!
4:别名
在/etc/httpd/conf/httpd.conf里加入
Alias /test “/root/website/” // 别名 这样你用192.168.76.133/test访问 也会显示192.168.76.133的页面
这个地方需要注意的就是/test 还是/test/ 这个是用区别的 你用/test 那么你访问的时候只能用192.168.76.133/test访问 如果你用/test/ 那么192.168.76.133/test/访问,而/test将不会放你访问
忘了这里你的先把/etc/httpd/conf.d目录里面刚刚设置的虚拟目录注释掉 不然没法访问,是因为做了虚拟目录,而httpd.conf里面的设置就无法访问 当然可以用localhost来访问,其他的访问都不行
5:实现网页的资源下载
首先添加别名
#vi /etc/httpd/conf/httpd.conf
在Alias /test “/root/website/” 后面加入
Alias /down “/var/ftp/pub”
让后对/var/ftp/pub区域设置参数
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
在Options 加入 MultiViews //没有index时自动列出目录文档
然后重启服务,这样http://192.168.76.133/down/里面就可以列出/var/ftp/pub里面的文件了,试着点一个另存为,是否可以下载? 呵呵 成功!
6:.htpasswd的实现
#vi /etc/httpd/conf/httpd.conf
我们针对刚刚做的/var/ftp/pub来做
加入如下信息
Alias /down “/var/ftp/pub/”
Options Indexes MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
AuthType Basic
AuthName “this is test”
AuthUserFile /etc/httpd/htpasswd
Require User test
然后重启httpd服务,
让后生成.htpasswd用户密码
htpasswd -c /etc/httpd/htpasswd test
让后去访问192.168.76.133/down会需要密码
转载自:http://hi.baidu.com/bubu600/blog/item/e4b370a11787848346106437.html
好高兴啊 好高兴 自己配好一台linux服务器啦 哈哈
哇哈哈哈哈哈哈
linux(ubuntu8.04)+apache2+mysql5+php5
一台vps服务器 一个月68块 支持月付哦 忽忽……
2月23日最知名的开源项目网站Apache发 布官 方博客,庆祝它的旗舰开源项目Apache HTTP Server(也 称Apache Web Server或者简称为Apache)15岁生 日。
Apache的前身是Rob McCool所开 发的NCSA httpd。1994年,McCool离开NCSA(美国国家超级计算应用中心),开发中止。
1995年2月23 日,Brian Behlendorf, Roy Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert Thau和Andrew Wilson几个人组成社区,通过邮件在线协作,继续开发和支持这个项目的一个新分 支。这个社区被命名为Apache组织,项目也被称为Apache。不到一年,Apache就超过httpd,成为互联网上最 流行的Web服务器。
1999年的3月,Apache组织的成员组成Apache基金会,为项目开发提供资金、法律和组织支持。这个基金会 很快成长为多开源项目的支持者。
在发 展过程中,Apache基金会形成了独特的开发高质量开源软 件的方式,称为Apache之道。即:
1. 通过相互尊重、诚实和专注于技术的协作进行开放协作。
2. 协作是公开透明的。
3. 精英管理制,凡事看能力。Apache基金会目前有2000名Committer和数量极大的贡献者。
今 天,Apache HTTP Server支撑着全球超过1亿个网站,是最成功的开源项目之一。而Apache基金会旗下已经有138个开源项目,包括著名的Struts、 Tomcat、Perl、Tcl、Hadoop、CouchDB、Lucene、Ant、Maven、Wicket等等,还有更多项目在孵化。
在 喜庆的日子里,也应该看到,虽然地位一直非常稳固,Apache目前也面临着lighttpd、nginx等新兴高性能开源Web Server的挑战,还有专有的微软IIS。但是对于开发者来说,有更多选择当然不会是坏事。下面是Netcraft 2010年1月公布的Web服务器份额数据。nginx的增长非常快。
| 开发者 | 产品 | 网站(百万) | 份额 |
|---|---|---|---|
| Apache | Apache | 111 | 54% |
| Microsoft | IIS | 50 | 24% |
| Igor Sysoev | nginx | 16 | 8% |
| GWS | 15 | 7% | |
| lighttpd | lighttpd | 1 | 0% |
【人 物志】

Rob McCool1973年生,在伊利诺伊大学(UIUC)读本科时加入NCSA Mosaic(Mozilla前身)开发组,开发了Apache的前身httpd。同一时期,他还开发了CGI规范。毕业后加入网景,参与开发 Netscape Enterprise Server。后曾在Yahoo担任架 构师。目前是斯坦福大学的研究程序员,研究领域是基于知识的系统,包括KDD和TAP项目。他的个人网页是:http://www-ksl.stanford.edu/people/robm/。

Brian Behlendorf,1973年 生,Apache项目和基金会的主要创始者。曾担任Apache基金会主席。加州伯克利分校计算机系毕业。现为CollabNet公司总监,该公司的 Subversion的主要支持力量。(推荐阅读:Apache创始人Brian:开源组织里的 激进分子)

Roy Fielding,1965年生。HTTP、REST的主要制定者。也是HTML和URI开发的重要参与者。是Apache基金会的 首任主席。目前担任Day软件公司首席科学家。
Rob Hartill,1969年生,威尔士人。除了 Apache之外,他还是电影数据库IMDB和著名的科学论文预印本发布网站arXiv最早的开发者。2003年他迁居澳大利亚。目前以种地自娱,同时还 是志愿消防队员。
FastCGI 不完全高级指南
阅读这篇文章的时候建议先参考一下:什么是 FastCGI
IIS FastCGI配置方法
1、首先确定你已正确安装了PHP 4.3.x及更新的版本。早期版本的PHP并未默认加入FastCGI支持,如果你想在早期版本中工作,需要重新编译它。我们假设PHP安装在c:\php,支持FastFCGI的可执行文件名是php-cgi.exe。
注意:建议在Php.ini中关闭cgi.force_redirect,启用fastcgi.impersonate,启用cgi.rfc2616_headers。
HKEY_LOCAL_MACHINE:Software\FASTCGI\.php (必需)
字符串类型:AppPath,值为c:\php\php-cgi.exe (必需)
字符串类型:BindPath,值为php-fcgi (必需)
以下是可选配置键值:
DWORD类型:StartServers,启动时默认启动的解释器个数,默认值5
DWORD类型:MaxServers,最大解释器个数,默认25
DWORD类型:IncrementServers,当解释器不够用时增量个数,默认2
DWORD类型:Timeout,增量解释器(超出StartServers数目的)存活时间,默认600(秒)
DWORD类型:ThreadPoolSize,线程池大小,仅IIS下有效,默认10
DWORD类型:Impersonate,仅IIS有效,如果为1,使用IIS安全标志,为0则关闭此特性。不要关闭它除非你不担心安全问题。默认1
DWORD类型:MaxPostData,Post数据预读Byte限制,默认0
DWORD类型:BypassAuth,仅IIS有效,如果为1并且isapi_fcgi.dll被配置为IIS Filter,同时IIS被配置为使用BASIC Authentication,这将强制所有认证请求使用IIS匿名用户。这一选项的目的是允许脚本实现自己的安全机制。默认0
BINARY类型:CustomVars,附加环境变量值,新行分隔,Null结束
1). 在Internet信息服务管理器中,选择网站或应用程序的根目录。
2). 打开目录属性页(右键选择“属性”),再选择“主目录”。
3). 点击“配置”按钮,选择“映射”Tab页。
4). 点击“添加…”,在“可执行文件”设为: c:\php\isapi_fcgi.dll,扩展名设为.php,一定要选择“确认文件是否存在”,然后“确定”保存设置。
5). 再同样添加对.php3或.phtml扩展名的支持(可选)。
6). 保存设定并重新启动IIS。
1、首先确定你已正确安装了PHP 4.3.x及更新的版本。早期版本的PHP并未默认加入FastCGI支持,如果你想在早期版本中工作,需要重新编译它。我们假设PHP安装在c:\php,支持FastFCGI的可执行文件名是php-cgi.exe。
注意:建议在Php.ini中打开cgi.force_redirect,关闭fastcgi.impersonate,关闭cgi.rfc2616_headers。
ScriptAlias /php/ “c:/php/”
Action application/x-httpd-php “/php/php-cgi.exe”
SetEnv PHPRC “C:/php”
LoadModule fastcgi_module modules/mod_fastcgi-2.4.2-AP20.dll
# 说明:此处的 -processes 3 表示启动三个 php-cgi.exe 进程,
# 关于 FastCgiServer 的详细参数请参考 FastCGI 文档。
FastCgiServer “c:/php/php-cgi.exe” -processes 3
设想这样一种场景,你的服务器上同时跑Apache 2和IIS 6,两个Web服务器都跑php应用。那么,有如下三种可能:
A、php使用iis isapi和apache module安装,均为多线程方式运行。这个和FastCGI没有关系。
B、其中一个服务器使用FastCGI方式,另一个使用多线程方式。这个能运行正常。
C、两个均使用FastCGI方式,这个往往不正常。一般表现为:
两个服务器各自启动一些php-cgi.exe进程,然后服务器之一不解释php页面,或者隔一会儿就派生新的php-cgi.exe进程(可怕呀)。
LoadModule fastcgi_module modules/mod_fastcgi-2.4.2-AP20.dll
# 使用外部FastCGI服务器,请参考 FastCGI 文档。
FastCgiExternalServer “c:/php/php-cgi.exe” -socket “php-fcgi”

