Chinaunix首页 | 论坛 | 博客
  • 博客访问: 475752
  • 博文数量: 122
  • 博客积分: 1403
  • 博客等级: 中尉
  • 技术积分: 1668
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-11 13:31
文章分类

全部博文(122)

文章存档

2018年(5)

2017年(12)

2014年(15)

2013年(33)

2012年(4)

2011年(53)

分类: LINUX

2011-04-12 11:19:54

说明:操作系统:CentOS 5.5
1、安装软件: yum install httpd  mysql mysql-server php php-devel php-mysql
2、几个主要配置文件/目录的说明
Apache方面:
/etc/httpd/conf/httpd.conf :这是httpd服务的主要配置文件
/etc/httpd/conf.d/: 这是额外的配置文件,包括php.conf,python.conf,perl.conf,ssl.conf等等
/etc/httpd/modules/: 存放Apache使用的模块的地方
/var/www/html/: 存放网页的地方
/var/www/error/: 浏览器上出现的错误时,客户端看到的信息
/var/log/httpd/: 默认的Apache日志文件存放地
/usr/bin/htpasswd:Apache密码保护
 
Mysql方面
/etc/my.cnf      mysql的配置文件
/var/lib/mysql/  :mysql数据库放置的位置,启动mysql的服务时需要将此目录完整备份下来
 
PHP方面
/usr/lib/httpd/moudules/libphp5.so : PHP提供给Apache使用的模块,关系到我们能否在apache服务上使用PHP语言
/etc/php.ini :PHP的主要配置文件,/配置内容包括是否允许用户上传文件等信息
ServerRoot "/etc/httpd"  --apache的配置文件等的主目录

PidFile run/httpd.pid --pid文件

Timeout 120  --超时时间
KeepAlive On   --一次连接多次请求,默认是Off,最好改为On
MaxKeepAliveRequests 100  --一次连接最大多少次请求
KeepAliveTimeout 15   --请求超时时间
 

  --prefork为MPM(多路处理模式)的一种
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000

StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
[root@36 ~]# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

Listen 80  --监听80端口

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
...................
--动态的装载模式,使用模式提供的功能 DSO   (dynamic shared object)

Include conf.d/*.conf  --子配置文件目录里的所有子配置文件生效
User apache
Group apache  --定义apache运行的用户和组

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

 --对目录的一个控制
  Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

DirectoryIndex index.html index.html.var --网站的主页文件的查找顺序
AccessFileName .htaccess --apache提供的一种密码保护机制

  --以.ht开头的文件不被客户端用户看到 
    Order allow,deny
    Deny from all
--下面几个参数与日志有关
ErrorLog logs/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined
 
LanguagePriority 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-CN zh-TW
--语言优先级
AddDefaultCharset UTF-8
--字符集
 

例一:
 直接启动apache
 service httpd start
 访问:
 会看到一个欢迎页面
 /etc/httpd/conf.d/welcome.conf
 

例二:
281 DocumentRoot "/www"
306

[root@36 ~]# mkdir /www

[root@36 ~]# /etc/init.d/httpd restart

[root@36 ~]# echo "我的主页" > /www/index.html

或者把主页写成下面的html格式

我的主页 


        地在 要 地要栽地茜我   框架地苛;地苛
 
例三:
apache的容器     directory     files        location
 
  --针对/www/bbs目录的权限控制
  Options Indexes FollowSymLinks  --允许目录列表,符号链接
  AllowOverride None --表示此目录支持.htaccess加密
    Order allow,deny
    Allow from all
  
 

访问权限控制
    Order allow,deny
     Allow from all --允许所有

    Order allow,deny
    Allow from all
    deny from 10.1.1.35 --只拒绝35

    Order deny,allow
    Allow from all
    deny from 10.1.1.35 --还是允许所有,先拒绝,再允许
  Order deny,allow
    Allow from all
    deny from all --允许所有
    Order allow,deny
    Allow from all
    deny from all --拒绝所有

比如:在/www目录下新建一个bbs目录,也就是/www/bbs,再在/www/bbs里建立一个index.html文件,使用directory目录容器控制拒绝35访问,别的都允许
 

   order allow,deny
   allow from all
   deny from 10.1.1.35

--加上这段话,不要嵌套在/www的目录容器里
 
第四: 目录列表
条件一: Options Indexes --目录有此参数
条件二:没有主页文件
条件三:干掉欢迎页面

[root@36 ~]# vim /etc/httpd/conf.d/welcome.conf
#
#    Options -Indexes
#    ErrorDocument 403 /error/noindex.html
#

 /etc/init.d/httpd restart
 
例五.files 容器  --针对文件的控制

    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
   --表示35这个客户端不能访问/www/1
    order allow,deny
    allow from all
   deny from 10.1.1.35 



    order allow,deny
    deny from all
  --这种写法没有生效,不对,所以要files容器嵌套到目录容器内部,要上面的那种写法

--下面这段是apache的默认的一个files容器的配置示例
  --以.ht开头的文件不被客户端用户看到 
    Order allow,deny
    Deny from all

例六:location 容器

        order allow,deny
        deny from all

--这是对    这种URL来进行权限控制

--location容器有时候和directory有可能重合,并且配置有冲突,那么location优先生效,下面这种情况,是不能访问的

      order allow,deny
       deny from all

   order allow,deny
   allow from all
 
例七:对mod_status和mod_info这两个DSO配置服务器的信息查看
176 LoadModule status_module modules/mod_status.so
890
891     SetHandler server-status
892     Order deny,allow
893     Deny from all
894     Allow from 10.1.1.35
895

178 LoadModule info_module modules/mod_info.so

902
903     SetHandler server-info
904     Order deny,allow
905     Deny from all
906     Allow from 10.1.1.35
907


例八:对字符集的讨论
gb18030
gb2312
gbk
utf-8
 
AddDefaultCharset gb2312  
--如果字符集换成gb2312,则会发现客户端访问时有乱码,需要在浏览器软件上选择对应的字符集才可以正常显示
--这是因为apache家目录里的主页文件是默认以utf-8字符集编码的,所有造成了这种不匹配
 

例九:对网站目录使用apache的基本加密功能    .htaccess

[root@36 ~]# vim /www/.htaccess   --对哪个目录进行限制,就在哪个目录下建立此文件
authname "please input your username and password! @_@"
authtype basic
authuserfile /etc/httpd/userpasswd
require valid-user
[root@36 ~]# htpasswd -c /etc/httpd/userpasswd  aaa  --创建此文件,并加入一个用户,自定义密码,注意此用户与系统普通用户无关
New password:
Re-type new password:
Adding password for user aaa

[root@36 ~]# htpasswd  /etc/httpd/userpasswd  bbb  --再增加一个用户
New password:
Re-type new password:
Adding password for user bbb

[root@36 ~]# cat /etc/httpd/userpasswd
aaa:JscuRCtWV0Sh.
bbb:C6wrx4pFco/lk --密码为密文

[root@36 ~]# vim /etc/httpd/conf/httpd.conf

    Options Indexes FollowSymLinks
    AllowOverride all --改成all,支持.htaccess加密
    Order allow,deny
    Allow from all
[root@36 ~]# /etc/init.d/httpd restart
 
  访问时,需要验证

例十:
 用户主页空间

336
342 #    UserDir disable --注释这一行
349     UserDir public_html --打开这一行的注释
351
--再把下面这一段打开注释
357
358     AllowOverride FileInfo AuthConfig Limit
359     Options MultiViews Indexes SymLinksIfOwnerMatch In    cludesNoExec
360    
361         Order allow,deny
362         Allow from all
363    

364    
365         Order deny,allow
366         Deny from all
367    

368
[root@36 ~]# /etc/init.d/httpd restart

[root@36 ~]# mkdir /home/user1/public_html
[root@36 ~]# mkdir /home/user2/public_html
[root@36 ~]# echo "user1空间主页" > /home/user1/public_html/index.html
[root@36 ~]# echo "user2空间主页" > /home/user2/public_html/index.html
[root@36 ~]# chmod 701 /home/user1/
[root@36 ~]# chmod 701 /home/user2/
--访问测试

 
===============================
 
 虚拟主机
 一台服务器跑多台web服务
[root@36 ~]# mkdir /www/aaa
[root@36 ~]# mkdir /www/bbb
[root@36 ~]# mkdir /www/ccc
[root@36 ~]# echo "aaa main page" > /www/aaa/index.html
[root@36 ~]# echo "bbb main page" > /www/bbb/index.html
[root@36 ~]# echo "ccc main page" > /www/ccc/index.html
 
例十一:基于IP的虚拟主机
NameVirtualHost *:80

    DocumentRoot /www/aaa
    ServerName 10.1.1.36
    ErrorLog logs/36-error_log
   CustomLog logs/36-access_log common

    DocumentRoot /www/bbb
    ServerName 10.1.1.37
    ErrorLog logs/37-error_log
   CustomLog logs/37-access_log common

    DocumentRoot /www/ccc
    ServerName 10.1.1.38
    ErrorLog logs/38-error_log
   CustomLog logs/38-access_log common

 
[root@36 ~]# ifconfig eth0:0 10.1.1.37 netmask 255.255.255.0
[root@36 ~]# ifconfig eth0:1 10.1.1.38 netmask 255.255.255.0
[root@36 ~]# /etc/init.d/httpd restart
验证:



缺点很明显:浪费IP地址资源

例十二:基于端口的虚拟主机
Listen 80
Listen 8000
Listen 8080

    DocumentRoot /www/aaa
    ServerName 10.1.1.36
    ErrorLog logs/36-error_log
   CustomLog logs/36-access_log common


    DocumentRoot /www/bbb
    ServerName 10.1.1.36
    ErrorLog logs/37-error_log
   CustomLog logs/37-access_log common


    DocumentRoot /www/ccc
    ServerName 10.1.1.36
    ErrorLog logs/38-error_log
   CustomLog logs/38-access_log common
/etc/init.d/httpd restart
验证:



缺点:客户端访问时输入端口不方便,对客户端来说不够透明:还有就是开放端口多了,安全性降低
 
例十三:基于域名的虚拟主机

--需要DNS的cname记录的支持
aaa.web.com
bbb.web.com
ccc.web.com

--以下架构是DNS服务器和apache服务器的IP在同一台机器10.1.1.36上,也可以考虑分成两台服务器来做
[root@36 ~]# yum install bind*  -y

[root@36 ~]# vim /var/named/chroot/etc/named.conf
options {
        directory "/var/named";
};
zone "web.com"  IN {
        type master;
        file "data/master.web.com.zone";
};
 
[root@36 ~]# vim /var/named/chroot/var/named/data/master.web.com.zone
$TTL 86400
@       IN      SOA     sdfasdfsa.   sfddsafas. (
                        2011032601
                        120
                        240
                        360
                        86400 )
        IN      NS      sdfsafasfddfsa.web.com.
aaa     IN      A       10.1.1.36 --这里为apache服务器的IP
bbb     IN      CNAME   aaa
ccc     IN      CNAME   aaa
[root@36 ~]# /etc/init.d/named restart
 

[root@36 ~]# vim /etc/httpd/conf/httpd.conf

NameVirtualHost *:80

    DocumentRoot /www/aaa
    ServerName aaa.web.com
    ErrorLog logs/aaa-error_log
   CustomLog logs/aaa-access_log common


    DocumentRoot /www/bbb
    ServerName bbb.web.com
    ErrorLog logs/bbb-error_log
   CustomLog logs/bbb-access_log common


    DocumentRoot /www/ccc
    ServerName ccc.web.com
    ErrorLog logs/ccc-error_log
   CustomLog logs/ccc-access_log common
[root@36 ~]# /etc/init.d/httpd restart
 
--以下是客户端的验证
[root@li data]# vim /etc/resolv.conf
nameserver  10.1.1.36  --DNS指向DNS服务器的IP




VPS   virtual  private  server   虚拟专用服务
使用虚拟化技术(vitural sever 或者  vmware   EXS server  )把一台服务器分隔成几个服务器,每个都拥有独立的CPU资源,内存资源,磁盘资源,独立IP等
 
===================================================
 

第三方模块   实现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
libtool --finish /usr/local/apache2/modules
echo /usr/local/apache2/modules > /etc/ld.so.conf.d/httpd.conf
ldconfig
确认/etc/httpd/conf/httpd.conf里是否自动加载了下面这句话
LoadModule cband_module       /usr/lib/httpd/modules/mod_cband.so

针对虚拟主机new.cluster.com进行限速
NameVirtualHost *: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个,最大的总连接数
    cbandremotespeed 10kb/s 3 3 --针对单一客户端下载速度为10kb/s,每秒可以同时3个连接,最多一个IP生成3个连接

  sethandler cband-status --使用访问控制状态


  sethandler cband-status-me   ----使用访问控制状态

/etc/init.d/httpd restart
dd if=/dev/zero of=/www/aaa/123  bs=1M count=1000  --创建一个大点的文件,做下载测试
wget    --使用wget下载,发现被限速了
使用下面的URL地址访问状态信息页面


阅读(5164) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~