当今主流的开源Web服务器软件有httpd(Apache),lighttpd,nginx,thttpd等,而httpd是迄今为止使用量多的web服务器,据统计目前httpd的全球占有量是47%左右,虽然有所下降但是使用两仍然是最多的,统计web服务器使用率的网站是:http://news.netcraft.com/

好了废话不多说,还是来介绍一下httpd的一些基本配置吧!

一、基本介绍

1、版本

httpd-1.3

httpd-2.0

httpd-2.2

httpd-2.4

目前为止最新的版本是httpd-2.4.6,但是这里我用的是系统自带的RPM包安装的httpd-2.2.15版本的,最新版本配置可能会有所不同

2、模型:

高度模块化:DSO

MPM:Multipath Processing Module    #多处理模块

prefork:一次一个进程响应一个请求

worker:一个进程生成多个线程,一个线程响应一个请求

event:基于事件驱动,一个进程响应多个请求

3、安装

这里就直接rpm包安装了,光盘上就有软件包

yum install httpd

4、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 [IP:]PORT

例如:Listen 172.16.3.1:80

2、配置所选用的MPM的属性

安装完默认使用prefork模型

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

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

HTTPD=/usr/sbin/httpd.worker

<IfModule worker.c>
StartServers         4        #服务启动默认开启的进程数
MaxClients         300        #最多同时客户连接数
MinSpareThreads     25        #最少空闲进程数
MaxSpareThreads     75        #最好空闲进程数
ThreadsPerChild     25        #每个进程开启的线程数
MaxRequestsPerChild  0
</IfModule>

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"    #指定网站的主目录
<Directory "/var/www/html">     #容器内定义站点的访问权限
</Directory>
<Location "URL">                #容器内限定用户的访问方法
</Location>

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

<Directory "/var/www/html">OptionsIndexes         #是否允许索引页面文件,建议关闭FollowSymLinks  #是否跟随软连接文件SymLinksifOwnerMatch #跟随符号链接,只允许访问运行apache的用户有属主权限的文件ExecCGI:        #是否允许执行CGI脚本;AllNone
</Directory>

7、基于客户端访问控制

系统默认允许所有人访问
<Directory "/var/www/html">
Order    #定义allow和deny那个为默认法则;写在后面的为默认法则:写在前面的指令没有显示定义的即受后面的指令控制:
Order allow,deny
Allow from all    #所有人可以访问
</Directory>
配置允许172.16.0.0/16访问,但不允许172.16.3.1访问
<Directory "/var/www/html">
Order allow,deny
Deny from 172.16.3.1        #禁用一个IP访问
Allow from 172.16.0.0/16    #允许一个网段访问
</Directory>

8、userdir个人站点

<IfModule mod_userdir.c># 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    #开启此项
</IfModule>

重新加载配置文件后用:http://HOST/~username/

例如:http://172.16.3.1/~centos/

9、定义默认主页

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、支持的字符集

AddDefaultCharset UTF-8

12、路径别名

可以隐藏网站的真实目录,

Alias /test/ "/www/test/"            #配置别名
<Directory "/www/test">         #可以给别名目录定义访问权限Options NoneAllowOverride NoneOrder allow,denyAllow from 172.16.0.0/16
</Directory>

13、脚本路径别名

调用服务器上的脚本程序,但不希望脚本放在网站的目录下

ScriptAlias /cgi-bin/ "/www/cgi-bin/"     #定义cgi脚本路径别名
# vi /wwww/cgi-bin/test.sh                #写一个测试脚本
#!/bin/bash
#cat << EOF
Content-Type:text/html#这里要有一个空行否则可能会测试不成功
<pre>
The hostname is: `hostname`.              #输出当前系统的主机名
The timeis: `date`.                       #显示时间
</pre>
EOF

测试:显示的是脚本执行后的结果

14、基于用户访问控制

当你的网站或者站点的某个路径只想让你授权的用户访问时,就可以使用基于用户的访问控制

这里使用htpasswd命令建立用户帐号文件

htpasswd-c  #第一次使用-c创建新文件,不是第一次不要使用此选项-m  #用户密码使用MD5加密后存放-s  #用户密码使用SHA加密后存放-p  #用户密码不加密-d  #禁用一个账户-e  #启用一个账户
例如:
# htpasswd -c -m /etc/httpd/conf/.htpass  tom命令    选项  生成的用户文件路径及文件名 用户名
# htpasswd -m /etc/httpd/conf/.htpass jerry
# 再次添加用户时就不要使用-c选项了,否则会覆盖之前内容先生成

(1)建立用户帐号文件

# htpasswd -c -m /etc/httpd/conf/.htpass  tom

(2)修改主配置文件

# vi /etc/httpd/conf/httpd.con

DocumentRoot "/www/html"    #此时网站根目录就是/www/html
<Directory "/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      #开启虚拟主机
<VirtualHost 172.16.3.1:80>DocumentRoot /www/web1        #虚拟主机的网站根目录ServerName web1.lyd.com       #主机名
</VirtualHost>
<VirtualHost 172.16.3.1:80>DocumentRoot /www/web2ServerName web2.lyd.com
</VirtualHost>

(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:\windows\system32\drivers\etc\hosts"用记事本打开并添加以下行

172.16.3.1web1.lyd.com

172.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

<VirtualHost 172.16.3.1:443>
DocumentRoot "/www/web1"
ServerName www.lyd.com
SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key

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

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

转载于:https://blog.51cto.com/liyandong/1282225

Linux服务之httpd基本配置详解相关推荐

  1. FTP服务的简介和配置详解

    FTP服务的简介和配置详解 注意:配置FTP服务时,最好关闭防火墙和selinux 1.FTP服务简介 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为& ...

  2. Linux中Nginx安装与配置详解及常见问题

    3 Nginx安装 3.1 安装前的准备     1)准备 pcre-8.12.tar.gz.该文件为正则表达式库.让nginx支持rewrite需要安装这个库.     2) 准备 nginx-1. ...

  3. [HTTPD] Linux(Apache)Httpd服务器安装,启动及httpd.conf配置详解

    Apache HTTP Server HTTPD简介 Apache HTTP Server(简称Apache或httpd)是Apache软件基金会的一个开放源代码的网页服务器软件,旨在为unix,wi ...

  4. linux软件包管理工具,Linux 软件包管理器-----yum配置详解一

    一.yum简介 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定 ...

  5. Linux网络实战 (一) —— DNS配置详解(安装与使用DNS)

    Linux网络实战-- DNS配置 Linux网络实战 (一) -- DNS配置 Linux 本机DNS配置 Linux主机名配置文件 添加一个新的主机名映射 删除一个主机名映射 实例 安装DNS服务 ...

  6. Xinetd服务的安装与配置详解

    1.什么是xinetd xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器.经常用来管理多种轻量级Interne ...

  7. Apache2 httpd.conf 配置详解(一)

    常用配置指令说明 ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录.默认为安装目录,不需更改. 语法:ServerRoot di ...

  8. linux下nginx部署以及配置详解

    1.下载源码包解压编译 启动多个,请看:在linux系统下安装两个nginx以及启动 查看nginx包路径:http://nginx.org/download/,两种下载方式: 1.在官网下载使用Xf ...

  9. Linux下MongoDB安装和配置详解

    一.创建MongoDB的安装路径 在/usr/local/  创建文件夹mongoDB mkdir mongoDB 二.上传文件到Linux上的/usr/local/source目录下 1. 我首先在 ...

最新文章

  1. css 找到隐藏元素个数
  2. 20165301 我期望的师生关系
  3. struts2的DevMode(开发模式)模式
  4. 使用css让页面变成黑白
  5. 【Redis】1.Redis入门简介以及基本操作命令
  6. 【软件使用】Windows下的Objective-C集成开发环境搭建(IDE)
  7. 进程线程与栈、堆的关系
  8. hibernate之初学复合主键
  9. C 库函数 - atoi() 字符串中的数字转换为一个整型
  10. [云计算]网线的标签格式
  11. Atitit java js groupby 分组操作法
  12. Linux远程传输命令scp、rsync(tar打包归档并在系统之间传输文件)
  13. 软件测试的类型有哪些?
  14. 01-Weakly supervised consistency
  15. 张宏 :移动机器人全局定位技术与方法是啥?道翰天琼认知智能机器人平台API接口大脑为您揭秘-1。
  16. 如何快速建立一个网络爬虫(初学者指南)
  17. 离散数学-集合论-函数(10)
  18. Solr拼写检查示例
  19. AndroidStudio制作欢迎界面与应用图标,使用Android Studio 3.0.1作为开发工具
  20. linux里添加网卡,Linux添加虚拟网卡的多种方法

热门文章

  1. php pdo 绕过,php-带PDO的忘记密码脚本(需要解密)
  2. html默认下面,阅读下面配置web默认页面index.html的代码 index.html 下面选项中,说法正确的是() (多选)...
  3. linux nfs spec,创建 NFS Ubuntu Linux 服务器卷 - Azure Kubernetes Service | Microsoft Docs
  4. linux查看一小时之内的日志,linux – 在[timespan]内(例如最后一小时)查找日志文件中的条目...
  5. java线程读取流的时候卡死,java – 线程中断没有结束阻塞调用输入流读取
  6. elementui中同时上传多个文件_element ui 上传文件,批量一次上传多个文件,为什么是发送了多次请求,我想一次请求,然后发送多个文件怎么实现呢?...
  7. 移除Java对象中的属性_在java对象中添加和删除属性
  8. jtree和mysql_java 已经获取某个mysql数据库的所有表名 创建JTree
  9. 二、Python第二课——变量命名规则及字符串变量相关函数
  10. python 怎么将数组转为列表_怎么将视频转为GIF动态图 表情包怎么制作