開發人員和管理員必須掌握的Nginx命令

導讀 Nginx是Linux和BSD用戶中最受歡迎的web服務器之一,因爲它具有豐富的功能指令集和優越的靈活性。如果您是一名Web開發人員,那麼您可能正在使用Nginx或Apache服務器。

因此,深入瞭解Nginx如何從命令行工作是很重要的。幸運的是,您可以通過掌握一些Nginx命令來提高DevOps技能。我們的編輯爲您選擇了這些經常使用的命令,併爲啓動Linux管理員提供了全面的討論。那就請你閱讀本文以瞭解關於這些命令的更多信息。

開發人員和管理員必須掌握的Nginx命令開發人員和管理員必須掌握的Nginx命令

 

適用於Linux管理員的Nginx命令

 

與許多Web服務器不同,Nginx僅使用配置文件處理服務器配置。因此,您可以利用的命令行參數很少。這很有用,因爲管理員可以快速找到他們要找的命令。下面是一些廣泛使用的Nginx命令,您現在就可以使用它們。

 

找到Nginx PID

 

PID或進程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

開發人員和管理員必須掌握的Nginx命令開發人員和管理員必須掌握的Nginx命令

 

查找日誌文件

 

日誌文件包含許多對系統管理員和開發人員而言有價值的信息。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

開發人員和管理員必須掌握的Nginx命令開發人員和管理員必須掌握的Nginx命令

現在您應該看到上面提到的那些日誌文件。顧名思義,access.log包含有關您的網站訪問者的信息,而error.log包含有關錯誤配置的警告/詳細信息。但是,您需要先從Nginx配置文件中啓用這兩個日誌,然後才能使用它們。

 

設置虛擬主機

 

虛擬主機允許服務器管理員在一臺服務器計算機上運行多個網站。這通常很有用,因爲您可以共享您的計算過程以同時運行多個站點。但是,術語虛擬主機通常與Apache服務器關聯。在Nginx世界中,它們被稱爲“ 服務器塊 ”。

[linuxidc@localhost ~/www.linuxidc.com]$ sudo ln -s /etc/nginx/sites-available/linuxidc.com /etc/nginx/sites-enabled/linuxidc.com

您可以使用此簡單的符號鏈接輕鬆地在Nginx服務器上啓用虛擬主機。如果要禁用虛擬主機,只需刪除符號鏈接。

查看編譯的Nginx模塊

正如您在以前的Nginx命令中看到的那樣,在安裝守護程序時,還會安裝一些基本模塊。我們可以使用以下命令輕鬆查看這些Nginx模塊。

[linuxidc@localhost ~/www.linuxidc.com]$sudo 2>&1 nginx -V | tr -- - '\n' | grep _module

開發人員和管理員必須掌握的Nginx命令開發人員和管理員必須掌握的Nginx命令

該命令利用了幾個Linux命令行工具,並過濾掉了不相關的信息以僅顯示模塊。由於Nginx有很多模塊,因此該命令對於檢查爲服務器編譯了哪些模塊很有用。

 

啓用/禁用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系統

這些簡單但有效的命令將確保儘可能減少服務器停機時間。您也可以根據需要禁用自動啓動。只需使用以下命令之一。

[linuxidc@localhost ~/www.linuxidc.com]$sudo update-rc.d -f nginx disable
[linuxidc@localhost ~/www.linuxidc.com]$sudo systemctl disable nginx

即時升級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`

在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

在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

開發人員和管理員必須掌握的Nginx命令開發人員和管理員必須掌握的Nginx命令

您可以使用以下簡單命令維護持久性存儲。

sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \

-v /var/nginx/conf:/etc/nginx:ro -P -d nginx

在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命令,你也可以獲得極大的信心。這就是爲什麼我們冒昧地向你們展示這些令人敬畏的命令。我們不僅介紹了基本的命令,而且還介紹了一些高級的、更強大的命令行技巧。希望您一旦你習慣了這些命令,那麼你對Nginx技能的掌握就更上一層樓。

原文來自:https://www.linuxprobe.com/nginx-command-admin.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章