摘要:強大且什么是是一種自由和開放源碼的類操作系統內核。是一個領先的操作系統內核,世界上運算最快的臺超級電腦運行的都是基于內核的操作系統。開機完成后,就接手初始化硬件設備創建存儲器空間的映射,以便為操作系統內核準備好正確的軟硬件環境。
GNU/Linux 強大且Free 什么是Linux
Linux是一種自由和開放源碼的類UNIX操作系統內核。目前存在著許多不同的Linux發行版,可安裝在各種各樣的電腦硬件設備,從手機、平板電腦、路由器和影音游戲控制臺,到桌上型電腦,大型電腦和超級電腦。
Linux是一個領先的操作系統內核,世界上運算最快的10臺超級電腦運行的都是基于Linux內核的操作系統。
Linux操作系統也是自由軟件和開放源代碼發展中最著名的例子。只要遵循GNU通用公共許可證,任何人和機構都可以自由地使用Linux的所有底層源代碼,也可以自由地修改和再發布。嚴格來講,Linux這個詞本身只表示Linux內核,但在實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且使用GNU工程各種工具和數據庫的操作系統(也被稱為GNU/Linux)。通常情況下,Linux被打包成供桌上型電腦和服務器使用的Linux發行版本。一些流行的主流Linux發行版本,包括Debian(及其衍生版本Ubuntu),Fedora和openSUSE等。Linux得名于電腦業余愛好者Linus Torvalds。
而不是如百度百科所講的~~Linux操作系統是UNIX操作系統的一種克隆系統。它誕生于1991年的 Linux桌面[1]10 月5日(這是第一次正式向外公布的時間)。以后借助于Internet網絡,并通過全世界各地計算機愛好者的共同努力,已成為今天世界上使用最多的一種UNIX類操作系統,并且使用人數還在迅猛增長。~~
Linux只是個內核,而不是操作系統,所以在這我們再理解一下操作系統是由什么組成的。
操作系統操作系統(英語:Operating
System,簡稱OS)是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操作系統需要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網絡與管理文件系統等基本事務。操作系統也提供一個讓用戶與系統交互的操作界面。
操作系統的型態非常多樣,不同機器安裝的操作系統可從簡單到復雜,可從手機的嵌入式系統到超級計算機的大型操作系統。許多操作系統制造者對它涵蓋范疇的定義也不盡一致,例如有些操作系統集成了圖形用戶界面(GUI),而有些僅使用命令行界面(CLI),而將GUI視為一種非必要的應用程序。
操作系統位于底層硬件與用戶之間,是兩者溝通的橋梁。用戶可以通過操作系統的用戶界面,輸入命令。操作系統則對命令進行解釋,驅動硬件設備,實現用戶要求。以現代標準而言,一個標準PC的操作系統應該提供以下的功能:
進程管理(Processing management)
內存管理(Memory management)
文件系統(File system)
網絡通信(Networking)
安全機制(Security)
用戶界面(User interface)
驅動程序(Device drivers)
而讓我們來看一下兩者之間的不同之處,這是一張linux的架構圖我們可以發現內核只是位于底層。
Linux架構圖 用戶模式應用程序(sh、vi、OpenOffice.org等)
復雜庫(KDE、glib等)
簡單庫(opendbm、sin等)
C庫(open、fopen、socket、exec、calloc等)
內核模式系統中斷、調用、錯誤等軟硬件消息
內核(驅動程序、進程、網絡、內存管理等)
硬件(處理器、內存、各種設備)
我們可以發現,由linux內核+shell可以構成一個操作系統,而linux本身只是個內核,也就是圖中的內核模式,負責控制系統的這些部分。也就是我們可以發現,Linux內核構成了一個操作系統除用戶界面以外的部分,而shell就是這最后的用戶界面。
而linux內核以外的部分就是由GNU計劃構成的。
ShellShell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行。
實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令并且把它們送到內核。不僅如此,Shell有自己的編程語言用于對命令的編輯,它允許用戶編寫由shell命令組成的程序。Shell編程語言具有普通編程語言的很多特點,比如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果
bash 是一個為GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again SHell — 這是關于Bourne shell(sh)的一個雙關語(Bourne again / born
again)。Bourne shell是一個早期的重要shell,由史蒂夫·伯恩在1978年前后編寫,并同Version 7 Unix一起發布。bash則在1987年由布萊恩·福克斯創造。在1990年,Chet Ramey成為了主要的維護者。
shell將會是我們在GNU/linux中經常用到的經常有到的工具之一,用來操作計算機用的。在遷移到linux之前我們可以試用cygwin來進行模擬:
Cygwin是許多自由軟件的集合,最初由Cygnus Solutions開發,用于各種版本的Microsoft Windows上,運行UNIX類系統。
GCCGCC(GNU Compiler Collection,GNU編譯器套裝),是一套由GNU開發的編程語言編譯器。它是一套以GPL及LGPL許可證所發行的自由軟件,也是GNU計劃的關鍵部分,亦是自由的類Unix及蘋果電腦Mac OS X 操作系統的標準編譯器。GCC(特別是其中的C語言編譯器)也常被認為是跨平臺編譯器的事實標準。
GCC原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC很快地擴展,變得可處理C++。之后也變得可處理Fortran、Pascal、Objective-C、Java、Ada,以及Go與其他語言。
c#includemain() { printf("Hello world "); }
bash~/temp/free> gcc hello.c -o hello hello.c:2:1: warning: type specifier missing, defaults to "int" [-Wimplicit-int] main() ^~~~ 1 warning generated. ~/temp/free> ./hello Hello world
同shell一樣,對于GNU/linux系統而言,GCC的作用也是無可取代的。當然如果只是一般用途的話,GCC對于一般用戶可能沒用,但是在些GNU/Linux系統上,我們可能就需要自己編譯源碼成二進制文件,而沒有軟件包,因而其重要性是不言而喻的。自然的如果我們自己動手編譯GNU/Linux操作系統的話,我們會理解其的重要意義。有興趣的同學可以試一下:Linux
From Scratch (LFS)。
最后,當我們構成以上的那些之后,我們就需要一個引導程序,以便使系統啟動,引導進內核。
啟動程序(bootloader)于電腦或其他計算機應用上,是指引導操作系統啟動的程序。啟動程序啟動方式與程序視應用機型種類。例如在普通PC上,引導程序通常分為兩部分:第一階段引導程序位于主引導記錄,用于引導位于某個分區上的第二階段引導程序,如NTLDR、GNU
GRUB等。
BIOS
開機完成后,bootloader就接手初始化硬件設備、創建存儲器空間的映射,以便為操作系統內核準備好
正確的軟硬件環境。
簡單的bootloader的虛擬匯編碼,如其后的八個指令:
0: 將P暫存器的值設為8
1: 檢查紙帶({paper tape)讀取器,是否已經可以進行讀取
2: 如果還不能進行讀取, 跳至1
3: 從紙帶讀取器,讀取一byte至累加器
4: 如為帶子結尾,跳至8
5: 將暫存器的值,存儲至P暫存器中的數值所指定的地址
6: 增加P暫存器的值
7: 跳至1
但是隨著計算機操作系統越來越復雜,位于MBR的空間已經放不下引導操作系統的代碼,于是就有了第二階段的引導程序,而MBR中代碼的功能也從直接引導操作系統變成了引導第二階段的引導程序。
通常在一個GNU/Linux系統中選用GNUGRUB做為引導程序,例如Ubuntu就是用GRUB2。
GNU GRUB(簡稱“GRUB”)是一個來自GNU項目的啟動引導程序。GRUB是多啟動規范的實現,它允許用戶可以在計算機內同時擁有多個操作系統,并在計算機啟動時選擇希望運行的操作系統。GRUB可用于選擇操作系統分區上的不同內核,也可用于向這些內核傳遞啟動參數。
GNU GRUB的前身為Grand Unified Bootloader。它主要用于類Unix系統;同大多Linux發行版一樣,GNU系統也采用GNU GRUB作為它的啟動器。Solaris從10 1/06版開始在x86系統上也采用GNU GRUB作為啟動器。
以上也就構成了一個簡單的操作系統。
從編譯開始我們以一次編譯開始我們的Linux學習之旅。
開始之前如果你沒有用過GNU/Linux,我想你需要在虛擬機上安裝一個。
一個主流的GNU/Linux發行版,如Ubuntu,CentOS,Debian,Mint,OpenSUSE,Fedora等等。
學會如何打開shell(ps:bash,zsh,sh等等)。
或者你也可以在Windows上安裝Cygwin。
編譯Nginx1.下載這個軟件的源碼包
bashwget http://nginx.org/download/nginx-1.7.4.tar.gz
wget是一個用于下載的軟件,當然你也可以用軟件,只是用wget似乎會比圖形界面快哦。
2.解壓軟件包
bashtar -vf nginx-1.7.4.tar.gz
-vf的意思是Extract,也就是解壓,而tar則是這個解壓軟件的名字。看上去似乎比WinRAR來得復制得多,但是你可以計時一下,從下載到解壓完,和你用鼠標比哪個比較快。
3.到nginx目錄下
這里需要分兩部進行
1).列出所有文件
bashls -al drwxr-xr-x 15 fdhuang staff 510B Sep 2 13:44 nginx-1.7.4 -rw-r--r-- 1 fdhuang staff 798K Aug 5 21:55 nginx-1.7.4.tar.gz
2).到nginx-1.7.4目錄
bashcd nginx-1.7.4
4.配置nginx
一次簡單的配置如下
bash./configure
當你熟練以后,你可能和我一樣用下面的配置(注意:用下面的代碼會出錯。)
bash./configure --user=www --group=www --add-module=../ngx_pagespeed-1.8.3.4-beta --add-module=../ngx_cache_purge --prefix=/usr/local/nginx --with-pcre --with-http_spdy_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-ipv6
過程中可能會提示你其中出了多少錯誤,而這時你便可以很愉快地去用搜索引擎搜索他們。
5.make
這里就會用到GCC等等。
bashmake
6.運行
如果運行順利的話,應該可以直接
bash./objs/nginx其他
1.如果沒有wget,make,gcc等命令的時候可以用類似于下面的方法安裝,
bashsudo apt-get install gcc,make,wget
2.正常情況下一個開源項目都會有一個README,會告訴你應該如何去做。
包管理GNU/Linux最方便的東西莫過于包管理了。
引自OpenSUSE官網的說明及圖片1
Linux 發行版無非就是一堆軟件包 (package) 形式的應用程序加上整體地管理這些應用程序的工具。通常這些 Linux 發行版,包括 openSUSE,都是由成千上萬不同的軟件包構成的。
軟件包: 軟件包不止是一個文件,內含構成軟件的所有文件,包括程序本身、共享庫、開發包以及使用說明等。
元數據 (metadata) 包含于軟件包之中,包含軟件正常運行所需要的一些信息。軟件包安裝之后,其元數據就存儲于本地的軟件包數據庫之中,以用于軟件包檢索。
依賴關系 (dependencies) 是軟件包管理的一個重要方面。實際上每個軟件包都會涉及到其他的軟件包,軟件包里程序的運行需要有一個可執行的環境(要求有其他的程序、庫等),軟件包依賴關系正是用來描述這種關系的。
Linux 下的軟件包通常是以下三種格式:
tgz - tar gzip 文件。這類文件是基本的壓縮軟件包,可以容納軟件包維護者認為有用的所有的東西。此格式除本身的壓縮格式外,并沒有有關軟件包內容的標準。
deb - 此格式的軟件包常用于 Debian 系統,是標準的 Debian 軟件包格式。
rpm - 此格式由 Red Hat Linux 所創建,并經由 LSB 標準化,現已為眾多 Linux 發行版所采用,是一個優秀的軟件包格式。openSUSE 即是用此格式。更多信息可以參閱此處。
Ubuntu LNMP所以這就需要能自動解決依賴關系的軟件包管理器。軟件包管理系統就是一個工具集,為系統提供一個統一的安裝、升級、刪除軟件的方式。
在余下的章節中,我們需要去部署,需要去使用Ubuntu。如果在Windows下可以使用LAMP,但是在這里我們只說Ubuntu。開始之前你需要安裝好Ubuntu,無論是在虛擬機,還是在真機安裝,或者是Docker。
Update軟件包列表apt-get是debian,ubuntu發行版的包管理工具。apt-get update可以確保我們的軟件包列表是最新的,下面是一個簡單的更新過程。
打開Terminal或者Konsole等等之類的終端控制臺。
bashroot@70cdc7a176a5:/# sudo apt-get update Ign http://archive.ubuntu.com trusty InRelease Ign http://archive.ubuntu.com trusty-updates InRelease Ign http://archive.ubuntu.com trusty-security InRelease Ign http://archive.ubuntu.com trusty-proposed InRelease Get:1 http://archive.ubuntu.com trusty Release.gpg [933 B] Get:2 http://archive.ubuntu.com trusty-updates Release.gpg [933 B] Get:3 http://archive.ubuntu.com trusty-security Release.gpg [933 B] Get:4 http://archive.ubuntu.com trusty-proposed Release.gpg [933 B] Get:5 http://archive.ubuntu.com trusty Release [58.5 kB] Get:6 http://archive.ubuntu.com trusty-updates Release [62.0 kB] Get:7 http://archive.ubuntu.com trusty-security Release [62.0 kB] Get:8 http://archive.ubuntu.com trusty-proposed Release [209 kB] Get:9 http://archive.ubuntu.com trusty/main Sources [1335 kB] Get:10 http://archive.ubuntu.com trusty/restricted Sources [5335 B] Get:11 http://archive.ubuntu.com trusty/universe Sources [7926 kB] Get:12 http://archive.ubuntu.com trusty/main amd64 Packages [1743 kB] Get:13 http://archive.ubuntu.com trusty/restricted amd64 Packages [16.0 kB] Get:14 http://archive.ubuntu.com trusty/universe amd64 Packages [7589 kB] 64% [14 Packages 664 kB/7589 kB 9%] 58.3 kB/s 1min 58s
更新完應該會顯示:
bashFetched 20.5 MB in 5min 22s (63.6 kB/s) Reading package lists... Done安裝MySQL
安裝命令
bashsudo apt-get install mysql-server php5-mysql
過程:
bashroot@70cdc7a176a5:/# sudo apt-get install mysql-server php5-mysql Reading package lists... 0% Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18 libterm-readkey-perl libwrap0 lsof mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server-5.5 mysql-server-core-5.5 php5-common php5-json psmisc tcpd Suggested packages: libclone-perl libmldbm-perl libnet-daemon-perl libplrpc-perl libsql-statement-perl libipc-sharedcache-perl tinyca mailx php5-user-cache The following NEW packages will be installed: libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18 libterm-readkey-perl libwrap0 lsof mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5 php5-common php5-json php5-mysql psmisc tcpd 0 upgraded, 19 newly installed, 0 to remove and 12 not upgraded. Need to get 9982 kB of archives. After this operation, 99.1 MB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main libaio1 amd64 0.3.109-4 [6364 B] Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main mysql-common all 5.5.40-0ubuntu0.14.04.1 [14.1 kB] Get:3 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libmysqlclient18 amd64 5.5.40-0ubuntu0.14.04.1 [598 kB] Get:4 http://archive.ubuntu.com/ubuntu/ trusty/main libwrap0 amd64 7.6.q-25 [46.2 kB] Get:5 http://archive.ubuntu.com/ubuntu/ trusty/main libdbi-perl amd64 1.630-1 [879 kB] Get:6 http://archive.ubuntu.com/ubuntu/ trusty/main libdbd-mysql-perl amd64 4.025-1 [99.3 kB] Get:7 http://archive.ubuntu.com/ubuntu/ trusty/main libterm-readkey-perl amd64 2.31-1 [27.4 kB] Get:8 http://archive.ubuntu.com/ubuntu/ trusty-updates/main mysql-client-core-5.5 amd64 5.5.40-0ubuntu0.14.04.1 [703 kB] Get:9 http://archive.ubuntu.com/ubuntu/ trusty-updates/main mysql-client-5.5 amd64 5.5.40-0ubuntu0.14.04.1 [1466 kB] Get:10 http://archive.ubuntu.com/ubuntu/ trusty-updates/main mysql-server-core-5.5 amd64 5.5.40-0ubuntu0.14.04.1 [3215 kB] 47% [10 mysql-server-core-5.5 850 kB/3215 kB 26%] 79.9 kB/s 1min 6s
在安裝的過程中會要求你輸入數據庫密碼。(默認為空)
安裝Nginxbashecho "deb http://ppa.launchpad.net/nginx/stable/ubuntu $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/nginx-stable.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C sudo apt-get update sudo apt-get install nginx
啟動Nginx Server
bashsudo service nginx start安裝PHP
sudo apt-get install php5-fpm
安裝過程
bashroot@70cdc7a176a5:/# sudo apt-get install php5-fpm Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libsystemd-daemon0 Suggested packages: php-pear The following NEW packages will be installed: libsystemd-daemon0 php5-fpm 0 upgraded, 2 newly installed, 0 to remove and 12 not upgraded. Need to get 2201 kB of archives. After this operation, 9326 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://archive.ubuntu.com/ubuntu/ trusty-proposed/main libsystemd-daemon0 amd64 204-5ubuntu20.8 [9608 B] Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/universe php5-fpm amd64 5.5.9+dfsg-1ubuntu4.5 [2191 kB] Fetched 2201 kB in 1min 5s (33.6 kB/s) Selecting previously unselected package libsystemd-daemon0:amd64. (Reading database ... 13105 files and directories currently installed.) Preparing to unpack .../libsystemd-daemon0_204-5ubuntu20.8_amd64.deb ... Unpacking libsystemd-daemon0:amd64 (204-5ubuntu20.8) ... Selecting previously unselected package php5-fpm. Preparing to unpack .../php5-fpm_5.5.9+dfsg-1ubuntu4.5_amd64.deb ... Unpacking php5-fpm (5.5.9+dfsg-1ubuntu4.5) ... Processing triggers for ureadahead (0.100.0-16) ... Setting up libsystemd-daemon0:amd64 (204-5ubuntu20.8) ... Setting up php5-fpm (5.5.9+dfsg-1ubuntu4.5) ... Creating config file /etc/php5/fpm/php.ini with new version php5_invoke: Enable module pdo for fpm SAPI php5_invoke: Enable module pdo_mysql for fpm SAPI php5_invoke: Enable module opcache for fpm SAPI php5_invoke: Enable module json for fpm SAPI php5_invoke: Enable module mysql for fpm SAPI php5_invoke: Enable module mysqli for fpm SAPI invoke-rc.d: policy-rc.d denied execution of start. Processing triggers for libc-bin (2.19-0ubuntu6.3) ... Processing triggers for ureadahead (0.100.0-16) ...
在線查看:一步步搭建物聯網系統
圖靈-電子書版一步步搭建物聯網系統
https://zh.opensuse.org/index.php?title=%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%AE%A1%E7%90%86&variant=zh??
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39131.html
摘要:強大且什么是是一種自由和開放源碼的類操作系統內核。是一個領先的操作系統內核,世界上運算最快的臺超級電腦運行的都是基于內核的操作系統。開機完成后,就接手初始化硬件設備創建存儲器空間的映射,以便為操作系統內核準備好正確的軟硬件環境。 GNU/Linux 強大且Free showImg(http://designiot.phodal.com/images/gnu_linux.png); ...
摘要:于是我們需要在的同一文件夾下創建一個文件,在里面寫著同時我們的還需要告訴我們的瀏覽器代碼在哪里從數學出發讓我們回到第一章講述的小明的問題,從實際問題下手編程,更容易學會編程。 無處不在的Javascript Javascript現在已經無處不在了,也許你正打開的某個網站,他便可能是node.js+json+javascript+mustache.js完成的,雖然你還沒理解上面那些是什...
摘要:無處不在的三劍客這時我們終于了解了我們的三劍客,他們也就這么可以結合到一起了,是這一切的基礎。無處不在的三劍客就這樣到了這里,寫得似乎很多也很少,但是還是沒有做出來一個東西,于是我們朝著這樣一個方向前進。 無處不在的三劍客 這時我們終于了解了我們的三劍客,他們也就這么可以結合到一起了,HTML+Javascript+CSS是這一切的基礎。而我們用到的其他語言如PHP、Python、R...
閱讀 2393·2021-09-22 16:01
閱讀 3159·2021-09-22 15:41
閱讀 1174·2021-08-30 09:48
閱讀 494·2019-08-30 15:52
閱讀 3330·2019-08-30 13:57
閱讀 1717·2019-08-30 13:55
閱讀 3661·2019-08-30 11:25
閱讀 764·2019-08-29 17:25