天天看点

5Linux网络服务之Web网站服务

作者:IT医生

Apache网站服务基础

一 Apache简介

“Apache HTTP Server”是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,在web服务器领域中长期保持着超过半数的份额。可以运行在Linux、Unix、Windows等多种操作系统平台中。

1 主要特点

开放源代码、跨平台应用

支持多种网页编程语言

模块化设计 、运行稳定、良好的安全性

2 软件版本

1.X

目前最高版本是1.3,运行稳定

向下兼容性较好,但缺乏一些较新的功能

2.X

目前主要包括2.0和2.2两个版本

具有更多的功能特性

与1.X相比,配置管理风格存在较大差异

3 编译安装的优点

具有较大的自由度,功能可定制

可及时获得最新的软件版本

普遍适用于大多数Linux版本,便于移植使用

4 获得Apache服务器的源码包

参考地址:http://httpd.apache.org/download.cgi

二 安装httpd服务器(源码安装)

1 准备工作

1 卸载httpd及相关依赖包

:rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps

2 源码编译及安装

1)挂载安装盘

:mount /dev/cdrom /media

  1. 解包

:tar zxf /media/chapter05/httpd-2.2.17.tar.gz -C /usr/src

:cd /usr/src/httpd-2.2.17

  1. 配置

:./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

如果配置报错,则升级arp相关依赖包

  1. 编译

:make

  1. 安装

:make install

  1. 确认安装结果

:ls /usr/local/httpd/ //不是空目录即可

  1. 优化执行路径

ln -s /usr/local/httpd/bin/* /usr/local/bin/ 默认搜索路径

8)添加httpd系统服务

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd //复制apachectl脚本为httpd

vi /etc/init.d/httpd //添加chkconfig识别配置

#!/bin/bash

# chkconfig: 35 85 15 //识别配置,级别3、5中启动,顺序为85、15

# description: Startup script for the Apache HTTP Server //描述信息

:chkconfig --add httpd //添加为系统服务

:chkconfig --list httpd //查看自启动状态

9)启动服务

:/usr/local/httpd/bin/apachectl start

三 httpd服务的目录结构

主要目录和文件:

服务目录:/usr/local/httpd/

主配置文件:/usr/local/httpd/conf/httpd.conf

网页目录:/usr/local/httpd/htdocs/

服务脚本:/usr/local/httpd/bin/apachectl

执行程序:/usr/local/httpd/bin/httpd

访问日志: /usr/local/httpd/log/access_log

错误日志: /usr/local/httpd/log/error_log

四 httpd.conf配置文件

:vim /usr/local/httpd/conf/httpd.conf

常用的全局配置参数

ServerRoot:服务目录

ServerAdmin:管理员邮箱

User:运行服务的用户身份

Group:运行服务的组身份

ServerName:网站服务器的域名

DocumentRoot:网页文档的根目录

Listen:监听的IP地址、端口号

PidFile:保存httpd进程PID号的文件

DirectoryIndex:默认的索引页文件

ErrorLog:错误日志文件的位置

CustomLog:访问日志文件的位置

LogLevel:记录日志的级别,默认为warn

Timeout:网络连接超时,默认为300秒

KeepAlive:是否保持连接,可选On或Off

MaxKeepAliveRequests:每次连接最多请求文件数

KeepAliveTimeout:保持连接状态时的超时时间

Include:需要包含进来的其他配置文件

区域配置项

<Directory “网页地址 />

Options FollowSymLinks //允许使用符号链接

AllowOverride None //不允许隐含控制文件中的覆盖配置

Order deny,allow //访问控制策略应用顺序(允许所有没有禁止的)

Deny from all //禁止所有

</Directory>

五 重启服务进行测试

:/usr/local/httpd/bin/apachectl restart //重启

直接在客户机上测试,有默认站点

六 构建虚拟主机

虚拟Web主机

在同一台服务器中运行多个Web站点,其中每一个站点不独立占用一台真正的计算机

httpd支持的虚拟主机类型

基于域名的虚拟主机

基于IP地址的虚拟主机

基于端口的虚拟主机

七 实验

作者:马向军 时间:2013-05-16

实验目的:搭建web服务,完成实验要求

实验要求:

1 搭建web服务,并为网站提供DNS解析

2 限制指定ip的客户端访问站点

3 只允许公司内部员工访问站点

4 构建基于域名的虚拟主机(两个站点对应两个域名一个ip)

5 构建基于ip地址的虚拟主机(两个ip对应两个站点)

6 构建基于端口的虚拟主机(一个站点一个域名两个端口对应不同网页)

实验环境:如图所示

5Linux网络服务之Web网站服务

实验步骤:

要求1(使用域名访问站点)

1 安装DNS服务并配置

:vim /var/named/chroot/etc/named.conf //创建正向区域

options {

directory "/var/named";

};

zone "benet.com." IN {

type master;

file "benet.com.zone";

};

:vim /var/named/chroot/var/named/benet.com.zone //添加主机记录

$TTL 86400

@ SOA benet.com. admin.benet.com. (

2013030201

3H

15M

1W

1D

)

@ IN NS mazi.benet.com.

IN MX 10 mail.benet.com.

www IN A 192.168.1.100

2 安装web服务并配置

:vim /usr/local/httpd/conf/httpd.conf

ServerName mazi.benet.com:80 配置网站名称

3 重启服务

:service named start 启动dns服务

:/usr/local/httpd/bin/apachectl start 启动web服务

要求2(客户机地址限制)

:vim /usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs"> //访问控制的网页

……

Order deny,allow //允许所有未经阻止的

deny from 192.168.1.10 //阻止此ip访问

</Directory>

:/usr/local/httpd/bin/apachectl start //重启服务

要求3(用户授权限制)

1 创建用户认证数据库

:cd /usr/local/httpd/

:bin/htpasswd -c /usr/local/httpd/conf/.awspwd u1 新建u1用户和数据库

New password: //密码

Re-type new password: //再次输入密码

Adding password for user u1

:bin/htpasswd /usr/local/httpd/conf/.awspwd u2 //创建新用户

: cat /usr/local/httpd/conf/.awspwd //确认创建的用户

  1. 添加用户授权配置

:vim /usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs"> //要用户认证的网页

AuthName "nihao" //登录对话框提示信息

AuthType Basic //认证类型为基本认证

AuthUserFile /usr/local/httpd/conf/.awspwd //密码文件路径

require valid-user //只有认证用户才能访问

</Directory>

地址限制和用户授权限制可以同时针对一个站点生效

要求4(构建基于域名的虚拟主机)

  1. 为虚拟主机提供域名解析(指向相同ip)

vim /var/named/chroot/etc/named.conf //创建两个正向区域

options {

directory "/var/named";

};

zone "benet.com." IN {

type master;

file "benet.com.zone";

};

zone "accp.com." IN {

type master;

file "accp.com.zone";

};

:vim /var/named/chroot/var/named/benet.com.zone //创建区域文件添加主机记录

$TTL 86400

@ SOA benet.com. admin.benet.com. (

2013030201

3H

15M

1W

1D

)

@ IN NS mazi.benet.com.

www IN A 192.168.1.100

ftp IN CNAME www

: vim /var/named/chroot/var/named/accp.com.zone //创建区域文件添加主机记录

$TTL 86400

@ SOA accp.com. admin.accp.com. (

2013030201

3H

15M

1W

1D

)

@ IN NS mazi.benet.com.

www IN A 192.168.1.100

ftp IN CNAME www

:service named restart //重启DNS服务

2.为虚拟主机准备网页文档

:mkdir -p /var/www/html/benet 创建网页站点目录

:mkdir -p /var/www/html/accp

:echo "<h1>benet.com</h1>" > /var/www/html/benet/index.html 创建网页文档

:echo "<h1>accp.com</h1>" > /var/www/html/accp/index.html

  1. 添加虚拟主机配置(相同ip相同端口)

:vim /usr/local/httpd/conf/extra/httpd-vhosts.conf //创建独立的配置文件

<Directory "/var/www/hrml"> //设置目录访问权限

Order allow,deny

Allow from all //允许所有

</Directory>

NameVirtualHost 192.168.1.100:80 //设置监听地址

<VirtualHost 192.168.1.100:80> //设置benet虚拟站点区域

DocumentRoot "/var/www/html/benet" //虚拟站点地址

ServerName www.benet.com //域名

ErrorLog "logs/dummy-host.example.com-error_log" //错误日志目录

CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

<VirtualHost 192.168.1.100:80>

DocumentRoot "/var/www/html/accp" //设置accp虚拟站点区域

ServerName www.accp.com

ErrorLog "logs/dummy-host2.example.com-error_log"

CustomLog "logs/dummy-host2.example.com-access_log" common

</VirtualHost>

3 加载独立的配置文件

:vim /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf //加载独立的配置文件

:/usr/local/httpd/bin/apachectl restart //重启服务

要求5(构建基于ip的虚拟主机)

1 给服务器再配置一个ip模拟两个ip

:ifconfig etho:1 192.168.1.101 //配置ip

2 添加主机记录(指向不同ip)

:vim /var/named/chroot/var/named/benet.com.zone

.....................

@ IN NS mazi.benet.com.

www IN A 192.168.1.100

ftp IN CNAME www

:vim /var/named/chroot/var/named/accp.com.zone

.....................

@ IN NS mazi.benet.com.

www IN A 192.168.1.101

ftp IN CNAME www

3 创建独立的配置文件(只需修改不同ip即可)

:vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

<Directory "/var/www/hrml"> //设置目录访问权限

Order allow,deny

Allow from all //允许所有

</Directory>

<VirtualHost 192.168.1.100:80> //设置benet虚拟站点区域

DocumentRoot "/var/www/html/benet" //虚拟站点地址

ServerName www.benet.com //域名

ErrorLog "logs/dummy-host.example.com-error_log" //错误日志目录

CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

<VirtualHost 192.168.1.101:80>

DocumentRoot "/var/www/html/accp" //设置accp虚拟站点区域

ServerName www.accp.com

ErrorLog "logs/dummy-host2.example.com-error_log"

CustomLog "logs/dummy-host2.example.com-access_log" common

</VirtualHost>

4 加载独立的配置文件

:vim /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf //加载独立的配置文件

:/usr/local/httpd/bin/apachectl restart //重启服务

:service named restart //重启服务

要求6(构建基于端口的虚拟主机)

1添加主机记录(指向相同ip)

:vim /var/named/chroot/var/named/benet.com.zone.

....................

@ IN NS mazi.benet.com.

www IN A 192.168.1.100

:vim /var/named/chroot/var/named/accp.com.zone

.....................

@ IN NS mazi.benet.com.

www IN A 192.168.1.100

2 创建独立的配置文件(只需修改不同端口即可)

:vim /usr/local/httpd/conf/extra/httpd-vhosts.conf //创建独立的配置文件

<Directory "/var/www/hrml"> //设置目录访问权限

Order allow,deny

Allow from all //允许所有

</Directory>

<VirtualHost 192.168.1.100:80> //设置benet虚拟站点区域

DocumentRoot "/var/www/html/benet" //虚拟站点地址

ServerName www.benet.com //域名

ErrorLog "logs/dummy-host.example.com-error_log" //错误日志目录

CustomLog "logs/dummy-host.example.com-access_log" common

</VirtualHost>

<VirtualHost 192.168.1.00:808>

DocumentRoot "/var/www/html/accp" //设置accp虚拟站点区域

ServerName www.accp.com

ErrorLog "logs/dummy-host2.example.com-error_log"

CustomLog "logs/dummy-host2.example.com-access_log" common

</VirtualHost>

3 加载独立配置文件并设置监听端口

:vim /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf

Listen 80

Listen 88

:/usr/local/httpd/bin/apachectl restart //重启服务

:service named restart //重启服务

继续阅读