① 怎样建设一个自己的服务器呀告诉我具体服务器搭建流程!需要具备那些硬件软件啊各位高手谢谢了!
服务器搭建:iis(微软的,不错,会用鼠标,认识中文的,都可以很快上手),apache(本文可能不会提到,但是它是比较专业的服务器搭建软件,有兴趣可以和我交流交流)
相信你不只是想提供web服务吧,咱们也要搞搞ftp吧,呵呵
ftp服务器需要的软件:其实iis就自带一个ftp服务,但是我不推荐,主要是管理不太方便(个人观点)。我在这里给大家推荐serv-u,简单,实用,地球人都喜欢,呵呵(你个小兔崽子,少废话)
好了,软件呢就需要这些,如果你想搞点论坛啊,江湖游戏什么的,那就到网络上去搜索你想要的源代码吧,我觉得,论坛的话,雷傲的不错,当然也有支持asp的动网的,其实最近流行的是php,如果你喜欢什么,那就去down什么,这些都是非常非常简单的,相信自己,无师自通,J。
晕,差点忘了重要的东西,如果要搭建cgi或者php的论坛,还需要一些插件:
支持cgi的插件:需要perl编译器:activeperl,个大网站都有下载。
支持php的插件:需要php for win的插件,版本更新比较快,下载最新版本比较好。
Ok,要用的软件都说差不多了,如果还有需要的,我会在后面说明的。
喝口水,现在是万事具备,只欠东风了,开工ing:
首先,宽带得ip应该是动态得,所以我们就需要一个域名服务,来指向自己得机器,要不然,别人不能进入,这里推荐花生壳域名服务(http://www.oray.net/Default.asp),申请不是特别得繁琐,认识中文就会申请。申请好以后,你需要下载一个客户端,如果你不安装这个东东,还是不能够实现域名的指向,就在该网站有下载(注意下载最新得版本,下载老版本干什么啊,浪费资源,如果你有恋旧情怀,下载旧版本我也没办法)。当然,如果你有固定的ip,那就congratulate你了啊,不用动态域名了,我真的好想有一个固定的ip,但是没钱,穷人就是命苦啊L
接下来,安装iis,我们是菜鸟,当然用最菜的东东,iis所见所得,简单实用(不是给微软打广告,真得是这样,它比起apache简单多了)。如果你的是win2000服务器版,那iis应该是有安装得,如果是专业版,那就需要添加,添加删除软件里面可以找到,这里就不多说了。安装iis后,需要进行一些简单的设置,无非就是用鼠标对着那些中文按钮点点,简单的很,后面会提到如何配置cgi和php的,这里就不说了。
ftp服务器的serv-u的安装:和其它软件一样,下一步,下一步,finish,呵呵,不会被揍吧。安装完成以后,就会自动运行,需要填写一些东西,建议你在中文之家去下载汉化破解版的serv-u,这样对我等不识洋文的来说,是佳音啊。填写的时候只需要注意以下几个事项:
1, 如果你是动态的ip,那就在填写ip那一栏里面不要填写,如果是固定的,那就填吧,接下来是填写域名,就填写你申请的花生壳的免费域名。后面的,都是一见就明白的,不需要我再在这里罗嗦了。
2, 如果你不希望ftp服务随着系统的启动而启动,那就不要选择随系统启动那一栏,如果你不希望匿名登陆,就会自动提示你新建一个用户名和密码,反正你按着提示来,就不会出错的。
3, 关于serv-u的教程网络上非常多的,你去找找,那些高手说的绝对比我说的好,建议去下载几本看看,我就是从那些高手的文章中学习的。
4, 如果想让自己的ftp站点更专业,可以参看serv-u的帮助文件,有message的一些常用变量,那里说的很详细的。
Ok,服务器的搭建说的也就差不多了,如果有不对的地方,欢迎大家指出,下面就开始说说,如何使自己的服务器功能越来越强大。
论坛的安装:
如果你是使用asp代码的论坛,那你的iis服务器不用做任何说明,就可以支持的,当然,如果你用的是apache服务器,那就需要其它的设置,由于本文主要是基于iis的服务器,所以就不说了,网络上关于apache支持asp的教程也非常的多(其实我也不是特别的熟悉apache,不要k我啊,如果k我,我就不说了,嘿嘿)。
如果你是使用cgi的论坛,那就需要安装actibeperl,在安装的时候,只需要注意,将他安装在c:usr目录下,其实我也不知道为什么要安装到这里,反正你安装到这里会避免很多的问题,如果你安装到其它的目录,可能会出现一些比较怪的问题。
安装过程,省略,因为所有的软件安装方法都是大同小异,下面,我来说说如何在iis里面配置cgi:
打开iis管理器,打开网站属性,进入 主目录选项,点击,配置,然后进入一个新的对话框,点击添加,添加如下:
可执行文件:c:usrbinperl.exe %s %s (其实就是perl文件的地址,后面加两个%s,中间有空格的啊)
扩展名:.cgi
还要添加一次:
可执行文件:c:usrbinperl.exe %s %s
扩展名:.pl
然后,添加一个虚拟目录,注意以下的:
第一, 路径在你的cgi目录下,
第二, 如果是雷傲的,建议虚拟目录命名为cgi-bin,至于为什么,那是因为我习惯了,呵呵,不会被k吧
完了,配置cgi的就着么简单,如果大侠们觉得哪里有错误,请指出,呵呵!
如果你要搞些php的东西,那就要安装php for win。建议使用解压方式,不要用那个安装的,不好,为什么呢?怎么这么多为什么啊,那是别人高手说的,我怎么知道为什么啊。
废话少说,开工ing:
开工前,还有点废话:
PHP安装的两种不同模式,一种是Cgi模式(CGI executable),另一种是模块化安装方式。可以这样来区别:在CGI模式下,如果客户机请求一个php文件,Web服务器就调用php.exe去解释这个文件,然后再把解释的结果以网页的形式返回给客户机;而在模块化中,PHP是与Web服务器一起启动并运行的,所以从理论上说来说,以apache模块方式安装的PHP4有着比CGI模式更好的安全性以及更好的执行效率和速度,其实选择什么安装方式,完全在于你,而不是我在这里废话。
解压缩php到你想要的目录,我习惯上解压缩到c:php
打开刚才解压的PHP目录,你会发现有一个叫做"php.ini-dist"的文件,这就是PHP的配置文件了,你需要把它改名成"php.ini",然后复制到系统目录中(如果你的系统装在C盘,XP下就是"C:windows",Windows2000下是"C:winnt")。
我以前看过很多介绍PHP安装文件的文章都说要修改php.ini中"extension_dir"和"doc_root"这两项的值,可是小的在安装PHP过程中都没有改过,也没有过任何错误,看来这两个参数不是必须的。当然如果你不放心也可以修改一下。把doc_root改成你的服务器的根目录,把extension_dir改成你的PHP安装文件夹中的extensions文件夹所在的绝对路径。其实不改,也不会出错,那就看你怎 么设置了
参考资料:http://shop.jzshq.com/articleview/2005-8-1/article_view_144.htm
② 要搭建一个服务器需要哪些技术方面的知识啊具体详细一点
肯定需要网络方面知识,至少要把这个服务器想办法合理的连入公网,然后需要买域名,主要是你这个服务器肯定是要发布项目或服务来用。就要知道要发布的项目的技术,比如我就是做web开发的就需要一些java知识。如何运行服务项目。采用什么样的操作系统,现在一般服务器都使用linux相对windows安全,也可以使用server2003比较多的操作系统。 其实也就三点 服务的平台也就是操作系统,连入网络包括域名访问,项目发布。也就差不多了~
③ 服务器开发需要学习什么
服务器所用到的知识:TCP/UDP,最基本的;
并发——你可以选择使用select、poll,或者是多线程、多进程:如果你使用多线程,那么就必须使用同步技术——信号量、互斥体、条件变量的一种或几种,并且对于多线程技术,你还需要考虑使用进行线程分离与合并;
如果你使用了多进程,那么同步技术就不是你需要考虑的了,你需要考虑的是进程相关的问题了,你是使用fork还是vfork,你该如何处理客户端的请求,如何处理客户端断开连接后保证能够处理完数据并且没有僵尸进程产生,你还需要考虑高并发的问题;
你发送接受数据的时候,采用何种方式,是阻塞的还是非阻塞的,还有连接超时、重传等问题
你是选择TCP还是UDP,如果选择UDP你可得忙了,需要你自己去进行重传验证,模拟TCP的三次握手,保证数据不会丢失,保证数据的有序性;
还有其他很多需要你考虑的,以上都是指在Linux下的C++,本人对windows C++不了解。
推荐书目:UNIX高级环境编程,UNIX网络编程,卷一。C++只不过是你使用这些技术的方式,不管你使用C还是C++,你都可以使用从这两本书中学习到很多有用的知识,但是不能保证你就可以写出高质量的服务器程序。
④ 如何开发一个网站第一步
网站:基本组成部分,域名+运行环境+程序+整体思路+管理精力
域名:就是网址,不多说
运行环境:就是提供网站365天24小时运转的必备条件,网站不像有些人说的张嘴就能生出来,而且是天上飘着的啥也不用有,我甚见过已有的所谓专家,讲课说网站很简单就去注册个个域名就叫一个网站,建议大家不要盲目听一些鸡汤课程,崇拜一些文字专家。
小的网站,简单网页,就用主机空间也叫虚拟主机,或虚拟空间,叫法不同性质一样,只是个标志性名词而已,不要去纠结虚拟这个词汇,大的项目高的要求就用服务器,在这两者之间可以选择云服务器或VPS。
云服务器和VPS都是拥有独立服务器操作和管理权限,但是配置灵活可以很低的成本,享受独立IP独立资源分配到额服务器,对于很多项目初期,没必要冻着投入几万元去买服务器的朋友甚至小企业而言,都是非常不错的选择,
这里重点讲一下,VPS的出现要早于云服务器,是云服务器的雏形,技术前期发展产物,可以理解为使用上相同的产品可以简单理解为低配置的独立,可以远程管理自由配置环境以及应用,属于服务器跟空间完全不是一个概念,也不是一个档次,
云服务器高于VPS,云概念的推出,解决了服务器的资源配置调整问题,可以不停机无缝升级,不影响网站程序的运转,而且云端的数据备份安全性高于任何独立的机械服务器,最重要的还是方便,普通服务器再昂贵你加个硬盘加个内存,照样得停机,依然存在自己的硬件损坏数据丢失自己处理的隐患,而云主机只要不是所有阵列全部阵亡,基本可以排除某一个因为机械原因数据丢失的概率。
所以在选择何种网站运行环境,根据自己的需求,需要大还是小,自行选择即可,不要去单纯的按照名词判断和误解,对于没有运营基础的朋友可以私信我帮你分析和判断。
然后是虽然很短的两句话,但是尤其重要!
开一个网站就和开一个店开一家公司一个道理,并不是说你注册个域名挂个程序,放那就自己帮你赚钱了,而是需要有全盘的运营策略,对整个项目做综合的分析包括市场和用户群体,以及技术的策划分析,才有可能做的好。
另外对于精力,真的见过太多做了两三年,网站上一篇文章都没动过的朋友,说真的,没意义。
换位思考,如果你在网上看的内容,那网站千年不变你还会关注它吗?
最后,如果想要好好的做一件事情,专业的事让专业的人做,永远是成本最低的。
⑤ 如何一步步学习开发服务器(nginx)
HTTP服务器开发是个漫长的体力活,如果真的想做下去,必须要有强烈的兴趣支撑。但是除此之外,HTTP服务器开发并没有什么特别高深的算法在里面,好好努力的话,做出来自己的HTTP服务器也并不是太难的事。
⑥ 如何一步步学习开发服务器
因为题目中提到了Nginx和Tengine,所以这里假设是Linux下面的HTTP服务器的开发。
HTTP服务器开发是个漫长的体力活,如果真的想做下去,必须要有强烈的兴趣支撑。但是除此之外,HTTP服务器开发并没有什么特别高深的算法在里面,好好努力的话,做出来自己的HTTP服务器也并不是一件太难的事。
需要准备的有:
扎实 的C语言编程基础。相信到了大三的时候,你已经有了几年的变成经验,但是对于开发HTTP服务器来说,还是远远不够。课本中会给你C语言的一个大概讲解,但是在现实世界中,还是会有很多课本中覆盖不到的地方。因为你已经在阅读Nginx的代码了,所以建议你首先检查一下代码中是否有不认识的C语言语法和用法。如果有,那么就自己Google学习一下。如果没有,那么说明你的C语言学的足够好,不存在语言层面上的问题。接下来,非常推荐学习一下这本经典的The Practice of Programming。学校里学习到的知识太书本化,代码又太专业,不好懂。这本书能帮你在两者之间找一个平衡,读了之后就会知道很多地方为什么要这么做。
C语言准备的差不多了之后,可以开始准备网络编程的知识。Unix Network Programming的确是本好书,但是问题在于,它太厚了。对于初学者来说,它提供的东西太多了。从实用的角度,我更推荐Beej’s Guide to Network Programming,不太长,但是涵盖了网络编程的基本上所有常用的内容。全部读完也不过几个小时的时间。UNP可以用来在修炼的差不多了之后用来做参考书。或者用来学习网络编程中具体某个细节的知识。
接下来,因为是要写HTTP服务器,所以对HTTP协议需要有很深入的了解。当然最权威的资料就是一系列的RFC,比如HTTP 1.1的hwww ietf.org/rfc/rfc2616.txt。这时候就到了最开始讲的体力活的地方。不断的仔细阅读RFC,然后把它讲到的内容全部用代码实现一遍。当然,也有偷懒的办法,直接使用现有的HTTP解析库,比如h2o/picohttpparser · GitHub。
另外,关于Nginx的架构设计,Andrew Alexeev在 The Architecture of Open Source Applications (Volume 2): nginx里面讲的很清楚。这个会对你读代码有很大的帮助。
⑦ 如何自己开发一套服务器管理系统
转载 表面上看,是一套基于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/rece论文,不解释。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管理系统还是可以排上的。
⑧ 怎么搭建一个后台服务器
1.将username,password 封装进buffer
2.连接服务端
3.发送buffer
4.接收二进制的系统当前时间
5.显示时间
服务端地址设置部分:
[cpp]viewplainprint?
addr_server.sin_family=AF_INET;
addr_server.sin_port=htons(port);
addr_server.sin_addr.s_addr=inet_addr(ip);
创建连接:
sock_client=socket(AF_INET,SOCK_STREAM,0);
连接服务端代码:
flag=connect(sock_client,(structsockaddr*)&addr_server,sizeof(addr_server));
设置buffer填充username/password代码:
sprintf(buffer,"%s","username");
sprintf(buffer+32,"%s","password");
buffer[31]=buffer[63]=0;
接着是发送
flag=send(sock_client,buffer,64,0);
if(flag==64)
{
printf("sendok ");
}
接收部分代码:
flag=recv(sock_client,buffer,64,0);
if(flag!=sizeof(time_t))
{
printf("recvdoesnotfollowprotocal ");
close(sock_client);
continue;
}
将接收到的二进制数据转成时间
memcpy(curtime,buffer,sizeof(time_t));
structtm*ptm=localtime(curtime);
显示时间:
printf("systemtime:%04d-%02d-%02d-%02d:%02d:%02d ",ptm->tm_year+1900,ptm->tm_mon+1,ptm->tm_mday,
ptm->tm_hour,ptm->tm_min,ptm->tm_sec);
关闭连接:
printf("ok,nowwecloseconnection ");
close(sock_client);
实际开发中,为了追求并发效率和提升搞压效果,客户端需要有一个循环,另外可以多进程同时操作。
⑨ 对于服务器开发需要学习什么
服务器所用到的知识:
TCP/UDP,最基本的
并发——你可以选择使用select、poll,或者是多线程、多进程
如果你使用多线程,那么就必须使用同步技术——信号量、互斥体、条件变量的一种或几种,并且对于多线程技术,你还需要考虑使用进行线程分离与合并,
如果你使用了多进程,那么同步技术就不是你需要考虑的了,你需要考虑的是进程相关的问题了,你是使用fork还是vfork,你该如何处理客户端的请求,如何处理客户端断开连接后保证能够处理完数据并且没有僵尸进程产生,你还需要考虑高并发的问题
你发送接受数据的时候,采用何种方式,是阻塞的还是非阻塞的,还有连接超时、重传等问题
你是选择TCP还是UDP,如果选择UDP你可得忙了,需要你自己去进行重传验证,模拟TCP的三次握手,保证数据不会丢失,保证数据的有序性
还有其他很多需要你考虑的,以上都是指在Linux下的C++,本人对windows C++不了解
推荐书目:UNIX高级环境编程,UNIX网络编程,卷一。C++只不过是你使用这些技术的方式,不管你使用C还是C++,你都可以使用从这两本书中学习到很多有用的知识,但是不能保证你就可以写出高质量的服务器程序。