httpd的里面的详细参数
首先可以分成三个部分
1.Section 1:Global Environment

本部分指令主要是影响整个apache服务器,例它能所处理的并发请求或者在哪里能够找到他的配置文件

Server Root “/etc/httpd”
apache的根目录,一般不用修改

PidFile run/httpd.pid
只有相对路径,考虑SeverRoot设定值,存放在/etc/httpd/run/httpd.pid
PidFile指令是设置服务器用于记录父进程PID的文件
(PidFile指令设置服务器用于记录父进程(监控进程)PID的文件。如果指定的不是绝对路径,那么将视为基于ServerRoot的相对路径。
示例
PidFile /var/run/apache.pid
这个文件通常用来便于给服务器父进程发送一个信号,用于关闭或重启服务器,以重新打开ErrorLog和TransferLog文件、重新读取配置文件。这些可以通过发送一个"SIGHUP"(kill -1)信号到PidFile记录的进程PID。
PidFile和其他日志文件一样要注意放置位置和安全问题。
注意
从Apache2开始,推荐使用apachectl脚本来启动或停止服务器。)

Timeout 120秒
定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。,超过120秒后将强行退出,设置0表示永不超时,也就是服务器必须处理尚未完成的请求,才能退出,此值一般在300秒左右即可,不建议修改。

KeepAlive On
表示是否持续性的连接,一个TCP的连接可以处理多个请求
比如说,你的网页内含有多个文档,可一次处理多个文档要求,一般都是On
MaxKeepAliveResquests 100
表示一次连接可以进行http请求的最大请求次数。设置0将支持一次连接无限次的传输请求。
KeepAliveTimeout 15
测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连

<IfModule prefork.c>
StartServers       8  启动httpd时的几个进程数
MinSpareServers    5  最小的预备使用的PID数量
MaxSpareServers   20  最大的预备使用的PID数量
ServerLimit      256  服务器的限制
MaxClients       256  最多可以容许多少个用户端同时连线到的httpd的意思!
MaxRequestsPerChild  4000
每个程序能够提供的最大传输次数要求。举例来说,如果有个使用者连上伺服器后(一个过程),却要求数百个网页,当他的要求数量超过此一数值,则该程序会被 丢弃,另外切换一个新程序,这个设定可以有效的控管每个进程在系统上的“存活时间”,因为根据观察所得,新程序的效能较佳啦!
显示对应的拉丁字符的拼音
</IfModule>
为什么要设置连接数限制
答:比如说一时间网站的访问人数达到上万,达到设置的某个值,这时会导致网站的瘫痪,遇到大规模的DDos***,避免出现这种情况,还是有必须进行设置的

</IfModule>
<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

一般都使用prefork最好

Listen 80

LoadModule foo_module modules/mod_foo.so
apache提供一些很多的组件给我们使用


Include conf.d/*.conf
Include conf.d/*.conf因为有这一行才能设定额外的值,不需要修改httpd.conf的配置,可以在.conf.d下面修改

Section 2:'Main' server configuration

ServerAdmin vbird@www.centos.vbird定义邮件地址,当这个服务出现的时候会向这个邮件发送信息
ServerName www.centos.vbird设置主机名称
UseCanonicalName Off
# 是否使用標準主機名稱?如果你的主機有多個主機名稱,若這個設定為 On,
# 那麼 Apache 只接受上頭 servername 指定的主機名稱連線而已。請使用 Off。

DocumentRoot "/var/www/html"存放用户网页的地方


重点为:
<Directory 目录>
控制语句
〈Directory>
例子:以配置文件中对根目录和文档目录的默认设置为例子
〈Directory />
Options FollowSymLinks
AllowOverride None
〈Directory>


Options字段是定义目录使用哪些特性

常用选项有
FollowSymlinks 允许在目录中使用符号链接

Indexs。允许目录浏览,当客户端没有指定访问目录下的具体哪个文件,而且该目录下也没有首页文件时,刚显示该目录的结构,包括该目录下的子目录和文件
MultiViews允许内容协商多重视图
ExecCGI 允许在该目录下执行CGi脚本
Includes允许服务器包含功能


AllowOverride None  (AllowOverride控制那些被放置在.htaccess文件中的指令)
ALL 全部的权限均可被覆写
AuthConfig 仅有网页认证(账号和密码)可覆写
Indexes仅允许Index方面的覆写
Limits允许使用者利用Allow,Deny与Order管理可浏览的权限
None 不可覆写,让.htaccess失效

Order allowe,deny
表示默认情况下禁止所有客户端访问,且allowe字段在deny字段之前被匹配,如果既匹配allowe字段又匹配Deny字段,最后deny字段最终生效。也就是说Deny会覆盖allowe
Order deny,allowe
表示默认情况下允许所有客户端访问,且deny字段在allowe字段之前被匹配,如果既匹配allowe字段又匹配Deny字段,最后allow字段最终生效。也就是说allowe会覆盖deny

很重要的知识点:
Order allowe,deny 开放所有的,拒绝特定的

Order deny,allow  拒绝所有的,开放特定的

例子:允许所有客户端访问
  Order allow,deny
  Allow from all

例子:拒绝IP地址为10.20.30.40网段的客户端访问,但其中192.168.1.1客户端能访问
Order allow,deny
deny from 10.20.30.40
allow from 192.168.1.1

例子:仅允许192.168.1.0/24网段的客户端访问,但其中192.168.1.1不能访问
Order allowe,deny
allow from 192.168.1.0/24
deny from 192.168.1.1


DirectoryIndex index.html index.php设置首页顺序

Alias /icons/ "/var/www/icons/"
<Directory "/var/www/icons">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
alias做别名
alias 要别名的地方  原来的路径
Alias /icons/ "/var/www/icons/"



#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

#<Directory "/var/www/cgi-bin">
#    AllowOverride None
#    Options None
#    Order allow,deny
#    Allow from all
#</Directory>
跟Alias差不多,不过具有 ExecCGI 能力的目录所在喔

下面来介绍php配置文件

路径:/etc/httpd/cond/httpd.conf
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so 根据不同的PID模式给予不同的PHP 动作模组
</IfModule>

AddHandler php5-script .php -----》所以副档名一定要是.php结尾
AddType text/html .php ------》.php结尾的档案是纯文字档
DirectoryIndex index.php 首页的档名增加index.php
注意:这三个基本上不用修改

#AddType application/x-httpd-php-source .phps 特殊用法、

下面来简单介绍一下php.ini配置文件

路径:/etc/php.ini
register_globals = Off

这个值最不需要修改,因为改成On时会不安全,容易被***

log_errors = On  

ignore_repeated_errors = On 这个值调整一下原来是Off
ignore_repeated_source = On 这个值调整一下原来是Off

注意:这三个可以决定是否要将php程式的错误记录起来

display_errors = Off
display_startup_errors = Off

建议设置为Off


php用户需要上传下载资料,默认是2M左右,这个值是可以修改2
vi /etc/php.ini
post_max_size =10M ,大约在477行

file_uploads =On 一定要是On才行
upload_max_filesize =2M 修改成上传的限制为16M 大约在582行

upload_max_filesize =16M 默认是2M,现在用户上传的可以是16M了

post_max_siza比upload_max_filesize的值大才行



[root@localhost /]#  /etc/init.d/httpd configtest  测试设定档语法
Syntax OK
[root@localhost /]# /etc/init.d/httpd start
Starting httpd:                                            [  OK  ] 启动httpd服务
[root@localhost /]# chkconfig httpd on  开机启动www服务

另外httpd还有一个apachectl这支程式
跟/etc/init.d/httpd差不多可以启动httpd服务
[root@localhost /]# /usr/sbin/apachectl stop 停止apache
[root@localhost /]# /usr/sbin/apachectl start 启动apache

[root@localhost mysql]# netstat -tulnp |grep 'mysql'
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      6011/mysqld   
mysql端口是3306
设置数据库密码方法
mysqladmin -u root password 'edong250'

进入数据库方法
[root@localhost mysql]# mysql -uroot -pedong250
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.0.77 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases; --->注意:第一个指向必须加上;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |---->用来记录mysqlm账号主机等 重要资料
| test               |
| vbirddb            |
+--------------------+
4 rows in set (0.00 sec)
mysql>
  
下面我们来介绍一下mysql的配置文件
路径:/etc/my.cnf

mysql  root密码忘记了怎么办
解决方法:可以在网上找一些工具处理,或者如果你的资料不是很重要的话,先把mysql服务停止掉,然后再把/var/lib/mysql/*那个目录内的资料删除掉,然后再重新重动mysql,那么mysql就会重建,root密码就找回来了

<IfModule mod_userdir.c>
    UserDir disable
    #UserDir public_html
</IfModule>
这个作用是用户可以控制自己的首页



linux apache+cgi执行应用
CGI(公共网关接口)定义了web服务器与外部内容生成程序之间交互的方法,通常是指CGI程序或者CGI脚本,它是在网站上实现动态页面的最简单和常用的方法。本文将对如何在Apache web服务器上建立CGI以及如何编写CGI程序进行介绍。

假設想要執行 CGI 的程式附檔名為 .cgi 或 .pl ,且放置的目錄在 /var/www/html/cgi/ 時,你可以這樣做

vi /etc/httpd/conf/http.conf
找到#AddHandler cgi-script .cgi
在.cgi后面添加一个.pl的扩展然后去掉#
AddHandler cgi-script .cgi .pl

然后加上具体目录
<Directory  "/var/www/html/cgi">
Options +ExecCGI
AllowOverride None
Order allowe,deny
Allowe from all
</Directory>

mkdir /var/www/html/cgi

vi helloworld.pl

#!/usr/bin/perl
print "Content-type: text/html\r\n\r\n";
print "Hello, World.";

最重要的权限
chmod a+x /var/www/html/cgi/helloworld.pl

重启/etc/init.d/httpd restart


第二个方法配置:apache+cgi
假設想要執行 CGI 的程式附檔名為 .cgi 或 .pl ,且放置的目錄在 /var/www/perl時,你可以這樣做

vi /etc/httpd/conf/http.conf
找到#AddHandler cgi-script .cgi
在.cgi后面添加一个.pl的扩展然后去掉#
AddHandler cgi-script .cgi .pl
然后加入底下这几行来决定开放某个目录的cgi执行权限
ScriptAlias /perl "/var/www/perl/"
mkdir /var/www/perl
vi helloworld.pl

#!/usr/bin/perl
print "Content-type: text/html\r\n\r\n";
print "Hello, World.";

最重要的权限
chmod a+x /var/www/per/helloworld.pl
重启/etc/init.d/httpd restart


linux下实现apache 找不到网页时,提示自己设置的信息
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
找到这些信息
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
然后把#ErrorDocument 404 /missing.html的#去掉
#ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html

然后重启httpd
[root@localhost ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
注意:在编辑missing.html的文件时,一定要根据apache的网页存放路径下面

[root@localhost html]# vi missing.html
sorry ! error,please Contact zhanghan
然后我们保存:missing.html内容是sorry ! error,please Contact zhanghan
我的是[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
cgi  missing.html

然后你就可以输入http://192.168.1.200/fdsafdafds
结果会提示:sorry ! error,please Contact zhanghan

查看服务器和网页的状态
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
首先必须有模块的加入LoadModule status_module modules/mod_status.so
找到这一行把它的注释去掉ExtendedStatus On
然后在找到下面的这些信息,全部把注释去掉
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 192.168.1.0/24
    Allow from 127.0.0.1
</Location>
[root@localhost ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
访问用httpd://192.168.1.200/server-status