《前端運維》一、Linux基礎--11服務
首先服務的概念,對於linux伺服器來說,其中大多數的軟體都算是服務,比如nginx、mysql、Jenkins等等。下面我們就來學習一下linux中有關服務的一些內容。
一、服務簡介和分類
1、執行級別
執行的級別有以下幾種分類:
執行級別 | 含義 |
---|---|
0 | 關機 |
1 | 單使用者,類似於Window的安全模式,主要用於系統修復 |
2 | 不完全多使用者,類似於字元介面,但不包含NFS(Linux和Window進行檔案共享)服務 |
3 | 完整的命令列模式,就是標準的字元介面 |
4 | 系統保留未使用 |
5 | 圖形介面 |
6 | 重啟 |
- runlevel,檢視當前的執行級別。
- init [執行級別],切換執行級別。
- 設定預設執行級別,vi /etc/inittab然後新增,id:3:initdefault:。即可設定預設執行級別。
2、服務的分類
首先,系統開啟的服務越少,那麼伺服器就會更加穩定和安全。服務的安裝方式不同,啟動的方式也有差異。通常服務的管理方式有兩種:
-
RPM包
安裝的服務,由軟體包作者指定安裝位置,獨立的服務,絕大多數服務都是獨立執行在記憶體中的,可以直接響應客戶端的請求 -
原始碼包
安裝的服務,由我們使用者決定安裝位置
然後,我們可以通過不同的方式檢視包安裝的位置:
- 檢視RPM包安裝的位置,可以通過chkconfig --list命令列出所有服務的情況,當然chkconfig的用處可不僅僅如此。
- 原始碼包的安裝,預設自定義的安裝位置為
/usr/local,可以檢視該檔案獲取原始碼包的資訊。
3、服務與埠
- ps -aux,檢視系統中正在執行的程序
- cat /etc/services,檢視常見服務埠
- netstat -tulnp,檢視系統中監聽的埠
- -t,列出tcp資料
- -u,列出udp資料
- -l,列出正在監聽的網路服務
- -n,用埠號來顯示服務,而不是服務名
- -p,列出該服務的程序id
二、RPM包服務管理
RMP 是 LINUX 下的一種軟體的可執行程式,你只要安裝它就可以了。這種軟體安裝包通常是一個RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),字尾是.rpm。
RPM是Red Hat公司隨Redhat Linux推出了一個軟體包管理器,通過它能夠更加輕鬆容易地實現軟體的安裝。就是類似於node中的npm咯。
rpm的常用命令如下:
- rpm -ivh [rpm包名],安裝軟體,其中
i
表示安裝install,v
表示顯示安裝過程verbose,h
表示顯示進度。 - rpm -Uvh [rpm包名],升級軟體,U表示update。
- rpm -e [rpm包名],反安裝。
- rpm -qpi [rpm包名],查詢軟體包的詳細資訊。
- rpm -qf [rpm包名],查詢某個檔案是屬於哪個rpm包的。
- rpm -qpl [rpm包名],查該軟體包會向系統裡面寫入哪些檔案。
另外要說一下的是repo這個東西,
- repo檔案是yum源(軟體倉庫)的配置檔案,通常一個repo檔案定義了一個或者多個軟體倉庫的細節內容,例如我們將從哪裡下載需要安裝或者升級的軟體包,repo檔案中的設定內容將被yum讀取和應用
- 伺服器端:在伺服器上面存放了所有的RPM軟體包,然後以相關的功能去分析每個RPM檔案的依賴性關係,將這些資料記錄成檔案存放在伺服器的某特定目錄內。
- 客戶端:如果需要安裝某個軟體時,先下載伺服器上面記錄的依賴性關係檔案(可通過WWW或FTP方式),通過對伺服器端下載的紀錄資料進行分析,然後取得所有相關的軟體,一次全部下載下來進行安裝。
我們可以通過下面的命令來檢視repo相關的資訊:
cat /etc/yum.conf /etc/yum.repos.d /etc/yum.repos.d/nginx.repo
另外,我們來看看RPM包相關的一些檔案:
檔案 | 含義 |
---|---|
/etc | 配置檔案位置 |
/etc/init.d | 啟動指令碼位置 |
/etc/sysconfig | 初始化環境配置檔案位置 |
/var/lib | 服務產生的資料放在這裡 |
/var/log | 日誌 |
最後,
- systemd是Linux系統最新的初始化系統(init),作用是提高系統的啟動速度,儘可能啟動較少的程序,儘可能更多程序併發啟動
- systemd對應的程序管理命令是
systemctl
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm yum info nginx yum install -y nginx systemctl start nginx.service netstat -ltun | grep 80 curl http://localhost
三、原始碼包服務管理
我們要知道原始碼包安裝的時候需要使用絕對路徑,呼叫啟動指令碼來啟動。不同的原始碼包的啟動指令碼不一樣,要通過閱讀原始碼包安裝說明的方式來檢視啟動的方法。
下面我們來看下,通過原始碼包的方式,如何安裝nginx。
首先,我們要安裝一下原始碼包服務的一些依賴:
yum install gcc gcc-c++ perl -y
成功之後呢,會提示一個:
就安裝成功啦。然後,我們來建個資料夾,用來儲存稍後我們要下載下來的原始碼包:
我是在根目錄建的,理論上講,隨便你儲存在哪裡都行,但是要注意各根檔案的具體意義,不要放的太隨便,然後,我們進入到剛才我們建立的資料夾中。
然後我們通過命令,安裝以下四個原始碼包:
- PCRE,wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz。
- zlib,wge thttps://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz。
- openssl,wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2n.tar.gz。
- nginx,wget https://nginx.org/download/nginx-1.10.3.tar.gz。
當然,以上只是具體的版本,其他的版本可以去對應的官網找,這裡就不多說了。
下載完後,我們的目錄裡面是這樣的:
然後,我們要把這些壓縮包全部解壓:
tar -zxvf nginx-1.10.3.tar.gz tar -zxvf openssl-1.0.2n.tar.gz tar -zxvf pcre-8.44.tar.gz tar -zxvf zlib-1.2.11.tar.gz
挨個執行吧。解壓之後呢,我們的目錄就是這樣的了:
首先,我們進入到nginx-1.10.1的原始碼目錄裡,然後執行下面的配置程式碼:
./configure --prefix=/usr/local/nginx \ --pid-path=/usr/local/nginx/nginx.pid \ --error-log-path=/usr/local/nginx/error.log \ --http-log-path=/usr/local/nginx/access.log \ --with-http_ssl_module \ --with-mail --with-mail_ssl_module \ --with-stream --with-threads \ --user=comex --group=comexgroup \ --with-pcre=/nginx-package/pcre-8.44 \ --with-zlib=/nginx-package/zlib-1.2.11 \ --with-openssl=/nginx-package/openssl-1.0.2n
然後通過make命令,把c或c++的程式碼,編譯成我們可以使用的樣子。要編譯一段時間。
安裝完成後執行nginx命令,發現找不到nginx命令,這是因為我們沒有配置相關的命令,需要我們手動去配置。那我們來搞一下吧:
後續需要配置對應的命令,並授權給使用者,就可以啟動nginx了。