Web 网站服务
Apache 简介
Apache HTTP Server(简称Apache)是开放源码的网页服务器,基于标准的HTTP网站协议提供网页浏览服务,在Web服务器领域中长期保持着超过半数的份额。Apache服务器可以运行在Linux,UNIX,Windows等多种操作系统平台中
Apache的起源
Apache 源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简 单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,
尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗
更多的系统开支,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左 右。世界上很多著名的网站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、 Windows、Linux系统平台上)以及它的可移植性等方面。
Apache的主要特点
开放源代码、跨平台应用
支持多种网页编程语言:包括Perl,PHP,Python。Java等
模块化设计 、运行稳定、良好的安全性
软件版本
1.X
n 目前最高版本是1.3,运行稳定
n 向下兼容性较好,但缺乏一些较新的功能
2.X
n 目前主要包括2.0和2.2两个版本
n 具有更多的功能特性
n 与1.X相比,配置管理风格存在较大差异
安装httpd服务器
安装httpd服务器
环境描述:
|
操作系统 |
IP地址 |
主机名 |
软件包列表 |
|
CentOS 6.5_x84_64 |
192.168.6.10 |
Crushlinux |
httpd-2.2.17.tar.gz |
配置过程:
准备工作:
为了避免发生端口冲突,程序冲突等现象,建议卸载使用rpm方式安装的httpd
[root@crushlinux ~]# rpm -e httpd --nodeps
关闭防火墙和selinux
[root@crushlinux httpd-]# service iptables stop iptables:将链设置为政策 ACCEPT:filter [确定] iptables:清除防火墙规则: [确定] iptables:正在卸载模块: [确定] [root@crushlinux httpd-]# setenforce
源码编译及安装
解包
[root@crushlinux /]# tar zxf httpd-.tar.gz -C /usr/src/ [root@crushlinux /]# cd /usr/src/httpd-/
配置
[root@crushlinux httpd-]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
--prefix:指定将程序安装到哪个目录下
--enable-so:启用动态加载模块支持
--enable-rewrite:启用网页地址重写功能
--enable-charset-lite:启动字符集支持
--enable-cgi:启用CGI脚本程序支持

编译完成后,如上图,说明已经编译成功,如果出现以下错误

则在编译时入加 --with-included-apr 即可解决。
编译及安装
使用命令make将源代码转换为可执行的程序,然后执行make install完成最后的安装过程
[root@crushlinux httpd-]# make [root@crushlinux httpd-]# make install
优化执行路径
[root@crushlinux httpd-]# ln -s /usr/local/httpd/bin/* /usr/local/bin/
添加httpd系统服务
[root@crushlinux httpd-]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd [root@crushlinux httpd-]# vim /etc/init.d/httpd .#!/bin/sh .#chkconfig: .#description:http apache
解释:
345 66 88表示:345运行级别是开启的,66为服务启动顺序,88服务为停止顺序
[root@crushlinux httpd-]# chkconfig --add httpd //将httpd添加为系统服务 [root@crushlinux httpd-]# chkconfig --list httpd //查看httpd服务的自启动状态 httpd :关闭 :关闭 :关闭 :启用 :启用 :启用 :关闭 成功执行以上操作后,linux系统每次进入运行级别3,5时,httpd服务将会自动运行!
配置并启动服务
编辑主配置文件httpd.conf #ServerName www.example.com: ServerName www.benet.com
检查语法错误
[root@crushlinux httpd-]# /usr/local/httpd/bin/apachectl -t Syntax OK
启动httpd服务
[root@crushlinux httpd-]# /etc/init.d/httpd start [root@crushlinux httpd-]# netstat -anpt | grep httpd tcp ::: :::* LISTEN /httpd
默认监听TCP的80端口
赋权
[root@crushlinux httpd-]# chmod +x /etc/init.d/httpd
启动服务
[root@crushlinux httpd-]# service httpd start
报错1:httpd: Could not reliably determine the server's fully qualified domain name, using ::1 for ServerName
解决:vim /usr/local/httpd/conf/httpd.conf
#ServerName www.example.com:
ServerName localhost:
在客户机中访问Web站点

httpd服务的访问控制
作用: 控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式:
客户机地址限制
用户授权限制
客户机地址限制
Order配置项,定义控制顺序 Order 用来定义访问控制顺序
Order deny,allow #先拒绝,后允许
Deny from all #拒绝所有
Order allow,deny #先允许,后拒绝
Allow from all #允许所有
用户地址限制
Allow from 地址 #允许某些地址访
Deny from 地址 #拒绝某些地址访问
地址类型:IP地址 网络地址 主机名 域名 all(表示所有) 多个地址之间使用地址限制实例
vim /usr/local/httpd/conf/httpd.conf
Order allow,deny
Allow ##只允许10.0网段访问网页
再次访问网页,权限拒绝。地址限制成功

用户授权限制
创建用户认证数据库文件
[root@crushlinux httpd-2.2.17]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.a a
New password:
Re-type new password:
Adding password for user a
.a 认证的用户数据文件(是隐藏文件) a 创建的用户
查看认证文件
[root@crushlinux httpd-]# cd /usr/local/httpd/conf/ [root@crushlinux conf]# cat .a a:urPHogTpjMASI
添加用户授权
编辑httpd主配置文件
在143行加入以下内容
AuthName "http web"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.a
require valid-user
再次访问网页,输入用户名和密码即可访问


注:如果报错:httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName(找不到完整域名)编辑主配置文件将#ServerName www.benet.com:80前的#号注释掉重启服务即可
构建虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
httpd支持的虚拟主机类型:
基于域名的虚拟主机
基于IP地址的虚拟主机
基于端口的虚拟主机
配置基于域名的虚拟用户
创建虚拟用户的网页根目录
[root@crushlinux /]# cd /usr/local/httpd/htdocs/ [root@crushlinux /]# mkdir benetcom [root@crushlinux /]# cd benetcom [root@crushlinux /]# echo "<h1>benet</h1>" > index.html [root@crushlinux /]# cd .. [root@crushlinux /]# mkdir accpcom [root@crushlinux /]# cd accptcom [root@crushlinux /]# echo "<h1>accp</h1>" > index.html
注:如果报错且无法实现则将
AuthName "http web"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.a
require valid-user
用#注释掉即可
修改虚拟用户的配置文件
[root@crushlinux /]# cd /usr/local/httpd/conf/extra/ vim httpd-vhosts.conf[root@crushlinux /]# vim httpd-vhosts.conf #更改配置文件,修改红色部分内容 NameVirtualHost 192.168.6.10 #更改19行 更改为web服务器(本机)的IP地址 <VirtualHost 192.168.6.10> DocumentRoot /usr/local/httpd/htdocs/benetcom/ ServerName www.benet.com ErrorLog "logs/benet-error_log" CustomLog "logs/benet-access_log" common </VirtualHost> <VirtualHost 192.168.6.10> DocumentRoot /usr/local/httpd/htdocs/accpcom/ ServerName www.accp.com ErrorLog "logs/accp-error_log" CustomLog "logs/accp-access_log" common </VirtualHost>
修改主配置文件
还原一下配置httpd的原有配置。
[root@crushlinux /]# vim /usr/local/httpd/conf/httpd.conf
#在最后一行添加以下内容,加载外部的虚拟用户的配置文件
Include conf/extra/httpd-vhosts.conf
重启服务
[root@crushlinux /]# service httpd restart
配置完虚拟主机后 重启报错:
[warn] NameVirtualHost *:80 has no VirtualHosts
解决:
vim httpd-vhosts.conf
将19行注释掉
#NameVirtualHost *:80
修改hosts文件
vim /etc/hosts #添加以下内容 192.168.6.10 www.benet.com 192.168.6.10 www.accp.com
测试虚拟用户配置
[root@crushlinux conf]# curl http://www.accp.com <h1>accp</h1> [root@crushlinux conf]# curl http://www.benet.com <h1>benet</h1>
显示以上结果为虚拟用户配置成功
配置基于IP的虚拟主机
给Eth1网卡添加IP
[root@crushlinux 桌面]# ifconfig eth1: 192.168.6.11

<VirtualHost 192.168.6.10> DocumentRoot /usr/local/httpd/htdocs/benetcom/ ServerName www.benet.com ErrorLog "logs/benet-error_log" CustomLog "logs/benet-access_log" common <VirtualHost 192.168.6.11> DocumentRoot /usr/local/httpd/htdocs/benetcom/ ServerName www.accp.com ErrorLog "logs/benet-error_log" CustomLog "logs/benet-access_log" common
验证结果:


配置基于端口的虚拟主机
<VirtualHost > …………… </VirtuealHost> <VirtualHost > ………………. </VirtuealHost> 在httpd.conf中加入以下配置 Include conf/extra/httpd-vhosts.conf Listen Listen
Web 网站服务的更多相关文章
- Web网络服务介绍
Web网络服务也叫WWW(World Wide Web),一般是指能够让用户通过浏览器访问到互联网中文档资源服务.目前提供WEB网络服务的程序有Apache .Nginx 和 IIS 等等,Web ...
- Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转
前言:最近这两天工作上,要实现一个功能,在好友阿聪的帮助下,算是比较好的解决了这个需求. B/S的Web网站,需要实现点击按钮时,根据客户端连接的显示屏(监视器)数量进行,单双屏跳转显示新页面. 由于 ...
- 【架构】浅谈web网站架构演变过程
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- (转)web网站架构演变
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- SharePoint咨询师之路:备份和恢复系列三 - 备份web和服务应用程序
本系列包括: 备份服务器场和配置 备份web和服务应用程序 备份内容数据库 备份网站集 备份自定义项 备份web应用程序和服务应用程序一样有三种方式:SharePoint管理中心网站.Windows ...
- Web网站的性能测试工具
随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生服务器 ...
- Web网站架构设计
目录 [隐藏/显示] 1 - Web负载均衡 1.1 - 使用商业硬件实现 1.2 - 使用开源软件 1.3 - 使用windows自带的互载均衡软件 1.4 - 总结2 - 静态网站 ...
- WEB网站常见受攻击方式及解决办法
一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.跨站脚本攻击(XSS) 跨站脚本攻击(XSS,Cross-site scripting)是 ...
- NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证
JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器.每一种解析器都是一个运行环境,不但允许J ...
随机推荐
- .NET MD5加密解密代码
MD5简介: 是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数).不管是MD2.MD4还是MD5,它们都需要获 ...
- 2015: [Usaco2010 Feb]Chocolate Giving
2015: [Usaco2010 Feb]Chocolate Giving Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 269 Solved: 1 ...
- linux 私房菜 CH6 Linux 的档案权限与目录配置
查看文件属性 ls -al 第一栏:类型与权限 d:目录: -:档案: l:链接档: b:可随机存取装置: c:一次性存取装置: 第二栏:有多少档名连结到此节点 第三栏:拥有者 第四栏:所属群组 第五 ...
- JavaScript 再认识(一):Function调用模式对this的影响
近来,学习了一下<JavaScript精粹>,读到了函数这章,理清了JavaScript中this在不同调用模式下的指向. 1.Function调用模式:Function是JavaScri ...
- 小故事理解TCP/IP连接时的三次握手
在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接,示意图如下: 下面通过一个小故事简单理解一下这三次握手的具体含义: 一天,快递员小客(客户端)准备去小服(服务器)家去送快递(准备与服务 ...
- mybatis 使用@Select 注解,因为字符编码不一致导致mybatis 报错
使用 mybatis 的@Select 注解, @Select({ "<script>select " + ALL_COLUMNS + " from &quo ...
- Boost库安装(实测vs2012)
1.下载boost库,我这边下载的是目前最新的:boost_1_63_0.7z 2.解压到本地目录:我这边是:D:\Program Files 3.cmd窗口,以管理员权限打开,执行D:\Progra ...
- 关于MFC中InvalidateRect()的思考与疑问
先看一段代码: void CFeatureEdit_LinePolyDLG::DrawRectAll(int type){ CClientDC dc(this); //底框画笔 CPen penRec ...
- java学习笔记 --- 集合
1.定义:集合是一种容器,专门用来存储对象 数组和集合的区别? A:长度区别 数组的长度固定 集合长度可变 B:内容不同 数组存储的是同一种类型的元素 而集合可以存储不同类型的元素 C:元 ...
- 深入理解ajax系列第九篇——jQuery中的ajax
前面的话 jQuery提供了一些日常开发中需要的快捷操作,例如load.ajax.get和post等,使用jQuery开发ajax将变得极其简单.这样开发人员就可以将程序开发集中在业务和用户体验上,而 ...