Linux安裝Nginx正確方式

本文出處https://shenyifengtk.github.io
如有轉載,請說明出處

如果你和我一樣,作爲一個苦逼的Java後臺除了實現實現一大堆項目功能,還要兼顧項目的部署,運維工作。在新的服務器上安裝新Nginx,在安裝之前看下網上的教程,面對五花八門的教程,各式各樣的安裝方法,心裏總會嘀咕什麼方式纔是最好的,或者說什麼方法纔是最適合自己的?下面我們一起來分析Nginx各種安裝方式,分別適合於那種情況。

使用系統二進制源方式安裝

在Ubuntu/Debian系

    
sudo apt-get install nginx

或者RedHat/CentOS系


sudo yum install nginx 

這種方式最簡單的,最快捷的方式,但是不是最好的方式,下面我們來說這種主要問題。

優點

  • 所有安裝二進制依賴已經處理好了,不用擔心兼容性問題,開箱即用
  • Nginx的連接配置,用戶權限這個都不用處理,已經幫你寫好這塊了
  • 不用擔心Nginx Bug維護升級問題,直接獲取最新系統就可以了
  • 卸載簡單,直接一個命令即可
  • 日誌維護簡單,自動截斷當天日誌,壓縮保存

缺點

  • 不能自主選擇安裝版本
  • 不能自主選擇編譯的模塊
  • 擴展功能變得很麻煩,需要重新編譯
  • 目類結構複雜,配置文件在/etc/下,部署文件在/var/www
  • 重啓服務,修改配置都需要root權限
  • 性能差一點編譯安裝

如果你是一個Linux新手,絕對推薦使用這中方式安裝,不用考慮編譯依賴問題,直接安裝完就可以使用。但是如果你這個服務器是用於生產環境正在開發逐步完善的過程,不推薦使用這種方式。將來可能會添加第三方模塊,到時肯定要編譯安裝(下面會說到)。在重啓服務器的時候,不要使用root用戶,而是使用sudo短暫獲取root。如果你這條服務器都是用來部署一些靜態文件,主要做一些web空間,平常主要用ftp工具部署文件,用這種方式肯定沒什麼問題的。

編譯安裝

優缺點,我就不寫了,基本就是上面的顛倒過來就可以了。使用這種方法安裝,都必須懂一點Linux編譯知識,Linux中度用戶纔可以駕馭。我看見網上大多數教程,都是將編譯依賴直接裝在/usr/local/這種方式並不好。如果將來我們要卸載這些依賴,發現非常麻煩。並不是直接在目類下直接刪除就可以完事的,有些Linux發行版本,會將安裝文件,寫入配置文件中,這些配置文件有不知道哪裏找。如果依賴版本影響到其他軟件,怎麼處理版本問題。我們只想安裝Nginx,結果延申出一大堆問題。

編譯環境準備

在開始之前,保證你的Linux準備了gcc、make、wget,g++ 這些軟件。
創建一個目類用來存放下載文件,進入目錄中下載依賴庫源文件

下載openssl主要用於ssl模塊加密,支持htps

wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz

下載pcre來實現對地址重定向,地址重寫功能和localtion指令以及正則表達式的支持

wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz

下載zlib gzip壓縮模塊


wget https://zlib.net/zlib-1.2.11.tar.gz

下載Nginx

wget http://nginx.org/download/nginx-1.17.1.tar.gz

使用tar 解壓所有的文件

ls *.tar.gz | xargs -n1 tar xzvf  
編譯選項

使用./configure設置各種Nginx參數的腳本,包括源和配置文件的路徑,編譯器選項,連接處理方法和模塊列表。該腳本通過創建編譯代碼和安裝Nginx開源所需的Makefile來完成。

參數 描述
--prefix=<PATH> Nginx安裝目錄,以及有其他配置腳本選項的路徑設置的所有相對路徑的基本位置。默認值/usr/local/nginx
--sbin-path=<PATH Nginx二進制執行文件的名稱,默認值:<prefix>/sbin/nginx
--conf-path=<PATH> Nginx配置文件的名稱。但是,您可以通過在nginx命令行上使用選項指定其他文件來始終在啓動時覆蓋此值。默認值:<prefix> conf / nginx.conf-c <FILENAME>
--pid-path=<PATH> nginx.pid文件的名稱,用於存儲nginx主進程的進程ID 。安裝後,可以使用Nginx配置文件中的pid指令更改文件名的路徑。默認值:<prefix> /logs/nginx.pid
--error-log-path=<PATH> error,warn和診斷數據的日誌文件的名稱。安裝後,可以使用Nginx配置文件中的error_log指令更改文件名。默認值:<prefix> /logs/error.log
--http-log-path=<PATH> HTTP服務器請求的主日誌文件的名稱。安裝後,始終可以使用Nginx配置文件中的access_log指令更改文件名。默認值:<prefix> /logs/access.log
--user=<NAME> Nginx運行進程的擁有者。安裝後,可以使用Nginx配置文件中的user指令更改名稱。默認:nobody
--group=name nginx運行進程的擁有者用戶組。安裝後,可以使用NGINX配置文件中的user指令更改名稱。默認值:--user選項設置的值
--with-pcre=<PATH> PCRE庫源代碼的路徑,這是位置指令和Rewrite模塊中正則表達式支持所必需的
--with-pcre-jit 使用“即時編譯”支持(pcre_jit指令)構建PCRE庫
--with-zlib=<PATH> zlib庫的源代碼路徑,Gzip模塊需要該路徑
--with-http_ssl_modul 啓用HTTPS支持
--with-http_v2_module 開啓 HTTP/2請求支持

還要太多編譯參數我就不一一列舉,有興趣的同學可以自己去
nginx官網參看

編譯安裝
./configure \
   --with-openssl=../openssl-1.0.2s \
   --with-pcre=../pcre-8.43 \
   --with-zlib=../zlib-1.2.11 \
   --with-pcre-jit --user=admin \
   --prefix=/home/admin/nginx \
   --with-http_ssl_module \
   --with-http_v2_module 

輸出以下信息,說明依賴沒問題

Configuration summary
  + using PCRE library: ../pcre-8.43
  + using OpenSSL library: ../openssl-1.0.2s
  + using zlib library: ../zlib-1.2.11
  
  nginx path prefix: "/home/admin/nginx"
  nginx binary file: "/home/admin/nginx/sbin/nginx"
  nginx modules path: "/home/admin/nginx/modules"
  nginx configuration prefix: "/home/admin/nginx/conf"
  nginx configuration file: "/home/admin/nginx/conf/nginx.conf"
  nginx pid file: "/home/admin/nginx/logs/nginx.pid"
  nginx error log file: "/home/admin/nginx/logs/error.log"
  nginx http access log file: "/home/admin/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"

編譯

make

安裝

make install

設置權限

因爲Linux設置普通用戶,不能佔用1024一下的端口,直接啓動nginx會出現權限不足的錯誤。將nginx分配給root用戶,在分配特殊權限。

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