源碼安裝
以Nginx為例:
1.準(zhǔn)備編譯環(huán)境
yum -y groupinstall "Development Tools" 安裝開發(fā)工具包
2.解決軟件自身依賴
yum -y install pcre pcre-devel zlib-devel openssl-devel 下載軟件依賴
3.下載并解壓
wget http://nginx.org/download/nginx-1.16.0.tar.gz 在線到該網(wǎng)址下載nginx,得到nginx.tar.gz
tar -xf nginx.tar.gz -C /usr/loacl/src/ 將該包解到該目錄
4.進(jìn)行配置
./configure \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-pcre 安裝路徑缴啡,user,group等的配置
5.編譯安裝
make && make install
6.啟動nginx
/usr/local/nginx/sbin/nginx
7.遇到端口被占用的問題時(shí)
vim /usr/local/nginx/conf/nginx.conf
listen 80 =====> 8000 將監(jiān)聽端口80改為8000
系統(tǒng)服務(wù)
jobs -l 查看后臺進(jìn)程進(jìn)程號與工作號
echo $$ 查看當(dāng)前bash的進(jìn)程號
ctrl+z 放到后臺并停止
bg %1 在后臺執(zhí)行
fg %1 拿到前臺 (1為工作號)
sh a.sh & 直接在后臺工作
daemon 守護(hù)進(jìn)程
管理長期存放于內(nèi)存中服務(wù)的進(jìn)程叫守護(hù)進(jìn)程刹帕,在 CentOS7中是systemd,CentOS5/6是init
init的執(zhí)行等級:
0 關(guān)機(jī)
1 單用戶模式(root)
3 帶網(wǎng)絡(luò)服務(wù)的多用戶純文本模式
5 圖形界面
6 重啟
daemon的配置文件存放目錄
/usr/lib/systemd/system/
每個(gè)服務(wù)最主要的啟動腳本設(shè)置禁灼,有點(diǎn)類似以前的 /etc/init.d 下面的文件
/run/systemd/system/
系統(tǒng)執(zhí)行過程中所產(chǎn)生的服務(wù)腳本誉己,這些腳本的優(yōu)先序要比 /usr/lib/systemd/system/ 高
/etc/systemd/system/
管理員依據(jù)主機(jī)系統(tǒng)的需求所創(chuàng)建的執(zhí)行腳本衣盾,其實(shí)這個(gè)目錄有點(diǎn)像以前 /etc/rc.d/rc5.d/Sxx 之類的功能拾酝!執(zhí)行優(yōu)先序又比 /run/systemd/system/ 高
systemd服務(wù)類型
systemd 的 unit 類型分類說明
一個(gè)服務(wù)執(zhí)行的腳本就成為一個(gè) unit (服務(wù)單位)
通過擴(kuò)展名區(qū)分 unit 的類型
.service 一般服務(wù)類型 (service unit)
主要是系統(tǒng)服務(wù)劲绪,包括服務(wù)器本身所需要的本機(jī)服務(wù)以及網(wǎng)絡(luò)服務(wù)都是男窟!比較經(jīng)常被使用到的服務(wù)大多是這種類型盆赤! 所以,這也是最常見的類型了
.socket 內(nèi)部程序數(shù)據(jù)交換的 socket 服務(wù) (socket unit)
主要是 IPC (Inter-process communication) 的傳輸訊息 socket file 功能歉眷。 一般用于本機(jī)服務(wù)比較多牺六,例如我們的圖形界面很多的軟件都是通過 socket 來進(jìn)行本機(jī)程序數(shù)據(jù)交換的行為
.target 執(zhí)行環(huán)境類型 (target unit)
其實(shí)是一群 unit 的集合,例如 multi-user.target 其實(shí)就是一堆服務(wù)的集合~也就是說汗捡, 選擇執(zhí)行 multi-user.target 就是執(zhí)行一堆其他 .service 或/及 .socket 之類的服務(wù)
.mount .automount 文件系統(tǒng)掛載相關(guān)的服務(wù) (automount unit / mount unit)
例如來自網(wǎng)絡(luò)的自動掛載淑际、NFS 文件系統(tǒng)掛載等與文件系統(tǒng)相關(guān)性較高的程序管理
.path 偵測特定文件或目錄類型 (path unit)
某些服務(wù)需要偵測某些特定的目錄來提供隊(duì)列服務(wù),例如最常見的打印服務(wù)凉唐,就是通過偵測打印隊(duì)列目錄來啟動打印功能庸追! 這時(shí)就得要 .path 的服務(wù)類型支持了
.timer 循環(huán)執(zhí)行的服務(wù) (timer unit)
這個(gè)東西有點(diǎn)類似 anacrontab 喔!不過是由 systemd 主動提供的台囱,比 anacrontab 更加有彈性
但是我們是通過systemctl來管理服務(wù)的
格式: systemctl [command] [unit]
command包括:
status :查看這個(gè) unit 的狀態(tài)淡溯!
start :立刻啟動
stop :立刻停止
restart :先執(zhí)行 stop 再執(zhí)行 start 的意思
enable :設(shè)置下次開機(jī)時(shí),啟動后面接的 unit
disable :設(shè)置下次開機(jī)時(shí)簿训,不啟動后面接的 unit
reload :不關(guān)閉后面接的 unit 的情況下咱娶,重新載入配置文件,讓設(shè)置生效
服務(wù)的活動狀態(tài):
active (running):正在運(yùn)行
active (exited):僅執(zhí)行一次就正常結(jié)束的服務(wù)强品,目前并沒有任何程序在系統(tǒng)中執(zhí)行膘侮。 舉例來說,開機(jī)或者是掛載時(shí)才會進(jìn)行一次的 quotaon 功能的榛,就是這種模式G砹恕(無須常駐內(nèi)存)。
active (waiting):正在執(zhí)行當(dāng)中夫晌,不過還再等待其他的事件才能繼續(xù)處理雕薪。舉例來說,打印的隊(duì)列相關(guān)服務(wù)就是這種狀態(tài)晓淀!
inactive:這個(gè)服務(wù)目前沒有運(yùn)行的意思所袁。
關(guān)于daemon (服務(wù)) 的默認(rèn)狀態(tài)
enabled:這個(gè) daemon 將在開機(jī)時(shí)被執(zhí)行
disabled:這個(gè) daemon 在開機(jī)時(shí)不會被執(zhí)行
mask:這個(gè) daemon 無論如何都無法被啟動!因?yàn)橐呀?jīng)被強(qiáng)制注銷 (非刪除)凶掰≡镆可通過 systemctl unmask 方式改回原本狀態(tài)
static:這個(gè) daemon 不可以自己啟動 (enable 不可),不過可能會被其他的 enabled 的服務(wù)來喚醒 (相依屬性的服務(wù))
systemctl mask cups.service 強(qiáng)制注銷
systemctl unmask cups.service 取消注銷
systemctl [command] [unit.target]
command:
{
get-default :查看默認(rèn)的 target
set-default :設(shè)置后面接的 target 成為默認(rèn)的模式
isolate :切換到后面接的模式
}
unit.target:
{
graphical.target
就是文字加上圖形界面懦窘,這個(gè)項(xiàng)目已經(jīng)包含了下面的 multi-user.target 項(xiàng)目前翎!
multi-user.target
純文本模式!
rescue.target
救援模式畅涂!在無法使用 root 登陸的情況下鱼填,systemd 在開機(jī)時(shí)會多加一個(gè)額外的暫時(shí)系統(tǒng),與 你原本的系統(tǒng)無關(guān)毅戈。這時(shí)你可以取得 root 的權(quán)限來維護(hù)你的系統(tǒng)苹丸。 但是這是額外系統(tǒng),因此可能需要動到 chroot 的方式來取得你原有的系統(tǒng)苇经!自修
emergency.target
緊急處理系統(tǒng)的錯誤赘理,還是需要使用 root 登陸的情況,在無法使用 rescue.target 時(shí)扇单,可以嘗試使用這種模式商模!
shutdown.target
就是關(guān)機(jī)的流程。
getty.target
可以設(shè)置你需要幾個(gè) tty 之類的蜘澜,如果想要降低 tty 的數(shù)量施流,可以修改這個(gè)東西的配置文件!
}
head -50 /etc/services 系統(tǒng)服務(wù)和端口
添加自定義服務(wù)到 systemd
以nginx為例
1.創(chuàng)建nginx.service文件
vim /etc/systemd/system/nginx.service
2.添加自定義選項(xiàng)
[Unit]
Description=nginx
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
3.重新加載服務(wù)
systemctl daemon-reload
4.停止nginx
/usr/local/nginx/sbin/nginx -s stop
5.啟動服務(wù)
systemctl start nginx.service