如何把一台电脑变成开发服务器?

如何把一台电脑变成开发服务器?,第1张

如何把自己电脑设置成服务器

这里我们讲一下怎样把自己的电脑变成一台网站服务器来使用, 把自己的电脑用作网站服务器并不难。

无需别的硬件或软件就能够轻松实现, 只需利用Windows95OSR2中提供的"个人Web服务"(PersonalWebServer)就可以。

如果想功能更加多一些的话, 就需要用 WindowsNTServer4.0。 您甚至还可以创作自己的HomePage发布信息、进行文件传送或开展网上讨论等等。

总言而之, 过去我们只能在网络上看见的, 现在全部都可以自己来完成。

一、Web服务器功能的设置   安装完Windows95OSR2后, 应该考虑让别人用什么样的方法来访问我们的Web服务器, 如用电话拨号来访问, 就应该安装像Plus之类的电话拨号服务软件。

如果只能提供电话拨号服务, 建议采用后一种方案, 即用 WindowsNTServer4.0, 因为它能提供256条电话线同时拨号。

当然我们也可以自己先连上一个公共的网络服务器, 让别人从这个服务器访问我们的Web服务器, 但必须要有一个固定的IP地址 , 并在这个服务器的DNS(域名服务器)中注册。

如果只有IP地址, 但没有在DNS中注册, 那么局域网以外的用户就不能访问该个人Web服务器。

不管用什么方式, 我们都要为计算机设置TCP/IP协议和Web个人服务器功能。

这可以在"网上邻居"中设置。

方法非常简单, 只需在"网上邻居"的"属性"中添加TCP/IP协议, 然后在"TCP/IP属性"中的"IP地址"标签中选择"指定IP地址"并输入正确的 IP地址。 在"DNS配置"标签中选择"使DNS无效"。

安装个人Web服务器的方法如下:

(1)在"网上邻居"的"属性"对话框"配置"标签中单击"添加"按钮;

(2)在弹出的"选择网络组件类型"对话框中, 在"厂商"栏中选择"Microsoft", 在"网络服务"栏中选择"PersonalWebServer", 然后单击"确定"按钮。这时Windows95将自动配置系统。 机器启动后, 在Windows95所在驱动器的根目录下面将建立一个名为Webshare的子目录, 其下还有三个子目录:WWWroot、Scripst和FTProot, 分别存放HTML超文本文件、CGI脚本文件和FTP文件传送文件。

安装完成后, 先可以进行一下测试。 启动机器, 在"控制面板"中双击"个人Web服务器"图标, 在"服务"选项栏中分别选择"HTTP"和"FTP"并单击"启动", 这样就开启这两项服务功能。 也可以设成"自动方式", 这样每次开机后, 就自动启动Web服务器功能。 启动Web服务器功能后, 我们可以打开 WWW浏览器(如IE), 在地址栏中键入我们的IP地址, 马上就会出现Web个人服务器中自带的一个主页。

然后可以在一个局域网中(如Intranet 网)进行测试。 方法是在网上的其他计算机中, 用WWW浏览器键入用作个人Web服务器的计算机的注册名, 这时应当出现同样的主页。 如果不能看见, 可以在个人Web服务器上用DOS方式运行一下winipcfg命令, 看一看这台计算机的IP地址是不是正确。

下面介绍怎样在WindowsNTServer4.0中文版中设置Web服务器功能。

WindowsNTServer4.0中文版中的Web服务功能通过 IIS2.0(InternetInformationServer2.0)来实现。 在安装WindowsNTServer4.0中文版的过程中 , 系统会提示"是否安装IIS2.0?", 应回答"安装"。 这样启动WindowsNTServer4.0中文版后, 就有Web服务器的功能。 和 Windows95中的情况一样, 在WindowsNT中也同样存在用什么样的方法让别人访问Web服务器的问题。

如果是在局域网中, 要安装网卡、设置协议及IP地址等。 如果准备用调制解调器让别人拨号访问, 则要安装调制解调器、电话线路。 还要在"服务项目"中添加"RAS远程服务"功能, 并在这个功能的"属性"中设置协议等等。 如果对这些设置不太清楚的话, 可以参考有关WindowsNT的书籍。

安装完成后, 可以按照前面在Windows95OSR2 中的方法进行一下测试, 看看能不能在另外的计算机中用WWW浏览器看到IIS2.0提供的一个主页例子。

二、制作自己的主页   要制作主页, 先要安装一些必要的网页制作软件, 笔者使用的是FrontPage97。

先把个人Web服务器中自带的主页修改成自己的主页。

方法是进入这个主页的目录(Windows95在Webshare目录的WWWroot子目录中, WindowsNT在InetPub目录的WWWroot子目录中), 找到default.htm文件双击打开后, 选中工作条中的"编辑", 系统会自动调出FrontPage97, 这时就可以发挥自己的才能进行一番设计。

在这个主页中, 我们能够向外发布消息, 让别人下载放在Webshare目录下FTProot子目录中的文件, 但是还不能实现双向交流, 接收访问者的信息。

三、安装CGI系统   要使Web服务器能为别人提供"写"的功能, 必须在服务器上安装CGI(通用网关接口)系统。

通用网关接口是一个信息服务器主机对外信息服务的标准接口(见图2)。

事实上, 任何一种程序语言所设计的应用程序可以在服务器主机上执行, 并利用CGI接口来传送应用服务信息, 皆称之为"CGI程序语言", 而用这种语言编写的CGI程序又被称为"脚本"。

现在常用的有Shell、VB、C/C++、Java、Perl等语言。

以PerlforWin32为例, 您可以从Internet上下载自解压文件pw32i316.exe, 然后安装。

我们先来看看怎样在Windows95OSR2版中的"个人Web服务"上安装Perl系统: 启动Windows95后, 用鼠标双击下载下来的pw32i316.exe, 自解包就会自动运行解压并进行安装, 整个安装过程可以全部回?quotY"完成。

完成后一般会在C盘根目录下建立一个名为Perl的目录, 并在其下建立几个子目录, 其中在Bin子目录中有一个名为 perl.exe的可执行程序, 这就是Perl系统的主程序。

但是这时的Perl主程序并不能运行按Perl语言方法编写的CGI脚本, 所以还必须修改 Windows95的注册表。

方法是先运行注册表编辑器regedit, 然后依次打开"HKEY_LOCAL_MACHINE \System \Currentcontrlset \Services \W3svc \Parameters \ScriptMap\", 加入".pl'C:\PERL\BIN\perl.exe%s%s'"。

退出注册表文件后, 重新启动计算机, 然后进入Perl 目录下的Eg子目录, 从中任选一个扩展名为.pl的文件并双击, 这时系统会出现一个列表窗口, 询问使用什么程序来打开这个文件, 这时应该在可选的可执行文件列表中找到"perl"(如果找不到可以在"其他"项中按路径来指定), 并选定"始终使用该软件打开这种类型的文件"项, 单击"确定"即可。

在 WindowsNTServer4.0中的安装过程与Windows95基本一样, 只是修改注册表时应运行regedit32, 加入的内容为:".pl:REG_SZ:C:\Perl\Bin\perl.exe%s%s"。

安装完成Perl系统后, 我们就可以写一个CGI脚本试一试。

下面的例子中, 程序1是用Perl语法规则写成的一个CGI脚本, 这是一个 ASCII文本文件, 可用一般的记事本来编写, 完成后用sample.pl文件名存盘。

注意不论是在WindowsNTServer4.0还是在 Windows95中, 都应把这个文件放在Scripts的子目录中。

程序2是相应的HTML文件, 这个文件应放在WWWroot子目录中。

接下来我们可以运行测试。

打开WWW浏览器, 在地址栏中键入:http://您的Web服务器名/程序2的文件全名, 会出现一个填写界面(见图 3), 当输入数据完成后, 单击"确定"按钮, 马上就会把您填写的这些内容写在屏幕上(见图4)。

当然, 我们也可以从网上的另一台计算机来测试。 这仅仅是一个很简单的例子, 要想得到更好的结果(如问卷调查、网上留言、BBS等), 就要进一步学习一些有关Perl语言的知识。

总而言之, 通过不懈努力, 完全可以使我们的个人Web服务器达到专业水平。如何把自己电脑设置成服务器

转载 表面上看,是一套基于B/S方式实现的分布式管理系统,但其实背后的架构是基于C/S完成的。你以为他是一只鞋吗?其实他是一个吹风机。作为界面化的系统,浏览器框架是不可或缺的,但更加重要的东西在Socket上面。

一、需要解决中央控制端到各节点服务器之间的通信。

这个其实牵扯到一个通信协议的问题,各语言都有自己的socket,thread的库,直接调用即可。但是这个通信协议就需要自己来完成了。既不能太简单,太简单了,明码传输,如果别人获知了这个接口,就很容易执行一些令人讨厌的操作。也不能太复杂,太复杂了等于是给自己找麻烦,所以简单的数据包编解码的工作或者用token验证的方式是需要的。通信协议起码要两种,一种是传输命令执行的协议,一种是传输文件的协议。

二、跨语言的socket通信

为什么要跨语言,主控端和代理端通信,用什么语言开发其实无所谓。但是为了给自己省事,尽可能使用服务器上已经有了的默认语言,Ambari前期采用php+puppet的方式管理集群,这不是不可以,puppet自己解决了socket通信协议和文件传输的问题,可你需要为了puppet在每台服务器上都安装ruby。我是个有点服务器和代码洁癖的人。光是为了一个puppet就装个ruby,我觉得心里特对不起服务器的资源。所以我自己写了一个python的代理端。python是不管哪个linux系统在安装的时候就都会有了。然后主控端的通信,可以用python实现,也可以用php实现,但是考虑到对于更多的使用者来说,改php可能要比改tornado简单许多,所以就没用python开发。hadoop分支版本众多,发布出去,用户要自己修改成安装适合自己的hadoop发行版,就势必要改源码,会php的明显比会python的多。php里面的model封装了所有的操作,而python只是个操作代理人的角色而已。

所以也延伸出一个问题,什么语言用来做这种分布式管理系统的代理端比较合适,我自己觉得,也就是python比较合适了,操作系统自带,原生的package功能基本够用。用java和php也可以写agent,但是你势必在各节点预先就铺设好jre或者php运行环境。这就跟为什么用python和java写mapred的人最多是一样的。没人拦着你用nodejs写mapred,也可以写,就是你得在每个节点都装v8的解释引擎,不嫌麻烦完全可以这样干。原理参看map/reduce论文,不解释。perl也是操作系统原生带的,但是perl的可维护性太差了,还是算了吧。

所以这就牵扯到一个跨语言的socket问题,理论上来说,这不存在什么问题。但这是理论上的,实际开发过程中确实存在问题,比如socket长连接,通信数据包在底层的封装方式不同。我没有使用xml-rpc的原因之一就是我听说php的xmlrpc跟其他语言的xmlrpc有不同的地方,需要修改才能用,我就没有用这种办法。最早是自己定义的操作协议,这时就遇到了这些问题,所以后来直接采用了thrift方式。就基本不存在跨语言的socket通信问题了。

三、代理端执行结果的获取

无论命令还是文件是否在代理端执行成功,都需要获取到执行结果返回给中央端。所以这里也涉及一个读取节点上的stdout和stderr的问题。这个总体来说不是很难,都有现成的包。当然这个时候你需要的是阻塞执行,而不能搞异步回调。

还有个问题是,我要尽可能使用python默认就带的包,而尽量不让服务器去访问internet下载第三方的包。

还有代理端最重要的一点,就是python的版本兼容性。centos5用python 2.4,centos6用python 2.6,ubuntu基本默认都是2.7。所以一定要最大限度的保证语言的跨版本兼容性,要是每个操作系统和每一个版本我都写一个代理,我一个人就累死了。

四、浏览器端的model,view,controller

这里面你要封装好所有的通信协议,以及需要在节点上面执行的脚本。发送文件的操作和数据库操作也要在model里面完成。

如果对tcl/tk很熟,也可以写基于操作系统界面方式的管理,不用浏览器就是了。

view对我来说是最痛苦的事,都是现学的jQuery怎么用,前端的工作太可怕了。关于这方面,没有太多可描述的,html和js带给我的只有痛苦的回忆,万恶的undefined。

五、跨操作系统的安装文件封装。

要适应不同的操作系统也是个很麻烦的事情,需要用agent提前获知操作系统的发行分支,版本号。然后去找到对应的安装文件去执行。你不能保证一个分布式系统的集群中所有的节点都可以访问internet,更多的情况是这些节点都存在在一个安全的内网中。只有个别几个节点是可以访问外网的。所以,我势必要把所有的安装文件以及他们的依赖尽可能集中起来。我不确定安装操作系统的lzo,yum或者apt-get会去下什么鬼东西,甚至无论是yum还是apt-get,里面都没有hadoop-lzo的库文件。所以,最好的办法是自己编译打包rpm和deb包。直接安装就好了,别去找repo下载什么。

这就是第五步工作,把需要的依赖的东西自己编译打包成rpm和deb。

deb包很好解决,但是rpm就没那么好办了,需要学习rpm的编译文件如何编写,这块是挺麻烦的,但是这玩意用好了还是挺不错的。现在我自制的安装包里面就已经包含了自己编译的lzo和snappy两种压缩库,以及hadoop-gpl-packaging的rpm和deb。下一个发布的easyhadoop将直接支持centos5,6,suse,以及ubuntu/debian的系统上安装hadoop。已经自带了lzo和snappy以及lzop和snzip。

六、把这些所有东西,整合到一个系统里面。

关联这些所有事情间的联系,整合到一个浏览器界面里面去。写一个分布式的管理脚本不难,写一个界面也不难,但是也许是我的水平不行,这两件事结合起来让他们协同工作还是有点难度的。对我来说,写界面的工作可能更难一点。

Cloudera可能是十来个人在写Manager的东西,ambari也是放到github和apache svn上面,apache基金会的各种committer在写。easyhadoop没他们功能那么强大,一年来只有我一个人设计架构,功能,各种语言的编码,测试,发布。For the love of god, What have I done(英文部分请站在山顶仰天长啸)? T_T。从前台到后台,到hadoop和生态系统以及他们的依赖软件的单独patch、编译打包。(系统yum或者apt-get的包不如自己打的好使。)

从时间上来看,全球第一款开源的hadoop部署管理系统应该还是属于ambari,2011年8月开始写的,2012年9月底进入apache的incubator。我是大概2012年8月开始写的easyhadoop,全球第一没赶上,估计国内第一个开源的hadoop管理系统还是可以排上的。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/543672.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-26
下一篇2023-06-26

发表评论

登录后才能评论

评论列表(0条)

    保存