開發人員和管理員應該掌握的25個Nginx命令(下)
Nginx是Linux和BSD用戶中最受歡迎的web服務器之一,因為它具有豐富的功能指令集和優越的靈活性。如果您是一名Web開發人員,那么您可能正在使用Nginx或Apache服務器。因此,深入了解Nginx如何從命令行工作是很重要的。
幸運的是,您可以通過掌握一些Nginx命令來提高DevOps技能。我們的編輯為您選擇了這些經常使用的命令,并為啟動Linux管理員提供了全面的討論。那就請你閱讀本文以了解關于這些命令的更多信息。
適用于Linux管理員的Nginx命令
與許多Web服務器不同,Nginx僅使用配置文件處理服務器配置。因此,您可以利用的命令行參數很少。這很有用,因為管理員可以快速找到他們要找的命令。下面是一些廣泛使用的Nginx命令,您現在就可以使用它們。
17. 找到Nginx
PIDPID或進程ID是唯一的數字,用于區分Linux和類Unix系統上的進程。我們可以使用適當的PID將各種信號發送到Nginx服務器。可以使用以下命令之一找到此PID。
- [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結合使用。
18. 查找日志文件
日志文件包含許多對系統管理員和開發人員而言有價值的信息。Nginx有兩個默認的日志文件,由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
現在您應該看到上面提到的那些日志文件。顧名思義,access.log包含有關您的網站訪問者的信息,而error.log包含有關錯誤配置的警告/詳細信息。但是,您需要先從Nginx配置文件中啟用這兩個日志,然后才能使用它們。
19. 設置虛擬主機
虛擬主機允許服務器管理員在一臺服務器計算機上運行多個網站。這通常很有用,因為您可以共享您的計算過程以同時運行多個站點。但是,術語虛擬主機通常與Apache服務器關聯。在Nginx世界中,它們被稱為“ 服務器塊 ”。
- [linuxidc@localhost ~/www.linuxidc.com]$ sudo ln -s /etc/nginx/sites-available/linuxidc.com /etc/nginx/sites-enabled/linuxidc.com
您可以使用此簡單的符號鏈接輕松地在Nginx服務器上啟用虛擬主機。如果要禁用虛擬主機,只需刪除符號鏈接。
20. 查看編譯的Nginx模塊
正如您在以前的Nginx命令中看到的那樣,在安裝守護程序時,還會安裝一些基本模塊。我們可以使用以下命令輕松查看這些Nginx模塊。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo 2>&1 nginx -V | tr -- - '\n' | grep _module
該命令利用了幾個Linux命令行工具,并過濾掉了不相關的信息以僅顯示模塊。由于Nginx有很多模塊,因此該命令對于檢查為服務器編譯了哪些模塊很有用。
21. 啟用/禁用Nginx服務
啟用Nginx服務可以使服務器在啟動期間自動啟動。這對于專用服務器至關重要,因為否則,用戶請求可能會中斷。我們可以使用以下命令輕松地使Nginx自動啟動。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo service nginx enable # System V Init
- [linuxidc@localhost ~/www.linuxidc.com]$sudo systemctl enable nginx # 基于systemd系統
基于systemd系統這些簡單但有效的命令將確保盡可能減少服務器停機時間。您也可以根據需要禁用自動啟動。只需使用以下命令之一。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo update-rc.d -f nginx disable
- [linuxidc@localhost ~/www.linuxidc.com]$sudo systemctl disable nginx
22、即時升級Nginx
Nginx允許管理員即時升級二進制文件和/或配置文件。這意味著您的客戶端請求不會由于服務器升級而中斷。為此,首先,我們需要找到主Nginx進程的PID。我們可以使用已經演示過的簡單命令來實現。
- [linuxidc@localhost ~/www.linuxidc.com]$cat /run/nginx.pid
新的Nginx二進制文件應該已經準備就緒。通過以下命令生成一組新的Nginx主/工作進程,這些進程使用新的二進制文件。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s USR2 `cat /run/nginx.pid`
現在,使用以下命令殺死第一個主進程使用的輔助進程。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s WINCH `cat /run/nginx.pid.oldbin`
通過殺死舊的主進程來跟蹤它。
- [linuxidc@localhost ~/www.linuxidc.com]$sudo kill -s QUIT `cat /run/nginx.pid.oldbin`
23. 在Chroot Jail中設置Nginx
Nginx服務器的Chroot Jail將在可能發生入侵的情況下提供額外的安全保護。管理員經常使用這種技術來確保其服務器在Linux文件系統的一小部分中是隔離的和安全的。使用以下命令在Chroot Jail中設置Nginx服務器。
- # 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
您需要以超級用戶身份運行它們。現在,使用以下命令找出共享庫。
- # ldd /usr/local/nginx/sbin/nginx
如下所示,一一復制所有庫。
- # cp /lib64/libpcre.so.0 $D/lib64
您還需要復制/ 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現在已準備好接受Nginx。只需殺死舊服務,然后使用下一條命令啟動新服務即可。
- # /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t
24. 在Docker中運行Nginx
Docker容器由于其靈活性和強大的性能而變得非常流行。您可以從Docker容器中輕松創建和運行Nginx Web服務器。下一條命令將提取官方Nginx映像,并使用默認配置創建服務器實例。
- [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
您可以使用以下簡單命令維護持久性存儲。
- 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內運行Nginx
LXD被譽為下一代Linux容器,并提供了一系列驚人的功能。您還可以通過LXD容器使用Nginx。看一下以下用于LXD的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
首先,我們創建了一個名為nginx-server的容器,然后在該容器中啟動了一個shell。然后,我們更新了軟件包列表,并在該容器中安裝了Nginx Web服務器。最后一條命令只是重新加載服務器。
總結
Nginx提供了許多令人驚訝的功能,我們不僅介紹了基本的命令,而且還介紹了一些高級的、更強大的命令行技巧。您一旦你習慣了這些命令,那么你對Nginx技能的掌握就更上一層樓。