Linux5.8下配置web服务器-入门级指导手册(step by step)
本篇博客是使用httpd制作web服务器的入门级指导手册,一步一步教你如何配置httpd,测试操作均在虚拟机上完成(Redhat Enterprise Linux 5.8),主要内容分两部分,前半部分是一些简单的介绍,后半部分是本篇博客的任务,内容涵盖以下几点(1、如何自定义网站文档目录,2、设置网站访问选项,3、设置网站访问控制,4、在用户的家目录中建立用户个人的网页站点,5、设置路径别名,6、虚拟主机的使用,7、查看主机状态信息,8、如何使用本地开发文档,9、基于openssl的https服务配置),本篇博客结束后将帮助你了解httpd的相关配置。
准备:(以下为作者配置,可依据个人需求进行修改)
准备两台虚拟机
一台作为服务器端,IP设为:192.168.134.22
一台作为CA使用,IP设为:192.168.134.37
服务器端使用的httpd是Apache 2.2
httpd实现的功能:
事先创建响应客户端请求的进程(prefork)
按需维持适当数量的响应进程(在httpd.conf中配置)
采用模块化设计,核心较小,各类功能可通过模块进行添加
支持运行配置,支持单独编译模块
支持多种方式的虚拟主机配置
基于IP的虚拟主机
IP1:80
IP2:80
基于端口的虚拟主机
IP:80
IP:8080
基于域名的虚拟主机
IP:80
IP与端口号相同但主机名不同:www.a.org, www.b.org
支持https协议(mod_ssl)
支持用户认证
支持基于IP或主机名的访问控制机制(ACL)
支持每个目录的访问控制
支持URL重写(对于客户端而言是透明的),(类似于别名)
例如:访问/p_w_picpath/a.jpeg与访问/bbs/p_w_picpaths/abs.jpeg本质上是一样的,但路径名不同
httpd部分文件介绍:
/usr/sbin/httpd:MPM:Multi-Processing Modules (多道处理模块)
红帽默认httpd的MPM为: prefork(事先创建进程)
主进程httpd的属主、属组: root, root (master process)
工作进程httpd的属主、属组: apache, apache (worker process)
/etc/rc.d/init.d/httpd:服务脚本
/etc/httpd: 工作的根目录,相当于程序安装目录
/etc/httpd/conf: 配置文件目录
主配置文件:httpd.conf (引用补充配置文件)
补充配置文件:/etc/httpd/conf.d/*.conf
/etc/httpd/modules: 模块目录
/etc/httpd/logs:日志目录,链接指向/var/log/httpd
日志文件有两类:访问日志access_log, 错误日志: err_log
/var/www: 默认web页面文件路径
html: 静态页面存储位置
cgi-bin: 动态内容存储位置
cgi: Common Gateway Interface 通用网关接口
web服务器与应用程序服务器通信的方式
Client -> httpd (index.cgi) -> Spawn Process (index.cgi) -> httpd -> Client
/etc/httpd/conf/magic: 定义本机如何识别通过MIME编码而来的非纯文本文档
/usr/bin/ab: Apache服务器压力测试工具
# 创建Apache用户认证,认证用户账号密码的相关命令
/usr/bin/htdbm
/usr/bin/htdigest
/usr/bin/htpasswd
一、操作前的一些准备及测试
1、安装httpd
yum list all | grep httpd# httpd-devel: 二次开发时使用# httpd-manual: httpd的开发文档yum -y httpd installrpm -ql httpd | less # 查看生成文件service httpd startnetstat -tnlp | grep :80 # 查看80端口是否处于监听状态ps aux | grep httpd# 会发现总共有9个httpd进程,其中一个是主进程,其它的是工作进程(prefork)
打开pc中的浏览器输入虚拟机IP:192.168.134.22
正常显示应该是Apache的欢迎页面(/etc/httpd/conf.d/welcome.conf)
2、查看httpd的配置文件
简单说明:
httpd.conf中包含三个部分内容
Section 1: Global Environment(全局环境变量)
Section 2: 'Main' server configuration(中心主机配置)
Section 3: Virtual Hosts(虚拟主机配置)
中心主机与虚拟主机一般不同时开启,默认启用中心主机
1、备份配置文件,做好恢复准备
cd /etc/httpd/conf/cp httpd.conf httpd.conf.bakgrep "Section" httpd.conf### Section 1: Global Environment### Section 2: 'Main' server configuration### Section 3: Virtual Hosts
2、添加网页文件进行测试
cd /var/www/html # 默认网站文档存储目录vim index.html# 添加内容示例:<title>index</title><h1>access success!</h1>
刷新网页查看结果,
二、上述操作一切正常接着就可以实现本篇博客的任务了
Section 1简单说明:
MPM机制:
prefork: 预先生成多个响应进程,每个客户端请求用一个进程进行响应,
worker:启动多个进程,每个进程生成多个线程,每个请求由一个线程进行处理
event:基于事件的驱动,一个进程处理多个用户请求
StartServers 8 # 服务器进程初次启动时开启的工作进程数量
MinSpareServers 5 # 最小空闲服务工作进程数量
MaxSpareServers 20 # 最大空闲服务工作进程数量
ServerLimit 256 # MaxClients的上限
# ServerLimit的修改需要先关闭服务->修改->重启才能生效
MaxClients 256 # 服务器一次最多可以处理的请求个数
# MaxClients的取值不能超过ServerLimit设定的值
MaxRequestsPerChild 4000 # 一个进程最多响应多少次用户请求
Direcotry:定义站点的访问属性的容器
Options:网页文档存储路径被访问时的属性
# Indexes:允许索引目录
# FollowSymLinks:允许符号链接
# Includes: 允许执行服务器端包含(SSI:server set include)
# SymLinksifOwnerMatch:
# ExecCGI: 允许运行CGI脚本
# MultiViews:多视图
# All: 运行所有选项
# None: 不运行所有选项
AllowOverride: 指定用户访问控制机制
None: 无,即仅使用Order访问控制机制
AuthConfig:使用用户认证控制机制
Order: 定义访问控制机制(httpd4不再使用Order)
示例:当前服务器仅允许IP地址为192.168.0.0/24的客户端访问
Order allow,deny
Allow from 192.168.0.0/24
地址表示方式:IP, network/netmask, hostname, domainname, partial IP
dir_modal: 定义是否允许用户在自己的家目录中建立个人的网络文件
AccessFileName: 指定一个目录的访问权限
DirectoryIndex: 指定默认主页
<Files ~ "^\.ht">: 禁止访问以.ht开头的所有文件(安全)
HostnameLookups:定义记录日志时是否需要将IP地址反解为域名
LogFormat:定义日志格式
Alias /luntan "/bbs/forum":路径别名
1、定义网站文档目录
1、修改网站文档存储目录
说明:假设/web/html/为网站文档真正存储的路径
mkdir /web/html -pvvim /etc/httpd/conf/httpd.conf # 修改文档存储路径修改前:DocumentRoot "/var/www/html"<Directory "/var/www/html">修改后:DocumentRoot "/web/html"<Directory "/web/html">
2、添加网页进行测试
cd /web/htmlvim index.html# 示例:<title>index</title><h1>web html</h1>
作者测试结果:
2、设置网站访问选项:Options
说明:在互联网上,网站的访问选项很多都会与安全问题或效率挂上关系,因此,一般将网站的访问选项设置为None
1、查看当前选项效果
cd /etc/httpd/conf.dmv welcome.conf welcome.conf.bak # 去除欢迎界面service httpd restartcd /web/htmlmv index.html a.htmlcp a.html b.html
刷新浏览器界面将看到显示一个索引页并将网站存储路径下的网页列出
2、修改配置文件
vim /etc/httpd/conf/httpd.conf# 修改Directory中的Options选项修改前:Options Indexes FollowSymLinks修改后:Options Noneservice httpd restart
3、测试修改后的显示效果
分别输入192.168.134.22与192.168.134.22/a.html进行测试,
下面是作者测试结果:192.168.134.22(左)192.168.134.22/a.html(右)
3、设置访问控制
1)设置仅采用基于order的访问控制
说明:本过程实现禁止IP为192.168.134.33的客户端访问,作者pc端IP设置为192.168.134.33
1、设置访问控制
vim /etc/httpd/conf/httpd.conf# 编辑访问控制# 修改前Order allow,denyAllow from all# 修改后(注释上述两行,添加以下两行):Order deny,allowDeny from 192.168.134.33service httpd restart
2、打开浏览器测试
说明:此时输入192.168.134.22/a.html将会显示Forbidden界面,这里不再贴图
elinks -dump http://192.168.134.22/a.html# 在虚拟机中测试,可以正常访问
3、测试成功后清除先前两行的注释,并将新添加的两行注释掉,否则pc端无法访问站点
2)设置基于用户或组的访问控制机制
说明:htpasswd -c -m htpasswd tom
-c: 第一次创建文件时使用的选项,此时若文件已存在将会被覆盖
-m:用户密码以md5的形式存放
htpasswd: 文件名
tom: 用户名
1、设置允许文件中存在的所有用户登录(require valid-user)
cd /etc/httpd/conf/vim httpd.conf# 修改访问控制机制# 修改前AllowOverride None# 修改后AllowOverride AuthConfigAuthType BasicAuthName "Restricted Site..."AuthUserFile "/etc/httpd/conf/htpasswd"require valid-userhtpasswd -c -m htpasswd tom # 创建用户tomhtpasswd -m htpasswd jack # 创建用户jackcat htpasswd # 查看文件service httpd restart
2、在浏览器中输入192.168.134.22/a.html进行测试
作者测试结果:
3、设置仅允许指定用户访问
vim httpd.conf# 指定访问用户修改 require valid-user 为 require tomservice httpd restart
4、测试结果
说明:此时,仅允许tom用户登录,jack用户无法登录,这里不再贴图
5、设置基于组的认证方式
vim httpd.conf# 修改认证配置如下:AllowOverride AuthConfigAuthType BasicAuthName "Restricted Site..."AuthUserFile "/etc/httpd/conf/htpasswd"AuthGroupFile "/etc/httpd/conf/htgroup"require group usersvim htgroup# 添加用户记录(用户需要是已经存在于(htpasswd)密码文件中的用户)# 组名:用户名1 用户名2...users: tom jackservice httpd restart
6、打开另一个浏览器进行测试(Google chrome,Firefox...)
说明:因为先前测试的浏览器已经通过认证,为了演示效果需要启用新的浏览器进行测试,
在浏览器中键入192.168.134.22/a.html显示的界面将与2中的结果一致,这里不再贴图
4、在用户的家目录中建立用户个人的网页站点
说明:这种方式不大安全,实际应用中一般不使用,使用时一般需要修改对应的<Directory>容器中的AllowOverride和Options为None,并启用访问控制以保证安全
1、修改配置文件,启用个人网站
vim /etc/httpd/conf/httpd.conf# 修改内容位于容器<IfModule mod_userdir.c># 修改前记录:UserDir disable#UserDir public_html# 修改后记录:#UserDir disableUserDir public_htmluseradd hadoopsu - haddpmkdir public_htmlcd public_htmlvim index.html:<title>index</title><h1>hadoop home</h1>logoutchmod o+x /home/hadoopservice httpd restart
2、打开浏览器测试
说明:用户个人站点使用IP/~USERNAME/访问
作者测试结果:
5、设置路径别名
说明:当前站点存在/bbs/forum, 现希望当用户输入/luntan/时访问/bbg/forum/站点
1、编辑配置文件添加别名记录
vim /etc/httpd/conf/httpd.conf# 添加如下记录:Alias /luntan/ "/bbs/forum/"mkdir /bbs/forum -pvcd /bbs/forumvim index.html<title>bbs forum</title><h1>bbs forum</h1>service httpd restart
2、测试
作者测试结果:
6、虚拟主机的使用
说明:在启用虚拟主机时,需要将中心主机关闭
即注释配置文件中的根文件记录:DocumentRoot "/web/html"
/etc/httpd/conf.d/*是httpd主配置文件的组成部分,主配置文件通过include导入该目录下的文件
作者这里讲虚拟主机配置文件放置于/etc/httpd/conf.d/目录下
配置文件内容与主配置文件大致相同,这里不再解释
虚拟主机定义:
<VirtualHost Host>
</VirtualHost>
1)基于IP的虚拟主机
1、编辑虚拟主机配置文件
vim /etc/httpd/conf/httpd.conf# 添加注释:#DocumentRoot "/web/html"cd /etc/httpd/conf.d/vim virtual.conf# 编辑虚拟主机配置文件,内容如下<VirtualHost 192.168.134.22:80>ServerName tobey.comDocumentRoot "/web/tobey.com"CustomLog /var/log/httpd/tobey.com/access_log combined</VirtualHost><VirtualHost 192.168.134.23:80>ServerName demo.ip.comDocumentRoot "/web/demo.ip.com"CustomLog /var/log/httpd/demo.ip.com/access_log combined<Directory "/web/demo.ip.com">Options NoneAllowOverride authconfigAuthType BasicAuthName "Restrict Site..."AuthUserFile "/etc/httpd/conf/htpasswd"Require User tom</Directory></VirtualHost>mkdir /web/{tobey.com,demo.ip.com} -pv # 创建站点目录cd /web/tobey.com/vim index.html<h1>here is tobey.com</h1>cd /web/demo.ip.com/vim index.html<h1>here is demo.ip.com</h1>mkdir /var/log/httpd/{tobey.com,demo.ip.com} # 创建日志目录touch /var/log/httpd/demo.ip.com/access_logtouch /var/log/httpd/tobey.com/access_logip addr add 192.168.134.23/24 dev eth0 label eth0:0# 添加辅助地址ping 192.168.134.23 # 测试IP地址是否可用
2、测试
作者测试结果:
说明:这里省略右边界面用户认证信息提示框,从图中可以看出虚拟主机实现的效果
2)基于端口的虚拟主机
1、编辑虚拟主机配置文件
vim /etc/httpd/conf.d/virtual.conf# 添加如下内容,为了演示方便,这里不再设置访问控制及日志文件<VirtualHost 192.168.134.22:8080>ServerName b.tobey.comDocumentRoot "/web/b.tobey.com"</VirtualHost>mkdir /web/b.tobey.com -pvvim /web/b.tobey.com/index.html<h1>here is b.tobey.com</h1>vim /etc/httpd/conf/httpd.conf# 添加监听8080端口记录Listen 8080service httpd restart
2、测试
作者测试结果
3)基于主机名的虚拟主机
说明:基于主机名的虚拟主机需要启用NameVirtualHost
1、编辑虚拟主机配置文件
vim /etc/httpd/conf.d/virtual.conf# 添加如下内容,为了演示方便,这里不再设置访问控制及日志文件NameVirtualHost 192.168.134.23:80<VirtualHost 192.168.134.23:80>ServerName demo.name.comDocumentRoot "/web/demo.name.com"</VirtualHost>mkdir /web/demo.name.com -pvvim /web/demo.name.com/index.html<h1>here is demo.name.com</h1>service httpd restart
2、在pc中的hosts文件中追加三条记录(怎么追加记录就不详述了)
路径:C:\Windows\System32\drivers\etc
192.168.134.23 demo.ip.com
192.168.134.23 demo.name.com
192.168.134.22 tobey.com
3、测试
作者测试结果:
4、此时直接输入192.168.134.23将会显示demo.ip.com的界面(因为在虚拟主机配置文件中,
demo.ip.com的配置信息在demo.name.com之前),因此最好设置一个默认虚拟主机,禁止随意输
入的网址的访问,或显示指定默认界面
4.1、向虚拟主机中追加默认虚拟主机配置文件
说明:默认虚拟主机配置文件格式是:
<VirtualHost _default_:80>
ServerName ...
DocumentRoot ...
</VirtualHost>
或:
<VirtualHost _default_:*>
ServerName ...
DocumentRoot ...
</VirtualHost>
不过作者使用上面的格式尝试了一番,未能顺利实现虚拟主机配置,最终选择下面的
笨方法实现了... 知道怎么配置的希望给我留言,谢谢!
vim /etc/httpd/conf.d/virtual.conf# 添加如下内容,注意,默认虚拟主机需要放置在192.168.134.23:80所有虚拟主机的第一个<VirtualHost 192.168.134.23:80>ServerName default.comDocumentRoot "/web/default.com"</VirtualHost>mkdir /web/default.com -pvvim /web/default.com/index.html# 左边页面显示内容<h1>here is default.com</h1>service httpd restart也可以将网站目录权限设置为600,这样就直接禁止访问了(右)chmod 600 /web/default.comservice httpd restart
测试效果如下:
7、查看主机状态信息
说明:实际应用中若要查看主机状态信息,记得配置访问控制,下述配置仅作为演示使用
1、编辑配置文件启用容器<Location /server-status>
vim /etc/httpd/conf/httpd.conf# 启用Location# 编辑如下:<Location /server-status>SetHandler server-statusOrder allow,denyAllow from all# Order deny,allow# Deny from all# Allow from .example.com</Location>service httpd restart
2、查看主机状态
8、如何使用本地开发文档
说明:由于国内网络访问外网比较慢,因此直接下载开发文档,这样使用更方便
1、安装开发文档
yum install httpd-manual -yservice httpd restart
2、使用本地开发文档
说明:只要在任意本地网页地址后追加“/manual/”即可使用本地开发文档
9、基于openssl的https服务配置
说明:这里的CA使用另一台虚拟机通过openssl实现,对如何制作CA不了解的可参考作者另一篇博客Linux上使用openssl实现模拟CA
CA:192.168.134.37
服务器:192.168.134.22
1、安装ssl模块(服务器)
yum -y install mod_sslrpm -ql mod_ssl/etc/httpd/conf.d/ssl.conf # 作为httpd的主配置文件的一部分使用/usr/lib/httpd/modules/mod_ssl.so /var/cache/mod_ssl # ssl会话的缓存数据
2、生成自签证书(CA)
cd /etc/pki/CA# 生成私钥(umask 077; openssl genrsa -out private/cakey.pem 2048)# 生成自签证书vim /etc/pki/tls/openssl.cnf # ×××默认信息及×××路径为绝对路径openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655 Country Name (2 letter code) [CN]:State or Province Name (full name) [Shandong]:Locality Name (eg, city) [Qindao]:Organization Name (eg, company) [TBcompany]:Organizational Unit Name (eg, section) [Tech]:Common Name (eg, your name or your server's hostname) []:ca.TBcompany.comEmail Address []:caadmin@TBcompany.com# 在证书路径下添加# 生成证书存放目录(certs), # 吊销证书存放目录(crl)# 新签证书存放目录(newcerts)# 存放所有证书信息的文件(index.txt)# 存放新签证书序列号的文件(serial)mkdir certs crl newcertstouch index.txtecho 00 > serial# 此时CA就可以使用了
3、生成证书签署请求(服务器)
cd /etc/httpd/mkdir ssl # 证书存放路径cd ssl# 生成一对密钥,将公钥包装成证书签署请求(umask 077; openssl genrsa 1024 > httpd.key) # 私钥openssl req -new -key httpd.key -out httpd.csr# 生成证书颁发请求Country Name (2 letter code) [CN]:State or Province Name (full name) [Shandong]:Locality Name (eg, city) [Qindao]:Organization Name (eg, company) [TBcompany]:Organizational Unit Name (eg, section) [Tech]:Common Name (eg, your name or your server's hostname) []:tobey.comEmail Address []:caadmin@tobey.comscp httpd.csr 192.168.134.37:/root/ # 将证书签署请求发送给CA
4、签署证书(CA)
openssl ca -in httpd.csr -out httpd.crt -days 3650 # 颁发证书scp httpd.crt 192.168.134.22:/etc/httpd/ssl/
5、将/etc/pki/CA/cacert.pem复制到pc并安装证书(CA)
说明:证书复制到pc端后,需要将证书后缀修改为.crt,接着就可以安装证书了
6、编辑ssl配置文件(服务器)
cd /etc/httpd/conf.d/cp ssl.conf ssl.conf.bakvim ssl.confVirtualHost:<VirtualHost 192.168.134.22:443>ServerName:ServerName tobey.comDocumentRoot:DocumentRoot "/web/tobey.com"SSLCertificateFile:SSLCertificateFile /etc/httpd/ssl/httpd.crtSSLCertificateKeyFile:SSLCertificateKeyFile /etc/httpd/ssl/httpd.keyhttpd -tservice httpd restartnetstat -tnlp
7、打开浏览器测试
作者测试结果:可以看到IE上测试一切正常,chrome上测试提示网站使用的签名安全系数较低,
总之,到这一步算是一切都完成了
好了,至此httpd相关知识点算是整理完成了,能力有限,疏漏处还望指出,,
转载于:https://blog.51cto.com/tobeys/1785074
Linux5.8下配置web服务器-入门级指导手册(step by step)相关推荐
- Ubuntu 12.10下配置Web服务器详细教程
搭建Ubuntu的Web服务器 无疑是目前非常热门的技术.下面我们来看一下如何在Ubuntu下搭建大家熟悉的Web服务器. Linux在服务器领域表现却尤为喜人,据IDC数据显示,部署了Linux系统 ...
- 在win8上配置网站服务器,win8怎么配置web服务器地址
win8怎么配置web服务器地址 内容精选 换一换 SSL证书签发后,即可下载并安装在Tomcat.Nginx.Apache.IIS等服务器上.具体操作请参见:在Tomcat上安装SSL证书:详细指导 ...
- nas服务器改成网站,nas配置web服务器
nas配置web服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 云耀云服 ...
- nas文件服务器web接口,nas配置web服务器
nas配置web服务器 内容精选 换一换 通过Web浏览器登录资源,会话页面载入失败,提示由于服务器长时间无响应,连接已断开,请检查您的网络并重试(Code:T_514).云堡垒机系统与资源服务器之间 ...
- win7信息服务器iis管理器,win7iis管理器配置web服务器
win7iis管理器配置web服务器 内容精选 换一换 代码迁移工具进行代码迁移时,需要调用Linux下的rpm.deb等命令才能完成扫描和迁移相关任务,这些命令和逻辑必须在后端Linux运行.IDE ...
- 为网站配置web服务器实验报告,配置web服务器实验报告.docx
文档介绍: 配置web服务器实验报告实验报告专业班级成绩评定_______学号姓名教师签名_______实验题目配置和管理Web服务器实验时间一.实验目的: 1.掌握Web服务器的基本配置方法.2.学 ...
- Linux下配置DNS服务器之一--Master服务器
Linux下配置DNS服务器之一--Master服务器 系统环境: RedHat EL55 Oracle 11g RAC 集群中引入了SCAN(Single Client Access Name)的概 ...
- 教你如何在云服务器上安装并配置web服务器(这里以nginx服务器为例,操作系统linux)
前言: 这里以git bash 工具为例,当然你可以直接用puTTY或者Xshell链接到服务器,用FileZilla 上传文件. 一.连接服务器 ssh root@你的远程ip地址. 二.查看版本 ...
- 服务器系统centos7 x64位,在Centos7.2(64位)下搭建Web服务器
一:通过Yum安装mysql 1 # wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 2 # rpm -i ...
最新文章
- 【Windows 逆向】使用 CE 分析内存地址 ( 运行游戏 | 使用 CE 工具分析游戏内子弹数量对应的内存地址 | 内存地址初步查找 | 使用二分法定位最终的内存地址 )
- Object类与Objects类总结
- Swoole的全双工、半双工和单工
- 线程池原理与自定义线程池
- python与tensorflow的关系_python – 在TensorFlow,Session.run()和Tensor.eval()之间有什么区别?...
- mocha.js 生成覆盖率报告
- NBIOT(3)---NBIOT 移远BC28模块+stm32
- 26 伪造ICMP数据包
- 佳顺通用进销存系统去广告_免费在线进销存软件弊端之重复投资
- 【供应链架构day12】电商仓储WMS的业务UseCase
- vscode格式化报错
- Win系统 - 如何查看电脑有几个内存条插槽?
- Flutter Navigator基础使用
- chrome打开网页很慢,别的浏览器打开相同的网页很快
- matlab—赋值具有的非单一 rhs 维度多于非单一下标数
- 存储过程,使用游标,详细过程及详解
- 老师计算机组合照说说,生物老师座右铭 教师照片墙格言
- [计算机视觉]-经典网络inception v1、v2、v3、v4核心工作详解及总结
- Java NIO(四)选择器Selector
- 湖北电信天邑TY1608_S905L3B_MT7668_卡刷固件包