① 怎樣建設一個自己的伺服器呀告訴我具體伺服器搭建流程!需要具備那些硬體軟體啊各位高手謝謝了!
伺服器搭建: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++,你都可以使用從這兩本書中學習到很多有用的知識,但是不能保證你就可以寫出高質量的伺服器程序。