開(kāi)發(fā)人員和管理員應(yīng)該掌握的25個(gè)Nginx命令(下)
Nginx是Linux和BSD用戶中最受歡迎的web服務(wù)器之一,因?yàn)樗哂胸S富的功能指令集和優(yōu)越的靈活性。如果您是一名Web開(kāi)發(fā)人員,那么您可能正在使用Nginx或Apache服務(wù)器。因此,深入了解Nginx如何從命令行工作是很重要的。
幸運(yùn)的是,您可以通過(guò)掌握一些Nginx命令來(lái)提高DevOps技能。我們的編輯為您選擇了這些經(jīng)常使用的命令,并為啟動(dòng)Linux管理員提供了全面的討論。那就請(qǐng)你閱讀本文以了解關(guān)于這些命令的更多信息。
適用于Linux管理員的Nginx命令
與許多Web服務(wù)器不同,Nginx僅使用配置文件處理服務(wù)器配置。因此,您可以利用的命令行參數(shù)很少。這很有用,因?yàn)楣芾韱T可以快速找到他們要找的命令。下面是一些廣泛使用的Nginx命令,您現(xiàn)在就可以使用它們。
17. 找到Nginx
PIDPID或進(jìn)程ID是唯一的數(shù)字,用于區(qū)分Linux和類Unix系統(tǒng)上的進(jìn)程。我們可以使用適當(dāng)?shù)腜ID將各種信號(hào)發(fā)送到Nginx服務(wù)器??梢允褂靡韵旅钪徽业酱薖ID。
- [linuxidc@localhost ~/www.linuxidc.com]$ps aux | grep [n]ginx
- root 3834 0.0 0.0 117740 2188 ? Ss 05:01 0:00 nginx: master process /usr/sbin/nginx
- nginx 3835 0.0 0.2 148772 7704 ? S 05:01 0:00 nginx: worker process
- [linuxidc@localhost ~/www.linuxidc.com]$pgrep nginx
- 3834
- 3835
- [linuxidc@localhost ~/www.linuxidc.com]$cat /run/nginx.pid
- 3834
因此,我們可以將pgrep或vanilla grep命令與ps結(jié)合使用。
18. 查找日志文件
日志文件包含許多對(duì)系統(tǒng)管理員和開(kāi)發(fā)人員而言有價(jià)值的信息。Nginx有兩個(gè)默認(rèn)的日志文件,由access.log和error.log文檔組成。這些位于/var/log,可以使用以下命令查看。
- [root@localhost /home/linuxidc/www.linuxidc.com]$ls /var/log/nginx/*.log
- /var/log/nginx/access.log /var/log/nginx/error.log
現(xiàn)在您應(yīng)該看到上面提到的那些日志文件。顧名思義,access.log包含有關(guān)您的網(wǎng)站訪問(wèn)者的信息,而error.log包含有關(guān)錯(cuò)誤配置的警告/詳細(xì)信息。但是,您需要先從Nginx配置文件中啟用這兩個(gè)日志,然后才能使用它們。
19. 設(shè)置虛擬主機(jī)
虛擬主機(jī)允許服務(wù)器管理員在一臺(tái)服務(wù)器計(jì)算機(jī)上運(yùn)行多個(gè)網(wǎng)站。這通常很有用,因?yàn)槟梢怨蚕砟挠?jì)算過(guò)程以同時(shí)運(yùn)行多個(gè)站點(diǎn)。但是,術(shù)語(yǔ)虛擬主機(jī)通常與Apache服務(wù)器關(guān)聯(lián)。在Nginx世界中,它們被稱為“ 服務(wù)器塊 ”。
- [linuxidc@localhost ~/www.linuxidc.com]$ sudo ln -s /etc/nginx/sites-available/linuxidc.com /etc/nginx/sites-enabled/linuxidc.com
您可以使用此簡(jiǎn)單的符號(hào)鏈接輕松地在Nginx服務(wù)器上啟用虛擬主機(jī)。如果要禁用虛擬主機(jī),只需刪除符號(hào)鏈接。
20. 查看編譯的Nginx模塊
正如您在以前的Nginx命令中看到的那樣,在安裝守護(hù)程序時(shí),還會(huì)安裝一些基本模塊。我們可以使用以下命令輕松查看這些Nginx模塊。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo 2>&1 nginx -V | tr -- - '\n' | grep _module
該命令利用了幾個(gè)Linux命令行工具,并過(guò)濾掉了不相關(guān)的信息以僅顯示模塊。由于Nginx有很多模塊,因此該命令對(duì)于檢查為服務(wù)器編譯了哪些模塊很有用。
21. 啟用/禁用Nginx服務(wù)
啟用Nginx服務(wù)可以使服務(wù)器在啟動(dòng)期間自動(dòng)啟動(dòng)。這對(duì)于專用服務(wù)器至關(guān)重要,因?yàn)榉駝t,用戶請(qǐng)求可能會(huì)中斷。我們可以使用以下命令輕松地使Nginx自動(dòng)啟動(dòng)。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo service nginx enable # System V Init
- [linuxidc@localhost ~/www.linuxidc.com]$sudo systemctl enable nginx # 基于systemd系統(tǒng)
基于systemd系統(tǒng)這些簡(jiǎn)單但有效的命令將確保盡可能減少服務(wù)器停機(jī)時(shí)間。您也可以根據(jù)需要禁用自動(dòng)啟動(dòng)。只需使用以下命令之一。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo update-rc.d -f nginx disable
- [linuxidc@localhost ~/www.linuxidc.com]$sudo systemctl disable nginx
22、即時(shí)升級(jí)Nginx
Nginx允許管理員即時(shí)升級(jí)二進(jìn)制文件和/或配置文件。這意味著您的客戶端請(qǐng)求不會(huì)由于服務(wù)器升級(jí)而中斷。為此,首先,我們需要找到主Nginx進(jìn)程的PID。我們可以使用已經(jīng)演示過(guò)的簡(jiǎn)單命令來(lái)實(shí)現(xiàn)。
- [linuxidc@localhost ~/www.linuxidc.com]$cat /run/nginx.pid
新的Nginx二進(jìn)制文件應(yīng)該已經(jīng)準(zhǔn)備就緒。通過(guò)以下命令生成一組新的Nginx主/工作進(jìn)程,這些進(jìn)程使用新的二進(jìn)制文件。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s USR2 `cat /run/nginx.pid`
現(xiàn)在,使用以下命令殺死第一個(gè)主進(jìn)程使用的輔助進(jìn)程。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s WINCH `cat /run/nginx.pid.oldbin`
通過(guò)殺死舊的主進(jìn)程來(lái)跟蹤它。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s QUIT `cat /run/nginx.pid.oldbin`
23. 在Chroot Jail中設(shè)置Nginx
Nginx服務(wù)器的Chroot Jail將在可能發(fā)生入侵的情況下提供額外的安全保護(hù)。管理員經(jīng)常使用這種技術(shù)來(lái)確保其服務(wù)器在Linux文件系統(tǒng)的一小部分中是隔離的和安全的。使用以下命令在Chroot Jail中設(shè)置Nginx服務(wù)器。
- # D=/nginx
- # mkdir -p $D
- # mkdir -p $D/etc
- # mkdir -p $D/dev
- # mkdir -p $D/var
- # mkdir -p $D/usr
- # mkdir -p $D/usr/local/nginx
- # mkdir -p $D/tmp
- # chmod 1777 $D/tmp
- # mkdir -p $D/var/tmp
- # chmod 1777 $D/var/tmp
- # mkdir -p $D/lib64
- # ls -l /dev/{null,random,urandom}
- # /bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx
您需要以超級(jí)用戶身份運(yùn)行它們?,F(xiàn)在,使用以下命令找出共享庫(kù)。
- # ldd /usr/local/nginx/sbin/nginx
如下所示,一一復(fù)制所有庫(kù)。
- # cp /lib64/libpcre.so.0 $D/lib64
您還需要復(fù)制/ etc和其他一些目錄。
- # cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc
- # cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc
您的Chroot Jail現(xiàn)在已準(zhǔn)備好接受Nginx。只需殺死舊服務(wù),然后使用下一條命令啟動(dòng)新服務(wù)即可。
- # /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t
24. 在Docker中運(yùn)行Nginx
Docker容器由于其靈活性和強(qiáng)大的性能而變得非常流行。您可以從Docker容器中輕松創(chuàng)建和運(yùn)行Nginx Web服務(wù)器。下一條命令將提取官方Nginx映像,并使用默認(rèn)配置創(chuàng)建服務(wù)器實(shí)例。
- [root@localhost /home/linuxidc/www.linuxidc.com]$docker run --name nginx-server -P -d nginx
- Unable to find image 'nginx:latest' locally
- latest: Pulling from library/nginx
- 123275d6e508: Pull complete
- 6cd6a943ce27: Pull complete
- a50b5ac4a7fb: Pull complete
- Digest: sha256:d81f010955749350ef31a119fb94b180fde8b2f157da351ff5667ae037968b28
- Status: Downloaded newer image for nginx:latest
- b235541342e380c9e57aad547d52292da89e2c26d9cf6a1548d568a4073136ed
您可以使用以下簡(jiǎn)單命令維護(hù)持久性存儲(chǔ)。
- sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \
- -v /var/nginx/conf:/etc/nginx:ro -P -d nginx
25. 在LXD內(nèi)運(yùn)行Nginx
LXD被譽(yù)為下一代Linux容器,并提供了一系列驚人的功能。您還可以通過(guò)LXD容器使用Nginx??匆幌乱韵掠糜贚XD的Nginx命令。
- $ sudo lxc launch ubuntu:18.04 nginx-server
- $ sudo lxc exec nginx-server -- sudo --user ubuntu --login
- $ sudo apt update
- $ sudo apt install -y nginx
- $ sudo systemctl reload nginx
首先,我們創(chuàng)建了一個(gè)名為nginx-server的容器,然后在該容器中啟動(dòng)了一個(gè)shell。然后,我們更新了軟件包列表,并在該容器中安裝了Nginx Web服務(wù)器。最后一條命令只是重新加載服務(wù)器。
總結(jié)
Nginx提供了許多令人驚訝的功能,我們不僅介紹了基本的命令,而且還介紹了一些高級(jí)的、更強(qiáng)大的命令行技巧。您一旦你習(xí)慣了這些命令,那么你對(duì)Nginx技能的掌握就更上一層樓。