df3 发表于 2013-8-26 09:19:27

Linux服务之httpd基本配置详解

当今主流的开源Web服务器软件有httpd(Apache),lighttpd,nginx,thttpd等,而httpd是迄今为止使用量多的web服务器,据统计目前httpd的全球占有量是47%左右,虽然有所下降但是使用两仍然是最多的,统计web服务器使用率的网站是:http://news.netcraft.com/
好了废话不多说,还是来介绍一下httpd的一些基本配置吧!一、基本介绍1、版本httpd-1.3httpd-2.0httpd-2.2httpd-2.4目前为止最新的版本是httpd-2.4.6,但是这里我用的是系统自带的RPM包安装的httpd-2.2.15版本的,最新版本配置可能会有所不同2、模型:高度模块化:DSOMPM:Multipath Processing Module    #多处理模块prefork:一次一个进程响应一个请求   worker:一个进程生成多个线程,一个线程响应一个请求   event:基于事件驱动,一个进程响应多个请求3、安装这里就直接rpm包安装了,光盘上就有软件包yum install httpd4、httpd安装完后的基本信息   服务脚本:/etc/rc.d/init.d/httpd
   运行目录:/etc/httpd/
   配置文件:/etc/httpd/conf
       主配置文件:/etc/httpd/conf/httpd.conf
       扩展配置:/etc/httpd/conf.d/*.conf
   socket:http:80/tcp,https:443/tcp
   网页文件目录(DocumentRoot):/var/www/html
   CGI:/var/www/cgi-bin/
   默认主页面文件:/var/www/html/index.html
5、主配置文件结构   全局配置:对主服务器或虚拟主机都有效,且有些功能是服务器自身工作属性;
   主服务器配置:主站属性
   虚拟服务器:虚拟主机及属性定义6、测试配置和查看的命令
   所使用的
service httpd configtest      #测试配置文件有没有语法错误
httpd -t                         #同上
httpd -l                        #当前服务器所使用的模型及开启模块
httpd -D DUMP_MODULES         #当前服务器支持的模块
service httpd reload            #重新加载配置文件
service httpd restart         #重启httpd服务
注意:修改配置文件后要重新加载配置文件,修改服务器监听端口后要重启服务
二、基本配置
温馨提示:配置httpd的工作属性时,指令不区分大小写,但有约定俗成的习惯:单词的首字母大写;指令的值很有可能区分大小写;有些指令可以重复使用多次;
1、配置监听的端口:
   Listen PORT
例如:Listen 172.16.3.1:80
2、配置所选用的MPM的属性
安装完默认使用prefork模型

StartServers       8      #服务启动后默认开启的进程数
MinSpareServers    5      #最少空闲进程数
MaxSpareServers   20      #最多空闲进程数
ServerLimit      256      #每个进程允许开启最多的子进程数
MaxClients       256      #每个进程最多用户链接数
MaxRequestsPerChild4000   #长连接时每个用户最多请求数

worker模型:要支持worker模型需要配置/etc/sysconfig/httpd,开启以下行:
HTTPD=/usr/sbin/httpd.worker

StartServers         4      #服务启动默认开启的进程数
MaxClients         300      #最多同时客户连接数
MinSpareThreads   25      #最少空闲进程数
MaxSpareThreads   75      #最好空闲进程数
ThreadsPerChild   25      #每个进程开启的线程数
MaxRequestsPerChild0   

3、配置服务器支持keep-alived(长连接)
KeepAlive {On|Off}          #是否支持长连接
KeepAliveTimeout 2          #长连接超时时间
MaxKeepAliveRequests 50   #超时时间内允许请求的次数
4、配置加载模块
# LoadModule foo_module modules/mod_foo.so
#
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
5、配置网站根目录
DocumentRoot "/var/www/html"    #指定网站的主目录
   #容器内定义站点的访问权限

                #容器内限定用户的访问方法

6、配置页面文件的访问属性

    Options
    Indexes         #是否允许索引页面文件,建议关闭
    FollowSymLinks#是否跟随软连接文件
    SymLinksifOwnerMatch #跟随符号链接,只允许访问运行apache的用户有属主权限的文件
    ExecCGI:      #是否允许执行CGI脚本;
    All
    None

7、基于客户端访问控制

系统默认允许所有人访问

Order    #定义allow和deny那个为默认法则;写在后面的为默认法则:写在前面的指令没有显示定义的即受后面的指令控制:
Order allow,deny
Allow from all    #所有人可以访问

配置允许172.16.0.0/16访问,但不允许172.16.3.1访问

Order allow,deny
Deny from 172.16.3.1      #禁用一个IP访问
Allow from 172.16.0.0/16    #允许一个网段访问

8、userdir个人站点

    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    #UserDir disabled      #注释此项
    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disabled" line above, and uncomment
    # the following line instead:
    #
    UserDir public_html    #开启此项

重新加载配置文件后用:http://HOST/~username/
    例如:http://172.16.3.1/~centos/
9、定义默认主页
1
DirectoryIndex index.php index.jsp index.html
10、配置日志功能
日志有两类:访问日志(格式自定义)、错误日志

错误日志:
    ErrorLog "/path/to/error_log_file"
访问日志:
    CustomLog "/path/to/custom_log_file" logformat
    日志格式:{combined|common|agent}
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
%h            #主机名
%l            #
%u            #用户名
%t            #请求到达的时间
%r            #请求报文的起始行,方法
%s            #
%b            #响应报文的大小
%{Foobar}i      #显示从发那个站点跳转过来
%{User-Agent}i#用户代理
11、支持的字符集
1
AddDefaultCharset UTF-8
12、路径别名
可以隐藏网站的真实目录,
Alias /test/ "/www/test/"            #配置别名
         #可以给别名目录定义访问权限
    Options None
    AllowOverride None
    Order allow,deny
    Allow from 172.16.0.0/16






13、脚本路径别名调用服务器上的脚本程序,但不希望脚本放在网站的目录下


ScriptAlias /cgi-bin/ "/www/cgi-bin/"   #定义cgi脚本路径别名
# vi /wwww/cgi-bin/test.sh                #写一个测试脚本
#!/bin/bash
#cat << EOF
Content-Type:text/html
                                 #这里要有一个空行否则可能会测试不成功

The hostname is: `hostname`.            #输出当前系统的主机名
The timeis: `date`.                     #显示时间

EOF





测试:显示的是脚本执行后的结果14、基于用户访问控制当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制
这里使用htpasswd命令建立用户帐号文件
htpasswd
    -c#第一次使用-c创建新文件,不是第一次不要使用此选项
    -m#用户密码使用MD5加密后存放
    -s#用户密码使用SHA加密后存放
    -p#用户密码不加密
    -d#禁用一个账户
    -e#启用一个账户
例如:
# htpasswd -c -m /etc/httpd/conf/.htpasstom
   命令    选项生成的用户文件路径及文件名 用户名
# htpasswd -m /etc/httpd/conf/.htpass jerry
# 再次添加用户时就不要使用-c选项了,否则会覆盖之前内容先生成
(1)建立用户帐号文件
# htpasswd -c -m /etc/httpd/conf/.htpasstom
(2)修改主配置文件
# vi /etc/httpd/conf/httpd.con
DocumentRoot "/www/html"    #此时网站根目录就是/www/html

Optins Indexes
AllowOverride AuthConfig
AuthName "Oaly for employees."    #登录提示信息,可自定义
AuthType Basic                  #认证方式
AuthUserFile /etc/httpd/conf/.htpass    #用户帐号文件
Require valid-user                #允许的用户





Require 指定可以访问的用户,可以指定单个用户,直接写用户名就可以了,用户名可以写多个用空格分开,也可以指定所有用户就用 valid-user
15、配置虚拟主机
(1)注释主服务器,添加虚拟主机
# DocumentRoot "/www/html"         #注释主服务器
NameVirtualHost 172.16.3.1:80      #开启虚拟主机

   DocumentRoot /www/web1      #虚拟主机的网站根目录
   ServerName web1.lyd.com       #主机名


   DocumentRoot /www/web2
   ServerName web2.lyd.com

(2)给虚拟主机提供测试文件
mkdir /www/web{1,2}
echo web1.lyd.com > /www/web1/index.html
echo web2.lyd.com > /www/web2/index.html





(3)配置完后用 httpd -t 测试配置文件有没有错误(4)重启服务 service httpd restart(5)验证,修改验证客户端的hosts文件,windows客户端开始-->运行-->输入"c:windowssystem32driversetchosts"用记事本打开并添加以下行172.16.3.1web1.lyd.com172.16.3.1web2.lyd.com
16、配置支持https
(1)安装httpd支持ssl模块
yum install mod_ssl -y
(2)自建CA
# cd /etc/pki/CA  
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
(3)生成私钥
cd /etc/httpd/conf/
mkdir ssl
cd ssl
(umask 077; openssl genrsa -out httpd.key 1024)
(4)生成证书申请
openssl req -new -key httpd.key -out httpd.csr
(5)ca签署证书
openssl ca -in httpd.csr -out httpd.crt -days 365
(6)修改httpd的ssl配置文件
   vi /etc/httpd/conf.d/ssl.conf

DocumentRoot "/www/web1"
ServerName www.lyd.com
SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key





(7)将ca证书导入到客户端可信任证书服务器,并验证

常用的配置基本就这些了,如有疏漏或错误之处,欢迎大家批评指正!

q528 发表于 2013-8-26 20:50:21

我本非随便的人,但如果你想随便,那我就随你的便好啦!

dongfangho 发表于 2013-8-27 13:37:44

男人有冲动可能是爱你,也可能是不爱,但没有冲动肯定是不爱!

mwjhw216 发表于 2013-8-29 07:07:25

美女未抱身先走,常使色狼泪满襟。。。。。。

benzhou 发表于 2013-8-30 19:29:06

微机原理闹危机,随机过程随机过,实变函数学十遍,汇编语言不会编!

qqwe 发表于 2013-9-1 10:25:10

勿以坑小而不灌,勿以坑大而灌之。

艾辉 发表于 2013-9-2 19:59:30

有竞争才有进步嘛
页: [1]
查看完整版本: Linux服务之httpd基本配置详解