運維基礎部分:程序員
什麼是運維?個人理解是運用軟件維護公司的服務器,網站,而後各類服務搭建、維護和調優。看似簡單實際上經過課上課下的瞭解,發現要掌握不少知識。首先從操做系統開始接觸運維。windows
馮諾依曼體系安全
將計算機分爲五大部分組成:運算器、控制器、存儲器、輸入設備、輸出設備。運算器的功能主要是進行算術運算和邏輯運算;存儲器存儲數據和指令;控制器就是從存儲器提取各類數據指令給運算器,再把結果處理輸出給外部設備。這些最底層的硬件是實現功能的基礎,而軟件是實現功能的邏輯過程。服務器
內核網絡
一個完整的操做系統由內核(Kernel)和各類應用程序(Applications)組成,這是一個廣義的操做系統,好比咱們所用的windows操做系統實際上已經被裝上各類應用軟件了。而狹義上的操做系統是單指內核(Kernel),內核的功能有負責驅動底層硬件被訪問、合理分配資源、管理進程等等。多線程
「內核」指的是一個提供硬件抽象層、磁盤及文件系統控制、多任務等功能的系統軟件。一個內核不是一套完整的操做系統。一套基於Linux內核的完整操做系統叫做Linux操做系統,或是GNU/Linux。架構
內核是操做系統最基本的部分。它是爲衆多應用程序提供對計算機硬件的安全訪問的軟件。內核決定一個程序在何時對某部分硬件操做多長時間。直接對硬件操做是很是複雜的,因此內核一般提供一種硬件抽象的方法來完成這些操做,隱藏了複雜性,爲應用軟件和硬件提供了一套簡潔,統一的接口,使程序設計更爲簡單。框架
有一個問題,操做系統內核仍是直接面向的底層硬件,並不能讓用戶方便使用硬件。因而添加各類應用程序使得用戶使用硬件變的方便。最直觀的就是用戶界面。咱們經常使用的是圖形界面(GUI),另外還有命令界面(CLI)。Windows操做系統的Command窗口就是一種CLI。運維
計算機語言ide
機器語言 即二進制數字,計算機直接識別的語言。
微碼語言 又叫彙編語言,面向機器的程序設計語言。
早期的程序設計均使用機器語言。程序員們將用0, 1數字編成的程序代碼打在紙帶或卡片上,1打孔,0不打孔,再將程序經過紙帶機或卡片機輸入計算機,進行運算。這樣的機器語言十分複雜,不方便閱讀和修改,也容易產生錯誤。程序員們很快就發現了使用機器語言帶來的麻煩,它們難於辨別和記憶,給整個產業的發展帶來了障礙,因而彙編語言產生了。彙編指令和機器指令的差異在於指令的表示方法上。彙編指令是機器指令便於記憶的書寫格式。
高級彙編語言分爲系統級語言和應用級語言
系統級語言:諸如C、Java,更偏向底層,編寫難度大,運行效率高。
應用級語言:諸如PHP、Python易於理解,編寫方便,更貼近人。
Unix的發展
1969年以前,BELL實驗室、MIT、GE聯合開發Multics。
1969年:BELL的Ken Thompson爲本身開發了Unics(這個是戲稱的非正式的名稱,由於思想源自Multics)。
Ken Thomson利用實驗室廢棄的PDP-7小型機,爲實現本身設計的遊戲star travel 結合multics的思想發明的unics.
BELL實驗室開始研究他所發明的Unix。當時的軟件程序用Basic語言編寫。
Ken於1973年和他的學生Dennis·Ritchie一塊兒用C語言重寫了UNIX。
UNIX成爲歷史上第一個開放源代碼供普遍研究的開源系統。
1977年:UNIX分支--BSD誕生,加州伯克利大學BillJoy取得了UNIX的源代碼,加以修改和
完善,成爲UNIX重要分支BSD-UNIX。以後的x86上的FreeBSD就是BSD改版而來。
1979年:AT&T宣佈收回UNIX版權,再也不開放,同時發佈SystemV架構的UNIX。期間衆多
公司的UNIX系統紛紛出現。
不少諸如Berkeley…等高校或公司極大促進了Unix的進一步發展表明人物:Bill Joy-->BSNG-->BSD(Berkeley SystemDistribution)
Linux操做系統
在服務器管理上,運維人員要掌握的是Linux操做系統。一樣Linux指的是內核。
Linux是一套無償使用和自由傳播的類Unix操做系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操做系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操做系統。
Richard Stallman,是自由軟件運動的精神領袖、GNU計劃以及自由軟件基金會(Free Software Foundation)的創立者、著名***。他的主要成就包括Emacs及後來的GNU Emacs,GNU C 編譯器及GNU 調試器。 他所寫做的GNU通用公共許可證(GNUGPL)是世上最廣爲採用的自由軟件許可證。
Apache ASF 響應自由軟件,但要由本身的聲明
Pro Andrew 本身編寫內核 4000行左右代碼 戲稱爲:Minix
Linus Torvalds---Andrew的學生在1991年,當時仍是芬蘭大學生的他萌發了開發一個自由的Unix操做系統的想法,當年,Linux就誕生了,在他的自傳中他寫到剛開始的名字是Freax,後來在1991.10正式發佈了Linux 0.10 並徹底開源。
**五大開源許可協議
0.0什麼是許可協議?
什麼是許可,當你爲你的產品簽發許可,你是在出讓本身的權利,不過,你仍然擁有版權和專利(若是申請了的話),許可的目的是,向使用你產品的人提供必定的權限。
無論產品是免費向公衆分發,仍是出售,制定一份許可協議很是有用,不然,對於前者,你至關於放棄了本身全部的權利,任何人都沒有義務代表你的原始做者身份,對於後者,你將不得不花費比開發更多的精力用來逐個處理用戶的受權問題。
而開源許可協議使這些事情變得簡單,開發者很容易向一個項目貢獻本身的代碼,它還能夠保護你原始做者的身份,使你至少得到承認,開源許可協議還能夠阻止其它人將某個產品據爲己有。如下是開源界的 5 大許可協議。
1.GNU GPL
GNUGeneral Public Licence (GPL) 有多是開源界最經常使用的許可模式。GPL 保證了全部開發者的權利,同時爲使用者提供了足夠的複製,分發,修改的權利:
可自由複製
你能夠將軟件複製到你的電腦,你客戶的電腦,或者任何地方。複製份數沒有任何限制。
可自由分發
在你的網站提供下載,拷貝到U盤送人,或者將源代碼打印出來從窗戶扔出去(環保起見,請別這樣作)。
能夠用來盈利
你能夠在分發軟件的時候收費,但你必須在收費前向你的客戶提供該軟件的 GNU GPL 許可協議,以便讓他們知道,他們能夠從別的渠道免費獲得這份軟件,以及你收費的理由。
可自由修改
若是你想添加或刪除某個功能,沒問題,若是你想在別的項目中使用部分代碼,也沒問題,惟一的要求是,使用了這段代碼的項目也必須使用 GPL 協議。
須要注意的是,分發的時候,須要明確提供源代碼和二進制文件,另外,用於某些程序的某些協議有一些問題和限制,你能夠看一下 @PierreJoye 寫的 Practical Guide to GPL Compliance 一文。使用 GPL 協議,你必須在源代碼代碼中包含相應信息,以及協議自己。
2.GNU LGPL
GNU 還有另一種協議,叫作LGPL (Lesser General Public Licence),它對產品所保留的權利比 GPL 少,總的來講,LGPL 適合那些用於非 GPL 或非開源產品的開源類庫或框架。由於 GPL 要求,使用了 GPL 代碼的產品必須也使用 GPL 協議,開發者不容許將 GPL 代碼用於商業產品。LGPL 繞過了這一限制。
3.BSD
BSD 在軟件分發方面的限制比別的開源協議(如 GNU GPL)要少。該協議有多種版本,最主要的版本有兩個,新 BSD 協議與簡單 BSD 協議,這兩種協議通過修正,都和 GPL 兼容,併爲開源組織所承認。
新 BSD 協議(3條款協議)在軟件分發方面,除須要包含一份版權提示和免責聲明以外,沒有任何限制。另外,該協議還禁止拿開發者的名義爲衍生產品背書,但簡單 BSD 協議刪除了這一條款。
4.MIT
MIT 協議多是幾大開源協議中最寬鬆的一個,核心條款是:
該軟件及其相關文檔對全部人免費,能夠任意處置,包括使用,複製,修改,合併,發表,分發,再受權,或者銷售。惟一的限制是,軟件中必須包含上述版權和許可提示。
這意味着:
你能夠自由使用,複製,修改,能夠用於本身的項目。
能夠免費分發或用來盈利。
惟一的限制是必須包含許可聲明。
MIT 協議是全部開源許可中最寬鬆的一個,除了必須包含許可聲明外,再無任何限制。
5.Apache
Apache 協議 2.0 和別的開源協議相比,除了爲用戶提供版權許可以外,還有專利許可,對於那些涉及專利內容的開發者而言,該協議最適合(這裏有一篇文章闡述這個問題)。
Apache 協議還有如下須要說明的地方:
永久權利
一旦被受權,永久擁有。
全球範圍的權利
在一個國家得到受權,適用於全部國家。假如你在美國,許但是從印度受權的,也沒有問題。
受權免費,且無版稅
前期,後期均無任何費用。
受權無排他性
任何人均可以得到受權
受權不可撤消
一旦得到受權,沒有任何人能夠取消。好比,你基於該產品代碼開發了衍生產品,你不用擔憂會在某一天被禁止使用該代碼。
分發代碼方面包含一些要求,主要是,要在聲明中對參與開發的人給予承認幷包含一份許可協議原文。