实验名称:
Linux下
www服务器搭建
姓名:王新磊
学号:20074668
班级:20##级网络四班
实验内容:... 3
1 :安装Apache软件... 3
2 :配置www服务器... 3
3 :建立个人web站点... 3
4 :建立虚拟主机... 3
5 :linux下dns架设... 3
6 :apache+mysql+php. 3
实验原理:... 3
1 :WWW 原理... 3
2 :DNS原理... 4
3 : DHCP原理... 7
4 : FTP原理... 8
实验步骤和操作方法:... 9
1. web服务基本配置... 9
2. DNS服务配置... 10
3. DHCP 服务配置... 12
4. FTP服务配置... 12
5. Apache+mysql+php. 13
实验结果和分析:... 16
1. web服务器... 16
2. DNS服务器... 18
3. dhcp服务器... 19
4. ftp服务器... 20
讨论心得:... 21
实验内容:
Linux下www服务器架设(自己主机当服务器,访问本机)
1 :安装Apache软件
2 :配置www服务器
3 :建立个人web站点
4 :建立虚拟主机
5 :linux下dns架设
6 :apache+mysql+php
实验原理:
1 :WWW 原理
WWW 是 World Wide Web 的缩写,其中, Web 有广播网的意思存在,所以,简单的说,WWW就是全球信息网,可以结合文字、图形、影像及声音等多媒体,并透过超级链接 ( HyperText ) 的方式,将信息透过 Internet 传递到世界各处!那 WWW 的数据是如何传递的呢? 如果你常上网浏览的话 ( 不论是使用 Mosilla 、IE 或是 Netscape ),你应该会知道,台湾有个蛮有名气的入口网站:奇摩雅虎站 ( tw.yahoo.com ),所以你只要在网址列上面输入『 http://tw.yahoo.com 』就可以浏览到奇摩雅虎的网页信息!这个『 http://tw.yahoo.com 』就是所谓的 URL ( Uniform Resource Locator ) ,其中 tw.yahoo.com 就是所谓的主机名称,亦即是我们前面刚刚提过的 DNS 里头的 FQDN ( Fully Qualified Domain Name ) ,即是主机名称加上领域名称所得的一个独一无二的 Internet 上面之名字啦!由于计算机在网络里面仅认识 IP 而已,所以,奇摩雅虎站的真实 IP 就是透过 DNS 解析 tw.yahoo.com 而找到这部计算机,然后经过 WWW 的协议功能将数据传到你的眼前来!那么有哪些格式的 URL 呢?呵呵!整个来说,网址列可以输入这些: <协定>://<主机地址>[:port]/<目录资源>
o协定:包括 http, ftp, news, gopher, telnet 这几种常见的方法! 其中呢,http 是利用『主机的 http port ,通常为 80 』,至于 ftp 这个方法则是利用『主机的 ftp port ,通常为 21 这个埠口』,请注意喔,我们使用的 80 与 21 都是主机所提供的服务喔!而不是我们 client 端的 port,所以,使用 http 与 ftp 连上同一部计算机,所取得的信息并不见得会一样,因为服务本身就不同嘛!一个是 WWW 一个是 ftp 怎么会相同。此外,如果你没有指定协议的话,那么预设的协议就需要看客户端 ( Client ) 使用的那个联机程序的预设协议了!举个例子来说,如果你是使用 Netscape 的话,呵呵!那么预设的协议就是 http ,因此,你在网址列输入 tw.yahoo.com 时, Netscape 立刻就会以 http 来连接出去!
o 主机地址:刚刚才提过的 FQDN 应该还没有忘记吧!由于计算机仅认识 IP ,所以,如果你输入 IP 的话,同样的可以联机喔!但是,如果是输入主机名称 ( domain name ) 的话,那么你就必需要让该主机名称可以经由转译器得到对应的 IP 喔!转译器是什么?就是 /etc/hosts 或者是 /etc/resolv.conf 里面的设定啊!当然,对外提供正常的 WWW 服务时,你的 host name 就必需要让大家可以转译到 IP ,就需要去申请一个合法的领域名称!
o目录资源:其实这个是 Uniform Resource Indicator, URI 的意思,如果你要去的网站网页在主网页的目录底下,那么你可以直接输入目录与网页的名称,就可以直接取得那个页面的数据!此外,如果你只输入网址而已呢?并没有输入网页名称呢?那么在 Server 端将会自动的判断 ( 看 Server 自己的设定而定 ) 该目录下是否有设定中引用的网页名称!这个在底下我们会再次的提到!
oport:一般而言,各个协议都有其独特的使用的 port ,例如众所皆知的 http 使用的是 80 而 ftp 使用的是 21 这些个 port,所以,当你要连接到某个网站时,输入 http://that.host.name 就会主动的利用 80 那个 port 来尝试连接到对方主机!但是如果你不想要使用该 port 呢?举个例子来说,假如你的网站使用的是 8080 这个 port 来进行 WWW 的服务,果真如此的话,那么除非你有进行防火墙内的 port 对应,否则直接在网址列输入http://www.abc.name 结果将无法连接到你的 WWW 服务器,因为他会主动的连接到 80 那个 port !所以,我们就要告诉浏览器,要向 Server 要求服务的是哪一个 port ,因此,你就要将他写成: http://www.abc.name:80!才可以连接到对方的 80 那个 port!
2 :DNS原理
DNS 的全名是『 Domain name system 』, 中文译名为『领域名称系统』, 这个咚咚的用途是什么哇!为什么我们的计算机或者是 Internet 一定需要他 ( 尤其是以 WWW 的方式来上网时 ) ?呵呵! 他最大的用途就是『造福懒惰与记忆性薄弱的人类~』 哈哈!没错!为什么说他是造福人类呢?且听我娓娓道来:
DNS 的历史:
早期(大约20~30年前)的计算机可是贵重物资,一般人是可望而不可及的,因为计算机数量太少, 所以使用 /etc/hosts 来记忆这些 IP 与名称的对应还尚可应付。但是在现代, Internet 上面这么多主机,并且常常会突然的『噗通』又多出一部主机来服务, 那么我们总不能一个一个的将他输入在 /etc/hosts 里面吧!?对呀!真不聪明! 所以后来的这个时候就有所谓的『领域名称解析系统, DNS』出现啦! DNS 利用类似树状目录的型态,将主机名称的管理分配在不同层级的 DNS 主机当中,经由分层管理,所以每一部主机的记忆的信息就不会很多, 而且异动上面也相当的容易修改!那么这个 DNS 的功能您知道了吗?对啦!就是『将计算机主机的名称转译成 IP 』就是了!当然,他的额外功能还很多!总之,他的最大功能就是『 让有意义的,人类较容易记忆的主机名称(英文字母),转译成为计算机所熟悉的 IP 地址! 』 举个例子来说好了,奇摩雅虎的网站的 IP 是 202.1.237.21 ,所以您可以在您的浏览器上面输入『 http://202.1.237.21 』来连上奇摩雅虎! 不过,我想没有几个人能够将这个 IP 背的起来的吧?!反之,我们却都知道奇摩雅虎的网址为 tw.yahoo.com ,那么您只要输入『 http://tw.yahoo.com 』就可以连上 Internet 啦!很容易记忆吧!
DNS 的查询过程:
接下来我们要谈一谈,那么 DNS 的 (1)架构是怎样? (2)查询原理是怎样?总是要先知道架构才能知道如何查询的!所以底下我们先来介绍一下整体的架构。
DNS 的架构:
上面就是一个简单的 DNS 阶层架构,最上方一定是 . (小数点) 这个 root 的 DNS 主机,他底下管理的就只有 com, edu, gov, mil, org 与以国家为分类的第二层的主机名称了!例如台湾地区最上层的领域名称是以 .tw 为开头,管理这个领域名称的这部机器的 IP 是在台湾,但是他的记录则是记录在 . (root)那部机器里面的!还有其它的国家的最上层如 .cn 指的是大陆, .de 指的是德国一样!那么每个国家之下记录的主要的下层有哪些领域呢? 主要就是有这六大类:
DNS 的搜寻流程:
刚刚说过 DNS 是以类似『树状目录』 的型态来进行名称的管理的!所以每一部 DNS 主机都『仅管理下一层 DNS 主机的名称转译』而已, 至于下层的下层,则『授权』给下层的 DNS 主机来管理啦!这样说好像很绕口,好吧!我们就以下图来说一说原理:
首先,当您在浏览器的网址列输入 http://aerosol.ev.ncku.edu.tw 时,您的计算机就会依据相关设定( 在 Linux 底下就是利用 /etc/resolv.conf 这个档案 ) 所提供的 DNS 的 IP 去进行联机查询,好了,由于目前最常见的 DNS 主机就属 Hinet 的 168.95.1.1 这个 DNS 了,所以我们就拿他来做例子吧!嗯!这个时候, hinet 的这部主机会这样工作:
1. 先查看本身有没有纪录: 刚刚说过啦,由于 DNS 是层阶式的架构,任何一部 DNS 都仅记录下一层里面的主机名称对应的 IP 而已,由于 hinet 并非学术网络里面的主机,所以自然也就没有办法直接提供给 client 端关于 aerosol.ev.ncku.edu.tw 这部机器的 IP 了,所以啦,一般而言,这个时候 168.95.1.1 就会向最顶层,也就是 . (root) 的主机查询 .tw 这部机器的地址;
2. 向最顶层 ( root )查询: 由于 168.95.1.1 没有纪录我们主机的 IP ,这个时候他就会向『最顶层』. (root) 这部主机来查询 . (root) 的下一层,也就是 .tw 这部机器的数据了!这个时候, . (root) 就会告诉 168.95.1.1 说『嘿!您要查 .tw 这个网域的管理者呀!?喝!我这里有 .tw 这个网域的管理的主机之 IP 信息,您可以直接去找他!』;
3. 向第二层查询: 168.95.1.1 接着又到 .tw 去查询,而该部机器管理的又仅有 .edu.tw, .com.tw, gov.tw... 那几部主机,经过比对后发现我们要的是 .edu.tw 的网域,所以这个时候 .tw 又告诉 168.95.1.1 说:『您要去管理 .edu.tw 这个网域的主机那里查询,我有他的 IP !
4. 向下层持续查询: 好了,一步一步下来, .edu.tw 可以查到管理 .ncku.edu.tw 的主机 IP ; .ncku.edu.tw 可以查到管理 .ev.ncku.edu.tw 的主机 IP ,而最后我们 aerosol.ev.ncku.edu.tw 就可在管理 .ev.ncku.edu.tw 网域的那部主机的设定纪录当中查询到啦!
5. 记录暂存内存: 查到了 IP 之后,这部 168.95.1.1 的 DNS 机器总不会在下次有人查询 aerosol.ev.ncku.edu.tw 的时候再跑一次这样的流程吧!粉远粉累的吶!而且也很耗系统的资源与网络的频宽,所以呢, 168.95.1.1 这个 DNS 很聪明的会先记录一份 aerosol.ev.ncku.edu.tw 对应 IP 的信息在自己的暂存内存当中,以方便下一次又有人对同一个主机名称的要求之查询!最后则将结果回报给 client 端!当然啦,那个记忆在 cache 当中的数据,其实是有时间性的,当过了 DNS 设定记忆的时间(通常可能是 24 小时),那么该记录就会被释放喔!
3 : DHCP原理
1. DHCP请求IP地址的过程
发现阶段,即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCPDISCOVER包,只有DHCP服务器才会响应。
l 提供阶段,即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCPDISCOVER报文后,从IP地址池中选择一个尚未分配的IP地址分配给客户端,向该客户端发送包含租借的IP地址和其他配置信息的DHCPOFFER包。
选择阶段,即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发送DHCPOFFER包,客户端从中随机挑选,然后以广播形式向各DHCP服务器回应DHCPREQUEST包,宣告使用它挑中的DHCP服务器提供的地址,并正式请求该DHCP服务器分配地址。其它所有发送DHCPOFFER包的DHCP服务器接收到该数据包后,将释放已经OFFER(预分配)给客户端的IP地址。
如果发送给DHCP客户端的DHCPOFFER包中包含无效的配置参数,客户端会向服务器发送DHCPCLINE包拒绝接受已经分配的配置信息。
确认阶段,即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCPREQUEST包后,便向客户端发送包含它所提供的IP地址及其他配置信息的DHCPACK确认包。然后,DHCP客户端将接收并使用IP地址及其他TCP/IP配置参数。
2. DHCP客户端续租IP地址的过程
DHCP服务器分配给客户端的动态IP地址通常有一定的租借期限,期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址,需要更新IP租约。实际使用中,在IP地址租约期限达到一半时,DHCP客户端会自动向DHCP服务器发送DHCPREQUEST包,以完成IP租约的更新。如果此IP地址有效,则DHCP服务器回应DHCPACK包,通知DHCP客户端已经获得新IP租约。
如果DHCP客户端续租地址时发送的DHCPREQUEST包中的IP地址与DHCP服务器当前分配给它的IP地址(仍在租期内)不一致,DHCP服务器将发送DHCPNAK消息给DHCP客户端。
3. DHCP客户端释放IP地址的过程
DHCP客户端已从DHCP服务器获得地址,并在租期内正常使用,如果该DHCP客户端不想再使用该地址,则需主动向DHCP服务器发送DHCPRELEASE包,以释放该地址,同时将其IP地址设为0.0.0.0。
4 : FTP原理
FTP Transfer Protocol 件传输协议的缩写,在RFC 959中具体说明。
FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道。
控制通道:控制通道是和FTP服务器进行沟通的通道,连接FTP,发送FTP指令都是通过控制通道来完成的。
数据通道:数据通道是和FTP服务器进行文件传输或者列表的通道。
FTP协议中,控制连接均有客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式
PORT模式(主动方式)
FTP 客户端首先和FTP Server的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。 PORT命令包含了客户端用什么端口(一个大于1024的端口)接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。 FTP server必须和客户端建立一个新的连接用来传送数据。
PASV模式(被动方式)
在建立控制通道的时候和PORT模式类似,当客户端通过这个通道发送PASV 命令的时候,FTP server打开一个位于1024和5000之间的随机端口并且通知客户端在这个端口上传送数据的请求,然后FTP server 将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接传送数据。
如果从C/S模型这个角度来说,PORT对于服务器来说是OUTBOUND,而PASV模式对于服务器是INBOUND,这一点请特别注意,尤其是在使用防火墙的企业里,这一点非常关键,如果设置错了,那么客户将无法连接。
实验步骤和操作方法:
1. web服务基本配置
1. 使用setup菜单完成TCP/IP网络配置;
(1)在命令行运行setup,选择“Network Configuration”
(2)选择“eth0(eth0)……”
(3)取消“Use DHCP”
(4)配置IP地址和子网掩码为192.168..1.1/255.255.255.0
(5)一层层退出
(6)运行ifdown eth0禁用以太网卡
(7)运行ifup eth0启用以太网卡并重新读取配置。
(8)使用ifconfig检查eth0网卡的IP地址配置。
2. Apache服务器基本配置
查询Apache服务器是否安装:rpm -q httpd
启动Apache服务器:service httpd start
设置Apache为自动启动:chkconfig httpd on
编辑Apache主配置文件:vi usr/local/apache2/conf/httpd.conf
(1)ServerRoot "/usr/httpd" :这是Apache的工作目录,不需修改
(2)KeepAlive On :修改为On,使得一次TCP连接可以传输多个文件
(3)Listen 192.168.11:80 :修改HTTP服务监听IP地址和端口号
(4)Include conf.d/*.conf :/etc/httpd/conf.d/*.conf都是Apache的附加配置文件,现在不需修改
(5)ServerAdmin root@localhost :这是管理员的邮箱,可以修改为自己的邮箱
(6)#ServerName www.abc.com:80 :设置服务器名称,如果没有配置DNS解析,可以设置为IP地址和端口号的组合。把这一行修改为:
ServerName 192.168.1.1:80
(7)DocumentRoot "/var/www/html" :这是网站文档主目录,建议不要修改
(8)
<Directory "/var/www/html"> :设置主目录的属性
Options Indexes FollowSymLinks :允许目录浏览,允许用符号链接建立虚拟目录。最好不允许目录浏览权限,即修改为:Options FollowSymLinks
AllowOverride None :不允许“.htaccess”文件,不需修改
Order allow,deny :访问策略:如果没有明确允许,就拒绝访问
Allow from all :允许所有的访问,这两行都不需修改
</Directory>
(9)DirectoryIndex index.html index.html.var :设置默认文档,可不修改
(10)AddDefaultCharset UTF-8 :设置默认字符集,对于简体中文网页,需要修改为:AddDefaultCharset GB2312
(11)cd /var/www/html
(12)vi index.html :添加主页文件,可随意输入内容
(13)service httpd restart :重新启动Apache服务器
(14)从XP访问http://192.168.1.1:8080/,看是否看到刚才编辑的主页文件
(15)重新编辑主配置文件,将监听端口改回80:Listen 192.168.1.1:80
(16)service httpd restart :重新启动Apache服务器
(17)从XP访问http://192.168.202.5:80/,看是否看到刚才编辑的主页文件
2. DNS服务配置
1. 使用setup菜单完成TCP/IP网络配置;
(1)在命令行运行setup,选择“Network Configuration”
(2)选择“eth0(eth0)……”
(3)取消“Use DHCP”
(4)配置IP地址和子网掩码为192.168.1.1/255.255.255.0
(5)一层层退出
(6)运行ifdown eth0禁用以太网卡
(7)运行ifup eth0启用以太网卡并重新读取配置。
(8)使用ifconfig检查eth0网卡的IP地址配置。
2. 配置DNS主配置文件
(1)rpm -q bind bind-chroot
(2)cd /var/named/chroot/etc
(3)vi named.conf
(4)添加以下配置:(定义根域为hint类型,定义正向解析区域“abc.com”和反向解析区域“1.168.192.in-addr.arpa”,均为master类型,即主DNS服务器。)
(见附件named.conf)
3. 配置正向解析区域“abc.com”数据文件
(1)cd /var/named/chroot/var/named
(2)vi abc.com.zone
(3)添加以下配置:
(见附件linux.org.zone)
4. 配置反向解析区域“1.168.192.in-addr.arpa”数据文件
(1)cd /var/named/chroot/var/named
(2)vi 1.168.192.in-addr.arpa.zone
(3)添加以下配置:
(见附件1.168.192.in-addr.arpa.zone)
5. 启动DNS服务器
service named start
chkconfig named on
6. 验证DNS服务器
在客户端XP运行cmd --> nslookup
验证DNS配置
附件1:named.conf
options {
directory "/var/named";
};
zone "." {
type hint;
file "named.ca";
};
zone "abc.com" {
type master;
file "abc.com.zone";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192 in-addr.arpa.zone ";
};
附件2:abc.com.zone
$TTL 86400
@ IN SOA dns.abc.com . root.abc.com. (
2009052200 ;serial
28800 ;refresh
14400 ;retry
720000 ;expire
86400 ;ttl
)
@ IN NS dns.abc.com.
dns IN A 192.168.1.1
www IN A 192.168.1.1
附件3:1.168.192.in-addr.arpa.zone
$TTL 86400
@ IN SOA dns.abc.com . root.abc.com. (
2009052200 ;serial
28800 ;refresh
14400 ;retry
720000 ;expire
86400 ;ttl
)
@ IN NS dns.abc.com.
1 IN PTR www.abc.com.
1 IN PTR mail.abc.com.
3. DHCP 服务配置
1. 使用setup菜单完成TCP/IP网络配置;
(1)在命令行运行setup,选择“Network Configuration”
(2)选择“eth0(eth0)……”
(3)取消“Use DHCP”
(4)配置IP地址和子网掩码为192.168.1.1./255.255.255.0(5)一层层退出
(6)运行ifdown eth0禁用以太网卡
(7)运行ifup eth0启用以太网卡并重新读取配置。
(8)使用ifconfig检查eth0网卡的IP地址配置。
2. 禁用vmware的DHCP服务
(1)在vmware程序菜单中,选择Edit – Virtual Network Editor
(2)选择DHCP,点下面的stop,应用。
3. 配置Linux DHCP服务器
(1)rpm -q dhcp 查询DHCP软件包是否安装
(2)cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf
(3)vi /etc/dhcpd.conf
(4)做以下修改:
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1,219.146.0.130;
range dynamic-bootp 192.168.1.100 192.168.1.200;
(5)service dhcpd start
(6)chkconfig dhcpd on
4. 配置DHCP客户端验证
运行-------àcmd---------àipconfig
就可以看到刚才的配置。
4. FTP服务配置
1. 使用setup菜单完成TCP/IP网络配置;
(1)在命令行运行setup,选择“Network Configuration”
(2)选择“eth0(eth0)……”
(3)取消“Use DHCP”
(4)配置IP地址和子网掩码为192.168.202.5/255.255.255.0,网关为192.168.202.1
(5)一层层退出
(6)运行ifdown eth0禁用以太网卡
(7)运行ifup eth0启用以太网卡并重新读取配置。
(8)使用ifconfig检查eth0网卡的IP地址配置。
2. vsftpd服务器的基本配置
(1)rpm -q vsftpd 察看vsftpd软件包是否安装
(2)service vsftpd start 启动vsftpd服务器
(3)chkconfig vsftpd on 将vsftpd服务设置为自动启动
(4)从XP客户端访问“ftp://192.168.202.5”
(5)察看vsftpd服务器的配置文件的缺省配置:vi /etc/vsftpd/vsftpd.conf
1)anonymous_enable=YES 允许匿名用户登录
2)local_enable=YES 允许本地用户登录
3)write_enable=YES 允许写入(上传文件、创建目录)(包含所有用户)
4)#anon_upload_enable=YES 允许匿名用户上传文件,但已被注释掉
5)#anon_mkdir_enable=YES 允许匿名用户创建目录,但已被注释掉
3. 验证:
客户端输入ftp://192.168.1.1,就可以登录刚才配置的ftp服务器。
5. Apache+mysql+php
一、先安装最简单的mysql
1.mysql的官方网站建议在目前的版本中,最好直接以它们编译好的mysql的binary版本来进行安装.
把下载来的tar包都放在/usr/local/src(这样可以方便集中管理)
# groupadd mysql
# useradd -g mysql mysql #创建mysql组和mysql用户,这很重要。
# cd /usr/local
# tar -zxvf /usr/local/src/mysql-3.23.57-pc-linux-i686.tar.gz
# ln -s mysql-3.23.57-pc-linux-i686 mysql
# cd mysql
# scripts/mysql_install_db
#这个步骤会在/usr/local/mysql/data里建立好mysql数据库
# chown -R root
# chown -R mysql data
# chgrp -R mysql
#设置一些目录的权限,一定要的
# bin/safe_mysqld --user=mysql &
starting mysqld daemon with databases from /usr/local/mysql/data
#这个时候mysql会建立一个/tmp/mysql.sock,可以先等会儿不要急着按enter。这个socket file是动态生成的,不可以被移动,复制,没它mysql是启动不了的。
2. # netstat -tl | grep mysql
tcp 0 0 *:mysql *:* LISTEN
#这样就搞定了,mysql已经在监听了。
3.开机后立即启动:
# vi /etc/rc.d/rc.local
#将下面这一行加入到最后一行
cd /usr/local/mysql; /usr/local/mysql/bin/safe_mysqld --user=mysql &
#记得加上cd /usr/local/mysql;并在改句后面加个空格,不然会导致无法自动在开机的时候启动。
4.高级设置:
由于mysql放置的位置在/usr/local/mysql中,而这个目录不在PATH当中,且man page也不在MANPATH里面,所以要手动加入。
# vi /etc/profile
找到export PATH...那一行,加入这么句:
PATH="$PATH":/usr/local/mysql/bin
#记得要logout,这个命令在下次开机也可以用了。
# vi /etc/man.config
#可以在这个文件的任何地方加入这么一行:
MANPATH /usr/local/mysql/man
5.建立mysql的root帐号密码:
# /usr/local/mysql/bin/mysqladmin -u root password 'yourpassword'
#为了安全
二、安装需要编译的新版apache2.*
1.因为目前有所谓的这个动态函数库,因此,在安装apache时,请特别要向apache声明php模块使用动态函数库的模式。
# cd /usr/local/src
# tar -zxvf httpd-2.0.55.tar.gz
# cd httpd-2.0.55
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
#--prefix=/安装的路径
--enable-so 这是在宣告使用动态函数库,特别重要!
--enable-rewrite 这是预防用的,先设置一下。
2.开始编译与安装:
#make; make install
#应该不会有什么问题了
3.简单的修改:
# vi /usr/local/apache2/conf/httpd.conf
#找到这2行:
User nobody
Group #-1
#查一下你的/etc/passwd与/etc/group是否有nobody存在,没有的话自行加。
User nobody
Group nobody
#存储后退出。
4.确定启动状态:
# /usr/local/apache2/bin/apachectl start
# netstat -utl
tcp 0 0 *:http *:* LISTEN
同样把/usr/local/apache2/bin/apachectl start放在/etc/rc.d/rc.local内,开机时启动apache。
5.高级设置:
跟mysql的一样的,在/etc/profile将安装mysql新增的那行该为:
PATH="$PATH":/usr/local/mysql/bin:/usr/local/apache2/bin
三、安装php
1.#cd /usr/local/src
# tar -zxvf php-4.4.1.tar.gz
# cd php-4.4.1
#./configure--prefix=/usr/local/php4 --with-apxs2=/usr/local/apache2/bin/apxs --with-
mysql=/usr/local/mysql
#--with-apxs2=/usr/local/apache2/bin/apxs 这是apache2专用的选项,请针对你的主机设置
--with-mysql 这是针对mysql的安装路径,这几个是同一行的.
...skipping
2.开始编译与安装:
# make
...skipping
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
#make install
# cp php.ini-dist /usr/local/lib/php.ini
将主要的 php 设定档 php.ini-dist 拷贝成 /usr/local/lib/php.ini 这个档案,
这是因为 apache 或其它程序执行 php 时需要到 usr/local/lib/ 中去使用这档案。
3.启动apache当中的php选项:
# vi /usr/local/apache2/conf/httpd.conf
#找到下面2行
LoadModule php4_module modules/libphp4.so #大约在231行
AddType application/x-httpd-php .php #在847行自行增加
4.重新启动apache:
# /usr/local/apache2/bin/apachectl stop
# /usr/local/apache2/bin/apachectl start
5.测试php是否正常工作;
# cd /usr/local/apache2/htdocs
# vi test.php
#以我的测试主机 http://192.168.1.1/test.php
实验结果和分析:
1. web服务器
① ##设置服务器的基础目录,默认为Apache安装目录
ServerRoot "/usr/local/apache-2.2.6"
② ##设置服务器监听的IP和端口
Listen 80
③ ##设置管理员邮件地址
ServerAdminwebmaster@foxbb.com
④ ##设置服务器用于辨识自己的主机名和端口号
ServerName www.abc.com:80
⑤ ##设置默认WEB文档根目录
DocumentRoot "/usr/local/apache-2.2.6/htdocs"
⑥ ##设置WEB文档根目录的默认属性
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
⑦ ##设置DocumentRoot指定目录的属性
<Directory "/usr/local/apache-2.2.6/htdocs">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
⑧ ##设置默认目录资源列表文件
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
⑨ ##拒绝对.ht开头文件的访问,以保护.htaccess文件
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
⑩
##指定错误日志文件ErrorLog logs/error_log
##指定记录到错误日志的消息级别
LogLevel warn
<IfModule log_config_module>
编辑Apache服务器默认设置文件:
vi /usr/local/apache-2.2.6/conf/extra/httpd-default.conf
按下面的提示修改:
###=============httpd-default.conf begin===================
##Apache默认设置文件
Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
AccessFileName .htaccess
ServerTokens Prod
ServerSignature Off
HostnameLookups Off
###=============httpd-default.conf end====================
指令说明:
Timeout:设置服务器在断定请求失败前等待的秒数。默认值300。
KeepAlive:设置是否启用HTTP持久链接,On 代表打开,Off 代表关闭。如果用于同一页面包含大量静态文件的应用,设置为On,以提高性能;如果用于主要为动态页面的应用,设置为Off,以节约内存资源;如果服务器 前跑有squid或者其它七层设备,设置为On。
MaxKeepAliveRequests:限制当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。笔者建议将此值设为100-500之间的一个值,以确保最优的服务器性能。
KeepAliveTimeout:设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。
UseCanonicalName:配置服务器如何确定它自己的域名,可选值为On | Off | DNS。DNS用于为大量基于IP的虚拟主机支持那些古董级的不提供"Host:"头的浏览器使用。笔者建议设置为Off。
AccessFileName:设置分布式配置文件的名字,默认为.htaccess。如果为某个目录启用了分布式配置文件功能,那么在向客户端返回其中 的文档时,服务器将在这个文档所在的各级目录中查找此配置文件,因此会带来性能问题,笔者建议关闭分布式配置文件功能。
ServerTokens:控制服务器回应给客户端的"Server:"应答头是否包含关于服务器操作系统类型和编译进的模块描述信息,同时还控制着 ServerSignature指令的显示内容。可选值为Full | OS | Minor | Minimal | Major | Prod。笔者建议设置为显示最少信息的Prod。
ServerSignature:配置服务器生成页面的页脚,可选值为On | Off | EMail。采用On会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName,而EMail设置会额外创建一个指向 ServerAdmin的"mailto:"部分。建议使用默认值Off。
HostnameLookups:设置是否启用对客户端IP的DNS查找,可选值为On | Off | Double。DNS查询会造成明显的时间消耗,建议设置为Off。
2. DNS服务器
①zone "." {
type hint;
file "named.ca";
};
###根域,类型为hint 引用的文件是/etc/name.ca
zone "abc.com" {
type master;
file "abc.com.zone";
};
#####正向区域,abc.com,类型为master 引用的文件是/etc/abc.com.zone
zone "1.168.192.in-addr.arpa" {
type master;
file "1.168.192 .in-addr.arpa.zone ";
};
#####反向区域,1.168.192.in-addr.arpa,类型为master 引用的文件是/etc/1.168.192 .in-addr.arpa.zone
②正向区域
$TTL 86400
@ IN SOA dns.abc.com . root.abc.com. (//此处com.后必须有空格
2009052200 ;serial
28800 ;refresh
14400 ;retry
720000 ;expire
86400 ;ttl
)
@ IN NS dns.abc.com.
www IN A 192.168.1.1
mail IN A 192.168.1.1
③反向区域
$TTL 86400
@ IN SOA dns.abc.com . root.abc.com. (
2009052200 ;serial
28800 ;refresh
14400 ;retry
720000 ;expire
86400 ;ttl
)
@ IN NS dns.abc.com.
1 IN PTR www.abc.com.
1 IN PTR mail.abc.com.
3. dhcp服务器
①#examples
default-lease-time 28800 # 定义缺省租约时间
max-lease-time 43200 # 指定最大租约时间
option subnet-mask 255.255.255.0 # 指定子网掩码选项
option broadcast-address 192.168.0.255 # 指定广播地址选项
option routers 192.168.0.1 # 指定路由器地址选项
option domain-name-servers 192.168.0.1 # 指定DNS地址选项
option domain-name "netreslab.org" # 指定域名选项
# 以上都是全局参数,以下是子网和掩码声明。
subnet 192.168.1.0
netmask 255.255.255.0
{range 192.168.1.10 192.168.1.100;range 192.168.0.150 192.168.1.200}
# 这段配置文件将允许DHCP服务器分配两段地址范围给DHCP客户,
192.168.1.10-100 和192.168.1.150-200。
以上整个dhcpd.conf配置文件定义了以下内容:如果DHCP客户在申请租约时不请求一个特定租约失效时间,则以default-lease-time(28800秒)为租约时间,如果有请求一个特定的租约失效时间,则采用max-lease-time语句指定为432000秒。DHCP客户机从DHCP服务器中可以获取的IP地址参数如下:子网掩码是255.255.255.0 ,广播地址是192.168.1.255,默认网关是192.168.1.1,DNS是192.168.1.1。
②Options语句
在dhcpd.conf配置文件中有一类语句应用非常多,它就是选项(Options)类语句。这类语句均是以Option开头,后面跟一个选项名,选项名后是选项数据,选项非常的多,这里列出一些常用的选项供参考。
option routers ip-address[, ip-address] # 指明在客户子网内的路由器的地址,可以有多个;
option time-servers ip-address[, ip-address...] # 指明时间服务器的地址
option domain-name-servers ip-address[, ip-address...] # 指明DNS的地址
option host-anme string # 给客户指定主机名,string是个字符串。
option domain-name string # 指定域名
option interface-mtu mtu # 指明网络界面的MTU,这里mtu是个正整数,如option interface-mtu 1500;
option broadcast-address ip-address # 指定广播地址
Linux中的DHCP服务器与Windows系统中的DHCP服务器一样,dhcpd进程也可以把主机的MAC地址和IP捆绑在一起,实现在动态IP地址分配中的静态IP地址分配。具体方法是,在/etc/dhcpd.conf中加上一句:
host pc1{ hardware ethernet xx.xx.xx.xx.xx.xx fixed-address 192.168.0.9;}
pc1是指定的主机名字;hardware ethernet后面的xx.xx.xx.xx.xx.xx指的是要与IP地址绑定的MAC地址;fixed-address 指捆绑后的IP地址。
4. ftp服务器
# Access rights
anonymous_enable=YES
/*若不想启用匿名访问请修改值为NO*
local_enable=NO
/*关闭本地用户登陆服务,指所有非匿名用户*/
write_enable=NO
/*关闭任何用户的写权限*/
anon_upload_enable=NO
/*关闭匿名用户上传数据的能力*/
anon_mkdir_write_enable=NO
/*关闭匿名用户建立目录的能力*/
anon_other_write_enable=NO
/*关闭匿名用户执行建立和上传之外的写入类命令的操作,比如更
改名字和删除操作的能力*/
****上面的功能要打开只需把NO改成YES****
# Security
anon_world_readable_only=YES
/*开启匿名用户只能使用许可权为全部可读的资源*/
connect_from_port_20=YES
/*从标准端口20触发连接*/
hide_ids=YES
/*隐藏FTP服务器中用户的ID,用“FTP"取代*/
pasv_min_port=50000
pasv_max_port=60000
/*设置pasv传输模式下的端口范围为50000-60000*/
# Features
xferlog_enable=YES
/*开启日志,记录传输状态到文件/var/log/vsftpd.log*/
ls_recurse_enable=NO
/*关闭“ls -R"命令,该命令常被用于DoS攻击,非常浪费系统资源,
但“mirror"镜像工具会用到它*/
ascii_download_enable=NO
/*关闭ASCII模式下载,防止被用于DoS攻击,ASCII下载很消耗CPU负担*/
async_abor_enable=YES
/*开启支持早期FTP客户端“async ABOR"命令的能力*/
# Porformance
one_process_model=YES
/*开启每个IP单一进程模式,该模式仅支持具备一定能力的内核,
比如linux kernel 2.4*/
idle_session_timeout=120
/*踢出空闲了两分钟后的用户*/
data_connection_timeout=300
/*踢出空闲了五分钟后的下载*/
accept_timeout=60
/*踢出挂起了一分钟后的passive连接*/
connect_timeout=60
/*踢出挂起了一分钟后的活动连接*/
anon_max_rate=50000
/*限止单个用户的下载速度为不超过50kbytes每秒*/
讨论心得:
1. 通过本次试验使我了解了在linux环境下www,dns,ftp,dhcp等服务器的构建,以及它们的工作原理。学会了如何通过命令方式对www,dns,ftp,dhcp等服务器进行配置,对一些配置文件得到了了解,例如: etc/dns的配置文件named.conf,www服务器的配置文件usr/local/apache2/conf/httpd.conf
,ftp的配置文件etc/vsftpd/conf/vsftpd.conf.,dhcp的配置文件etc/dhcpd.conf.。
2. 在配置dns服务器时老是实现不了,检查named.conf文件时并未查出语法方面的错误,检查var/abc.com,var/1.168.192文件时也没发现语法或是配置错误,在httpd.conf文件中也进行了servername的配置。怎么就不行呢?百思不得其解,最后百度了一下,原来是resolv.conf文件中没有配servername,再加上servername www.abc.com后就可以使用了。使我意识到在配命令的时候一定要注意先后顺序以及细节问题,只有这样开有可能保证万无一失。
3. Apache的配置文件在阅读的时候需要细心,里面有许多东西虽然这次试验用不到,但我们亦应该了解它的含义以及它的用处。
4. 在配置dhcp服务器是,用另一台电脑查看dhcp服务器配置是否正确时,输入ipconfig时,电脑的网卡并没有使用linux下的dhcp服务器,检查配置文件没有错误,最后发现是虚拟机的网卡没有连接,连接好网卡后在另一台电脑就可以访问到linux的dhcp服务器了。
5. 如果没有办法连接上来你的 Linux Apache 主机,那么:察看 /var/log/httpd/error_log 这个档案吧!他应该可以告诉我们很多信息! 另外,也要仔细的察看一下你的浏览器上面显示的信息,这样才能够知道问题出在哪里! 另一个可能则是防火墙啦!察看一下 iptables 的讯息! 通过查看以上信息基本可以解决没有办法连接上来你的 Linux Apache 主机的问题。
6. 我的linux是在虚拟机下安装的,通过本次试验也让我明白了虚拟机的使用方法和虚拟机的重大作用。学习好虚拟机的使用可以达到事半功倍的效果。