web 服务器 appche

来源:互联网 发布:php网站开发培训 编辑:程序博客网 时间:2024/05/21 22:54
# vim /etc/httpd/conf/httpd.conf

ServerTokens OS        --向客户端提供一些服务器和信息

# curl -I http://192.168.1.100
serverRoot "/etc/httpd"    --存放配置文件一主目录

PidFile run/httpd.pid    --pid文件

Timeout 120        --连接超时时间

KeepAlive Off    --一般是短时间下载文件比较多的网站  在ON的时候 一次连接多次请求

MaxKeepAliveRequests 100

KeepAliveTimeout 15
keepalive参数修改小测试

off 的情况,  别人刷新你的一个页面

netstat -nt |grep :80    可以看到一个IP有多次连接

或者使用netstat -nt  |grep :80 |awk -F: '{print $8}' |sort |uniq -c
命令来查看

on的

情况,  别人刷新页面

netstat -nt |grep :80    可以看到一个IP只有一次连接(15秒后再刷新会产生新连接)

两分钟左右不刷新,TIME_WAIT连接断开

# cd /usr/sbin/
# mv httpd httpd.prefork
# mv httpd.worker httpd
# /etc/init.d/httpd restart

# httpd -l
dynamic  shared object    动态共享模块
Include conf.d/*.conf    --表示conf.d/下的*.conf配置文件生效

User apache
Group apache    --以什么身份运行

ServerAdmin root@localhost    --管理邮箱

DocumentRoot "/var/www/html"    --网站家目录

DirectoryIndex index.html index.html.var    --定义主页文件

AccessFileName .htaccess    --网页加密

ErrorLog logs/error_log        --错误日志

LogLevel warn        --日志等级
修改主页类型或者主页名

DirectoryIndex index.php  index.html.var

elinks 10.1.1.45    --elinks是一个文本模式的web浏览器
DefaultLanguage zh-CN    --默认语言集打开注释,并改为简体中文zh-CN

LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv  zh-TW  --语言优先级,把zh-CN写到最前

AddDefaultCharset UTF-8    --字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异

--扩展:
windows默认gb2312
linux默认utf-8

windows里文件内容的结束符和linux下不一样

所以把windows的文件拿到linux写脚本进行字符处理会出现问题

解决方法:
dos2unix
unix2dos
indexes   --指当找不到默认的主页文件时,就把此目录下的文件或者目录以列表形式显示出来
FollowSymlinks  --允许符号链接,扩展了网站根目录,允许链接到网站根目录以外
allowoverride none --可以把none改为all来允许.htaccess控制
order allow,deny   --指定的是先允许,后拒绝
allow  from all    --指定允许所有

把网站的文件修改成目录列表的形式

条件1.
    Options Indexes FollowSymLinks    --相应目录要有indexes参数

条件2.
    没有主页文件

条件3.
    符合上面两个条件,就会访问到redhat的欢迎页面

vim /etc/httpd/conf.d/welcome.conf  --注释掉这个欢迎页面,或者是删除它
files 容器        --针对文件的控制

<Directory "/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
<files "1">            --表示35这个客户端不能访问/www/1,而且如果要控制/www/bbs/1这个文件,不能在这里写成<files "bbs/1">,需要在/www/bbs这个目录的directory容器里再嵌套files标签来控制
    order allow,deny
    allow from all
    deny from 10.1.1.35  
</files>
</Directory>
网站下所有目录(包括子目录)以ule开头的文件都不能被访问

<Files ~ "^ule">
    Order allow,deny
    Deny from all
</Files>
网站下所有目录(包括子目录)以.txt结尾的文件都不能被访问

<Files ~ "\.txt$">
    Order allow,deny
    Deny from all
</Files>
<Location "/bbs">
        order allow,deny
        deny from all
</Location>
--这是对http://IP/bbs    这种URL来进行权限控制

--location容器有时候和directory有可能重合,并且配置有冲突,(如果一个是允许,一个是拒绝,无论是location拒绝,还是directory拒绝,最终结果都是拒绝的)下面

<Location "/bbs">
      order allow,deny
       deny from all
</Location>

<Directory "/www/bbs">
   order allow,deny
   allow from all
</Directory>

--注意:在rhel6里,有细微变化,location的优先级要高
<Location "/bbs">
        order allow,deny
        deny from all
</Location>
--这是对http://IP/bbs    这种URL来进行权限控制

--location容器有时候和directory有可能重合,并且配置有冲突,(如果一个是允许,一个是拒绝,无论是location拒绝,还是directory拒绝,最终结果都是拒绝的)下面

<Location "/bbs">
      order allow,deny
       deny from all
</Location>

<Directory "/www/bbs">
   order allow,deny
   allow from all
</Directory>

--注意:在rhel6里,有细微变化,location的优先级要高

对mod_status和mod_info这两个DSO配置服务器的信息查看

L

oadModule status_module modules/mod_status.so

<Location /server-status>

SetHandler server-status

Order deny,allow

Deny from all

Allow from 10.1.1.35

</Location>

LoadModule info_module modules/mod_info.so

<Location /server-info>

SetHandler server-info

Order deny,allow

Deny from all

Allow from 10.1.1.35

</Location>

http://IP/server-status

http://IP/server-info
# vim /www/.htaccess      --对哪个目录进行限制,就在哪个目录下建立此文件

authname "please input your username and password! @_@"
authtype basic
authuserfile /etc/httpd/userpasswd
require valid-user

# htpasswd -c /etc/httpd/userpasswd  aaa  --创建此文件,并加入一个用户,自定义密码,注意此用户与系统普通用户无关

#

 htpasswd  /etc/httpd/userpasswd  bbb  --再增加一个用户

第二种做法:

# vim /etc/httpd/conf/httpd.conf

<Directory "/www">    
Options Indexes FollowSymLinks  
AllowOverride None        --none不用改成all
Order allow,deny    
Allow from all    

authname "please input your username and password! @_@"
authtype basic
authuserfile /etc/httpd/userpasswd
require valid-user    --把这四句直接加到这个目录标签里

</Directory>        

2,
# htpasswd -c /etc/httpd/userpasswd  aaa

3,
# /etc/init.d/httpd restart    --重启后,验证,也可以
基于IP的虚拟主机

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot /www/aaa
    ServerName 10.1.1.36
    ErrorLog logs/36-error_log
   CustomLog logs/36-access_log common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/bbb
    ServerName 10.1.1.37
    ErrorLog logs/37-error_log
   CustomLog logs/37-access_log common
</VirtualHost>

基于端口的虚拟主机

Listen 80        --这一句默认就有,不用再加
Listen 8000
Listen 8080

<VirtualHost *:80>
    DocumentRoot /www/aaa
    ServerName 10.1.1.36
    ErrorLog logs/36-error_log
   CustomLog logs/36-access_log common
</VirtualHost>
<VirtualHost *:8000>
    DocumentRoot /www/bbb
    ServerName 10.1.1.36
    ErrorLog logs/37-error_log
   CustomLog logs/37-access_log common
</VirtualHost>
基于域名的虚拟主机

--需要DNS的cname记录的支持,或者A记录

aaa.web.com
bbb.web.com
NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot /www/aaa
    ServerName aaa.web.com
    ErrorLog logs/aaa-error_log
   CustomLog logs/aaa-access_log common
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot /www/bbb
    ServerName bbb.web.com
    ErrorLog logs/bbb-error_log
   CustomLog logs/bbb-access_log common
</VirtualHost>

使用第三方模块   实现apache限速

share/soft/lamp/apache_source/mod-cband-0.9.7.2.tgz

解压并CD进去进行编译
tar xvf mod-cband-0.9.7.2.tgz -C /usr/src/
cd /usr/src/mod-cband-0.9.7.2/

./configure ;make ;make install

确认/etc/httpd/conf/httpd.conf里是否自动加载了下面这句话
LoadModule cband_module       /usr/lib/httpd/modules/mod_cband.so

针对虚拟主机new.cluster.com进行限速

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot /www/aaa
    ServerName news.cluster.com
    ErrorLog logs/aaa.com-error_log
    CustomLog logs/aaa.com-access_log common

    cbandlimit 100M    --指网站允许的总的下载流量
    cbandperiod 1W    --清空时间
    cbandspeed 1024 10 30 --当前总带宽,每秒可以同时连接10个,最大的总连接数,1024在这里除以8就是kb每秒的单位
    cbandremotespeed 10kb/s 3 3 --针对单一客户端下载速度为10kb/s,每秒可以同时3个连接,最多一个IP生成3个连接
<location /cband-status>
  sethandler cband-status    --使用http://IP/cband-status访问控制状态
</location>
<location /cband-status-me>

se

thandler cband-status-me   ----使用http://IP/cband-status-me访问控制状态
</location>
</VirtualHost>
对apache做每天一次的日志轮转

1,使用logrotate来做

2,自己写脚本

#!/bin/bash

mv /var/log/httpd/access_log /var/log/httpd/access_log.`date -d "-1 days"  +%F`.log
touch /var/log/httpd/access_log

kill -HUP `cat /etc/httpd/run/httpd.pid`

把上面脚本放到crontab里0点执行

3.
www.cronolog.org

软件包位置:
ls /share/soft/soft/log/
cronolog-1.6.2.tar.gz  cronolog.pdf  cronosplit.p

f

解压到任意目录,我这里是/usr/src/
# tar xvf cronolog-1.6.2.tar.gz -C /usr/src

# cd /usr/src/cronolog-1.6.2/

编译安装
# ./configure ;make ;make install

,先注释掉虚拟主机,虚拟主机需要每个都配,为了方便,这里注意掉,使用原来的web服务器配置

vim /etc/httpd/conf/httpd.conf

修改:
CustomLog logs/access_log combined
改成:
CustomLog "|/usr/local/sbin/cronolog /opt/%Y/%m/%d/access_log" combined
--注意格式不要写错

重启apache后,过几秒,或者访问一下apache

就会在/opt下产生了
关于日志合并

# sort -m -k 4 -o  newaccess.log access_log access_log1

或者使用awstats,weblizer这样的日志分析软件去做日志合并
0 0
原创粉丝点击