linux课程实验报告

时间:2024.4.27

实验名称:

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”数据文件

1cd  /var/named/chroot/var/named

2vi  abc.com.zone

3添加以下配置

见附件linux.org.zone

4. 配置反向解析区域1.168.192.in-addr.arpa数据文件

1cd  /var/named/chroot/var/named

2vi  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配置

附件1named.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 ";

};

附件2abc.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

附件31.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. 禁用vmwareDHCP服务

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是在虚拟机下安装的,通过本次试验也让我明白了虚拟机的使用方法和虚拟机的重大作用。学习好虚拟机的使用可以达到事半功倍的效果。

更多相关推荐:
linux实验报告

实验二Linux常用命令使用一、实验目的1.掌握Linux一般命令格式。2.掌握有关文件和目录操作的常用命令。3.掌握有关进程操作的常用命令。4.熟练使用man命令。二、实验内容1.熟悉cd、date、pwd、…

Linux实验报告

Linux操作系统实验报告实验编号实验编号实验名称实验名称实验1Linux安装实验2掌握虚拟机的使用实验目的1熟练掌握Linux系统的安装实验目的实验任务1虚拟机的使用实验任务2安装RedHatLinux90操...

Linux基础操作实验报告

实验项目名称Linux基础操作实验项目编号一学号组号上机实践日期20xx919上机实践时间2学时一目的本次实验所涉及并要求掌握的知识点1熟悉启动Linux虚拟机与同时使用多个控制台登录Linux的基本操作2熟练...

Linux 实验报告(一)系 统 常 用 命 令

专业计算机科学与技术学号姓名Linux操作系统报告单名称系统常用命令任课教师专业计算机科学与技术班级姓名学号完成日期成绩123456789

linux实验报告

实验一Linux的基本操作命令一实验目的了解Linux的基本命令实现Linux的文件系统操作二实验内容1在Linux字符环境下练习使用基本的文件操作命令2学会察看Linux的环境设置以及系统信息三实验仪器安装R...

Linux实验报告

课程编号B080103040Linux操作系统实验报告东北大学软件学院实验一熟悉Linux环境实验内容一练习常用的Shell命令当用户登录到字符界面系统或使用终端模拟窗口时就是在和称为shell的命令解释程序进...

linux实验报告

学生实验报告20xx20xx学年第二学期一实验目的1掌握Linux操作系统中多线程编程的基本原理和方法2学会利用创建多线程实现单词统计二实验原理1多线程编程线程在进程的基础上作进一步抽象也就是说一个进程分为两个...

linux实验报告

西安郵電學院Linux实验报告题目1进程题目2线程题目3互斥系部名称专业名称班级学号计算机学院软件工程080204085047学生姓名指导教师时王晶晶陈莉君20xx年10月29号11月9号间实验1进程11实验目...

linux设计实验报告

重庆交通大学信息学院Linux操作系统设计实验报告成绩班级学号姓名实验所属课程Linux操作系统实验室中心信息学院机房指导教师闫果实验时间1一课程设计题目在Linux操作系统下实现C语言版本的学生信息管理系统要...

linux网络编程实验报告

河南师范大学设计性实验报告Linux网络编程实验河南师范大学综合性、设计性实验项目简介学院名称(公章):软件学院20##-20##学年第一学期填表日期:20##年12月10日注:开课时间填本实验项目所有实验班的…

操作系统实验报告-Linux操作、使用、编程)

实验报告20xx20xx学年第二学期课程名称实验名称实验时间指导单位操作系统ALinux操作使用编程20xx年5月6日计算机学院计算机科学与技术系指导教师徐小龙学生姓名学院系陈坤通达学院班级学号专业100029...

linux操作系统指令实验报告

实验一Linux的基本操作和常用命令的使用一实验目的1学会安装Linux操作系统2掌握Linux系统的一些基本操作3掌握常用Linux命令的使用方法4了解Linux命令中参数选项的用法和作用二实验环境1Linu...

linux实验报告(22篇)