程序員必知必會的 Linux系列 —— 服務篇

1.服務簡介和分類

1.1 運行級別

1.1.1 運行級別分類

運行級別 含義
0 關機
1 單用戶,相似於Window的安全模式,主要用於系統修復
2 不徹底多用戶,相似於字符界面,但不包含NFS(Linux和Window進行文件共享)服務
3 完整的命令行模式,就是標準的字符界面
4 系統保留未使用
5 圖形界面
6 重啓

1.1.2 查看上一個級別和當前級別

runlevel 
N 3
複製代碼

1.1.3 切換運行級別

init 5
複製代碼

1.1.4 設置默認運行級別

vi /etc/inittab
id:3:initdefault:
複製代碼

1.2 服務的分類

  • 系統開啓的服務越少,服務器就會更加穩定和安全
  • 服務安裝方式不一樣,啓動的方式也不一樣

1.2.1 服務管理的方式

  • RPM包安裝的服務,由軟件包做者指定安裝位置,獨立的服務,絕大多數服務都是獨立運行在內存中的,能夠直接響應客戶端的請求
  • 源碼包安裝的服務,由咱們用戶決定安裝位置

1.2.2 查看RPM包安裝的服務

chkconfig --list
複製代碼

1.2.3 查看源碼包安裝的服務

  • 查看自定義的安裝位置,默認爲/usr/local
  • usr=Unix System Resource 系統資源

1.2.4 啓動和自啓動

  • 啓動服務就是指讓此服務在當前系統中運行,並向客戶端提供服務
  • 服務自啓動就是指經過設置,讓此服務在開機或者重啓後隨着系統啓動而自動啓動

1.3 服務與端口

查看系統中的運行中的進程html

ps -aux
複製代碼

查看常見服務端口nginx

cat /etc/services
複製代碼

1.4 查詢系統中監聽的端口

  • netstat -tulnp
參數 含義
-t 列出tcp數據
-u 列出udp數據
-l 列出正在監聽的網絡服務
-n 用端口號來顯示服務,而非服務名
-p 列出該服務的進程ID

2. PRM包服務管理

  • RMP 是 LINUX 下的一種軟件的可執行程序,你只要安裝它就能夠了。這種軟件安裝包一般是一個RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),後綴是.rpm
  • RPM是Red Hat公司隨Redhat Linux推出了一個軟件包管理器,經過它可以更加輕鬆容易地實現軟件的安裝

2.1 rpm命令

用途 命令
安裝軟件 執行rpm -ivh rpm包名 其中i表示安裝install,v表示顯示安裝過程verbose,h表示顯示進度
升級軟件 執行rpm -Uvh rpm包名 U表示升級update
反安裝 執行rpm -e rpm包名
查詢軟件包的詳細信息 執行rpm -qpi rpm包名
查詢某個文件是屬於那個rpm包的 執行rpm -qf rpm包名
查該軟件包會向系統裏面寫入哪些文件 執行 rpm -qpl rpm包名

2.2 repo

  • repo文件是yum源(軟件倉庫)的配置文件,一般一個repo文件定義了一個或者多個軟件倉庫的細節內容,例如咱們將從哪裏下載須要安裝或者升級的軟件包,repo文件中的設置內容將被yum讀取和應用
  • 服務器端:在服務器上面存放了全部的RPM軟件包,而後以相關的功能去分析每一個RPM文件的依賴性關係,將這些數據記錄成文件存放在服務器的某特定目錄內。
  • 客戶端:若是須要安裝某個軟件時,先下載服務器上面記錄的依賴性關係文件(可經過WWW或FTP方式),經過對服務器端下載的紀錄數據進行分析,而後取得全部相關的軟件,一次所有下載下來進行安裝。
cat /etc/yum.conf
/etc/yum.repos.d
/etc/yum.repos.d/nginx.repo
複製代碼

2.3 RPM包的默認安裝位置

文件 含義
/etc 配置文件位置
/etc/init.d 啓動腳本位置
/etc/sysconfig 初始化環境配置文件位置
/var/lib 服務產生的數據放在這裏
/var/log 日誌

2.4 啓動命令

  • systemdLinux系統最新的初始化系統(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
複製代碼

2. 源碼包服務管理

  • 使用絕對路徑,調用啓動腳原本啓動。
  • 不一樣的源碼包的啓動腳本不同
  • 要經過閱讀源碼包安裝說明的方式來查看啓動的方法

2.1 安裝nginx

2.1.1 安裝依賴

yum install gcc gcc-c++ perl -y
複製代碼

2.1.2 下載源文件

2.1.2.1 PCRE
wget http://img.golderbrother.cn/pcre-8.44.tar.gz
複製代碼
2.1.2.2 zlib
wget http://img.golderbrother.cn/zlib-1.2.11.tar.gz
複製代碼
2.1.2.3 openssl
wget http://img.golderbrother.cn/openssl-1.0.2n.tar.gz
複製代碼
2.1.2.4 nginx
wget http://img.golderbrother.cn/nginx-1.10.1.tar.gz
複製代碼

2.1.3 解壓文件

mkdir /root/nginxinstall
cd  /root/nginxinstall
tar -zxvf nginx-1.10.1.tar.gz
tar -zxvf openssl-1.0.2h.tar.gz
tar -zxvf pcre-8.44.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
複製代碼

2.1.3 配置和安裝

cd 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=/root/nginxinstall/pcre-8.44 \
--with-zlib=/root/nginxinstall/zlib-1.2.11 \
--with-openssl=/root/nginxinstall/openssl-1.0.2n
make && make install

/usr/local/nginx/sbin/nginx  -t
nginx: [emerg] getpwnam("comex") failed

useadd nginx # 添加nginx用戶
vi /usr/local/nginx/conf/nginx.conf
user  nginx;
複製代碼

2.1.4 管理命令

功能 命令
啓動 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
從容中止 ps -ef grep nginx;kill -QUIT 2072
快速中止 ps -ef grep nginx;kill -TERM 2132; kill -INT 2132
強制中止 pkill -9 nginx
驗證nginx配置文件是否正確 nginx -t
重啓Nginx服務 nginx -s reload
查找當前nginx進程號 kill -HUP 進程號

2.1.5 以服務啓動service

  • Nginx啓動、關閉、從新加載腳本
  • 建立文件 etc/init.d/nginx
/etc/init.d/nginx start
#! /bin/bash

NAME=nginx
DAEMON=/usr/local/nginx/sbin/$NAME
CONFIGFILE=/usr/local/nginx/conf/$NAME.conf
PIDFILE=/usr/local/nginx/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

set -e
[ -x "$DAEMON" ] || exit 0

do_start() {
 $DAEMON -c $CONFIGFILE  || echo -n "nginx already running"
 pid=$(ps -ef | grep nginx | grep master | awk '{print $2}')
 echo $pid > "$PIDFILE"
}

do_stop() {
 kill -INT `cat $PIDFILE` || echo -n "nginx not running"
}

do_reload() {
 kill -HUP `cat $PIDFILE` || echo -n "nginx can't reload"
}

case "$1" in
 start)
 echo -n "Starting $NAME"
 do_start
 echo "."
 ;;
 stop)
 echo -n "Stopping $NAME"
 do_stop
 echo "."
 ;;
 reload|graceful)
 echo -n "Reloading configuration"
 do_reload
 echo "."
 ;;
 restart)
 echo -n "Restarting $NAME"
 do_stop
 do_start
 echo "."
 ;;
 *)
 echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
 exit 3
 ;;
esac
exit 0
複製代碼

2.1.7 chkconfig

  • 指定nginx腳本能夠被chkconfig命令管理
2.1.7.1 開機啓動
chkconfig --add nginx
chkconfig --list 
chkconfig --level 2345 nginx on 
chkconfig nginx off
複製代碼
相關文章
相關標籤/搜索