導讀 | Nginx是Linux和BSD用戶中最受歡迎的web服務器之一,因爲它具有豐富的功能指令集和優越的靈活性。如果您是一名Web開發人員,那麼您可能正在使用Nginx或Apache服務器。 |
因此,深入瞭解Nginx如何從命令行工作是很重要的。幸運的是,您可以通過掌握一些Nginx命令來提高DevOps技能。我們的編輯爲您選擇了這些經常使用的命令,併爲啓動Linux管理員提供了全面的討論。那就請你閱讀本文以瞭解關於這些命令的更多信息。
適用於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有兩個默認的日誌文件,由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配置文件中啓用這兩個日誌,然後才能使用它們。
設置虛擬主機
虛擬主機允許服務器管理員在一臺服務器計算機上運行多個網站。這通常很有用,因爲您可以共享您的計算過程以同時運行多個站點。但是,術語虛擬主機通常與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
該命令利用了幾個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
您可以使用以下簡單命令維護持久性存儲。
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技能的掌握就更上一層樓。