用CentOS搭建文件服务器,第1张

但是,据最近一次,国外科技网站w3techs的数据显示,截止到2010年7月28日,CentOS以高达316%的份额占据了Linux Web服务器的榜首,第二和第三分别是Debian和Red Hat。也就是说,在每十个基于Linux的Web服务器当中,就有三个CentOS,两个半Debian和一个半RHEL。

   2009年10月-2010年7月Linux Web服务器市场份额(W3Techs统计)

虽然说,CentOS并不算是一个流行的Linux发行版,在各种热门Linux发行版的排行上都没什么特别好的排名;CentOS也是一个丝毫没有个性的发行版——它根本就是和Red Hat企业级Linux一模一样的。虽然如此,但是在作为Web服务器运行的Linux当中,CentOS却是毫无悬念的No 1。

CentOS为何会如此受用呢?

首先,应该是“Cost(成本)”的原因。既然,CentOS发行版和Red Hat企业级Linux几乎是一模一样的,那么,如果在没有特别需求的情况下,为何不用免费的CentOS呢?况且在美国,RedHat的价格大约是每个服务器每年1000美元,而在国内,大规模的企业,价格更是到了每台服务器每年上万甚至数十万元之间,不是谁都愿意承担这笔费用的。

其次,是由于CentOS在性能和功能等各方面表现都非常优秀。与RedHat非常相似,CentOS在数据中心里面很受欢迎,因为它容易架设、以及后期的维护和管理。CentOS属于社区维护的操作系统,甚至很多新颖的特性,都会首先在这款系统上试用,成熟了之后,才会选择植入其付费的企业版操作系统。

下面编者将安装这款操作系统,并同时用这款操作系统搭建一台常用的文件服务器。

   CentOS 55桌面

第2页:图形化安装过程(一)

   图形化安装过程(一)

CentOS的安装界面分为图形模式和文本模式两种。这里,很多人会选择文本安装模式,并且选择命令模式来操控系统,这样可以为系统节省很多资源。这里编者特别地来体验一下图形模式安装。单击回车键即可开始安装。

   安装初始界面

随后,你可以选择光盘安装或者是硬盘安装,进入图形安装界面。

   

下面的几个步骤,与其他系统安装过程无异:选择系统语言、键盘布局、创建分区、网络设备、时钟以及用户名和密码等。当然,你可以进行在“网络设备”进行手工设置,配置主机名以及其他设置。这里,编者选择系统安装完成之后,通过VI进行配置。

   网络设备

   系统配置完成,单击“下一步”开始安装CentOS 55

第3页:图形化安装过程(二)

图形化安装过程(二)

系统安装完成之后,需要重新引导。之后,系统还要进行几项基本设置。

   欢迎界面

   确认是否启用防火墙,同时选择信任的服务

   SELinux设置

同时,系统需要你进行当前时间的校对和用户及密码的设置。自此,系统安装才算完成。

第4页:安装Samba

   安装Samba

完成CentOS 55系统安装之后,下面开始今天的主要任务:通过Samba服务器来构建文件服务器。

在我们使用Windows作为客户机的时候,通常有文件、打印共享的需求。作为Windows网络功能之一,通常可以在Windows客户机之间通过Windows Network固有的功能实现这些要求。然而,通过Samba我们也可以让一台CentOS主机来兼Windows网络,实现同样的功能,进而充分发挥CentOS主机的可用性。

注:Samba是一个工具套件,是在Linux和UNIX系统上实现SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成。

首先,通过 yum 来在线安装Samba。

注:Yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

   在线安装Samba

因为是在线安装,所以完成安装通常需要一段时间,系统会不断地做出提示。

   Samba安装成功

第5页:配置Samba(1)

配置Samba

安装完成之后,还通过编辑 /etc/samba/smbconf ,根据需求配置Samba。在这里,本文的意图是只将文件共享应用于内网,并让将要被共享的目录拥有充分的读写权限属性。

找到全局设置标签[global],并在其下加入文字编码的参数设置。

   编辑Samba的配置文件smbconf

同时,找到workgroup = MYGROUP此行,将工作组名称改为 Windows 网络所定义的工作组名WORKGROUP。并设置hosts allow = 1921680127,指定内网IP地址及本地,只允许这两种情况的访问,取消行前的“;”符号。

   修改工作组名和主机允许IP

然后在配置文件的末尾填如下几行,定义公众共享目录:

   定义公众共享目录

第6页:配置Samba(2)

配置Samba

接下来,创建将要通过Samba共享给Windows网络的专用目录。

   通过Samba共享给Windows网络的专用目录

在进行到服务端的连接之前,需要预先对用于登录Samba的用户进行设置。

在这里,编者以CentOS中Samba用户数据库管理工具"smbpasswd"为例,创建用于登录Samba的用户数据。当然,前提是系统用户中存在该用户,才可以创建该用户在Samba用户数据库中的信息。所以,必须先用useradd创建该用户。

   创建新用户

   将该用户信息加入到Samba用户数据库中

第7页:启动Samba服务

启动Samba服务

在启动Samba服务之前,首先将防火墙设置中Samba所用到的端口进行开放。

通过vi /etc/sysconfig/iptables,编辑 iptables 配置文件。

   编辑iptables配置文件

并且,键入etc/rcd/initd/iptables restart,重新启动iptables,使新的规则生效。同时,启动Samba服务,包括SMB和NMB服务。

   重新启动iptables,使新的规则生效

   从Windows客户端连接到Samba服务器

在服务端启动Samba服务后,我们就可以从Windows客户端通 Windows网络连接到Samba。这里以Windows XP为例,说明如下连接过程:

1、从桌面打开"网上邻居",并点击"查看工作组计算机"选项;

2、确认出现Samba服务端的连接,并双击该连接;(本站文档的主机名以Sample为例)

3、输入在服务端预先设置好的Samba用户的用户名及密码;(用户名同系统用户名,密码需要输入在通过smbpasswd为该系统用户设置的Samba专用的密码。)

4、然后确认能够连接到Samba服务器,并出现根目录及Samba专用共享目录。

最后,在相应目录进行新建、修改以及删除文件的操作,测试相应权限的可操作性。

浏览器代理上网只负责web流量的转发,也就是说你通过浏览器转发的数据,是通过这个代理服务器的,然后代理服务器帮你转发一切流量数据,然后返回给你。

回到你现在的问题: ping 一个域名

Ping这个其实只是一个工具,当ping一个域名的时候,他会先去寻找 IP-域名的映射关系,顺序如下:

先查找HOST文件,如果存在就引用映射,如果不存在那么就是查找你设置的DNS 服务器。

如果DNS服务器不存在,则返回错误,因为无法解析这个域名,所以无法发送PING数据(ICMP数据)

  〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持);

  〉另外一个功能就是作为反向代理服务器实现负载均衡

  以下我们就来举例说明如何使用 nginx 实现负载均衡。因为nginx在处理并发方面的优势,现在这个应用非常常见。当然了Apache的 mod_proxy和mod_cache结合使用也可以实现对多台app server的反向代理和负载均衡,但是在并发处理方面apache还是没有 nginx擅长。

  1)环境:

  a 我们本地是Windows系统,然后使用VirutalBox安装一个虚拟的Linux系统。

  在本地的Windows系统上分别安装nginx(侦听8080端口)和apache(侦听80端口)。在虚拟的Linux系统上安装apache(侦听80端口)。

  这样我们相当于拥有了1台nginx在前端作为反向代理服务器;后面有2台apache作为应用程序服务器(可以看作是小型的server cluster。;-) );

  b nginx用来作为反向代理服务器,放置到两台apache之前,作为用户访问的入口;

  nginx仅仅处理静态页面,动态的页面(php请求)统统都交付给后台的两台apache来处理。

  也就是说,可以把我们网站的静态页面或者文件放置到nginx的目录下;动态的页面和数据库访问都保留到后台的apache服务器上。

  c 如下介绍两种方法实现server cluster的负载均衡。

  我们假设前端nginx(为127001:80)仅仅包含一个静态页面indexhtml;

  后台的两个apache服务器(分别为localhost:80和1583770143:80),一台根目录放置phpMyAdmin文件夹和testphp(里面测试代码为print “server1“;),另一台根目录仅仅放置一个testphp(里面测试代码为 print “server2“;)。

  2)针对不同请求 的负载均衡:

  a 在最简单地构建反向代理的时候 (nginx仅仅处理静态不处理动态内容,动态内容交给后台的apache server来处理),我们具体的设置为:在nginxconf中修改:

  复制代码 代码如下:

  location ~ \php$ {

  proxy_pass 1583770143:80 ;

  }

  〉 这样当客户端访问localhost:8080/indexhtml的时候,前端的nginx会自动进行响应;

  〉当用户访问localhost:8080/testphp的时候(这个时候nginx目录下根本就没有该文件),但是通过上面的设置 location ~ \php$(表示正则表达式匹配以php结尾的文件,详情参看location是如何定义和匹配的 http://wikinginxorg/NginxHttpCoreModule) ,nginx服务器会自动pass给 1583770143的apache服务器了。该服务器下的testphp就会被自动解析,然后将html的结果页面返回给nginx,然后 nginx进行显示(如果nginx使用memcached模块或者squid还可以支持缓存),输出结果为打印server2。

  如上是最为简单的使用nginx做为反向代理服务器的例子;

  b 我们现在对如上例子进行扩展,使其支持如上的两台服务器。

  我们设置nginxconf的server模块部分,将对应部分修改为:

  复制代码 代码如下:

  location ^~ /phpMyAdmin/ {

  proxy_pass 127001:80 ;

  }

  location ~ \php$ {

  proxy_pass 1583770143:80 ;

  }

  上面第一个部分location ^~ /phpMyAdmin/,表示不使用正则表达式匹配(^~),而是直接匹配,也就是如果客户端访问的 URL是以http://localhost:8080/phpMyAdmin/ 开头的话(本地的nginx目录下根本没有phpMyAdmin目录),nginx会自动pass到127001:80 的Apache服务器,该服务器对phpMyAdmin目录下的页面进行解析,然后将结果发送给nginx,后者显示;

  如果客户端访问URL是http://localhost/testphp 的话,则会被pass到1583770143:80 的apache进行处理。

  因此综上,我们实现了针对不同请求的负载均衡。

  〉如果用户访问静态页面indexhtml,最前端的nginx直接进行响应;

  〉如果用户访问testphp页面的话,1583770143:80 的Apache进行响应;

  〉如果用户访问目录phpMyAdmin下的页面的话,127001:80 的Apache进行响应;

  3)访问同一页面 的负载均衡:

  即用户访问http://localhost:8080/testphp 这个同一页面的时候,我们实现两台服务器的负载均衡 (实际情况中,这两个服务器上的数据要求同步一致,这里我们分别定义了打印server1和server2是为了进行辨认区别)。

  a 现在我们的情况是在windows下nginx是localhost侦听8080端口;

  两台apache,一台是127001:80(包含testphp页面但是打印server1),另一台是虚拟机的1583770143:80(包含testphp页面但是打印server2)。

  b 因此重新配置nginxconf为:

  〉首先在nginx的配置文件nginxconf的http模块中添加,服务器集群server cluster(我们这里是两台)的定义:

  复制代码 代码如下:

  upstream myCluster {

  server 127001:80 ;

  server 1583770143:80 ;

  }

  表示这个server cluster包含2台服务器

  〉然后在server模块中定义,负载均衡:

  复制代码 代码如下:

  location ~ \php$ {

  proxy_pass http://myCluster ; #这里的名字和上面的cluster的名字相同

  proxy_redirect off;

  proxy_set_header Host $host;

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  }

  这样的话,如果访问http://localhost:8080/testphp 页面的话,nginx目录下根本没有该文件,但是它会自动将其pass到myCluster定义的服务区机群中,分别由127001:80;或者1583770143:80;来做处理。

  上面在定义upstream的时候每个server之后没有定义权重,表示两者均衡;如果希望某个更多响应的话例如:

  复制代码 代码如下:

  upstream myCluster {

  server 127001:80 weight=5;

  server 1583770143:80 ;

  }

  这样表示5/6的几率访问第一个server,1/6访问第二个。另外还可以定义max_fails和fail_timeout等参数。

  综上,我们使用nginx的反向代理服务器reverse proxy server的功能,将其布置到多台apache server的前端。

  nginx仅仅用来处理静态页面响应和动态请求的代理pass,后台的apache server作为app server来对前台pass过来的动态页面进行处理并返回给nginx。

  通过以上的架构,我们可以实现nginx和多台apache构成的机群cluster的负载均衡。

  两种均衡:

  1)可以在nginx中定义访问不同的内容,代理到不同的后台server; 如上例子中的访问phpMyAdmin目录代理到第一台server上;访问testphp代理到第二台server上;

  2)可以在nginx中定义访问同一页面,均衡 (当然如果服务器性能不同可以定义权重来均衡)地代理到不同的后台server上。 如上的例子访问testphp页面,会均衡地代理到server1或者server2上。

  实际应用中,server1和server2上分别保留相同的app程序和数据,需要考虑两者的数据同步。

一般上网都会得到一个动态的公网IP,你在你的路由器的状态里可看到。然后把你需要连接的桌面的计算机的IP做映射就行了。(在路由器的配置里有个DMZ主机),然后你的朋友可以通过你路由器的公网IP访问你的桌面。你必须要开启远程桌面访问(我的电脑的属性的远程-》启用我的这台远程。。。)

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 用CentOS搭建文件服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情