1. 程式人生 > 其它 >《前端運維》一、Linux基礎--11服務

《前端運維》一、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

成功之後呢,會提示一個:

 就安裝成功啦。然後,我們來建個資料夾,用來儲存稍後我們要下載下來的原始碼包:

 我是在根目錄建的,理論上講,隨便你儲存在哪裡都行,但是要注意各根檔案的具體意義,不要放的太隨便,然後,我們進入到剛才我們建立的資料夾中。

然後我們通過命令,安裝以下四個原始碼包:

  1. PCRE,wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
  2. zlib,wge thttps://sourceforge.net/projects/libpng/files/zlib/1.2.11/zlib-1.2.11.tar.gz
  3. openssl,wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2n.tar.gz
  4. 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了。