主頁 > 作業系統 > Linux上安裝nginx

Linux上安裝nginx

2020-10-05 07:32:01 作業系統

環境:centos7   nginx1.16.1(原始碼安裝)

一、下載nginx原始碼包

  地址:http://nginx.org/en/download.html

  Mainline version(主線版本)Stable version(穩定版本)Legacy versions(傳統老版本)

  下載穩定版:nginx-1.16.1.tar.gz

二、安裝相關依賴

  gcc  gcc-c++  zlib  zlib-devel  openssl  openssl-devel  pcre  pcre-devel

  gcc,gcc-c++  #c,c++編譯器,用來編譯安裝

  zlib,zlib-devel  #壓縮和解壓的函式庫,網頁檔案壓縮要用到它

  openssl,openssl-devel  #網路通信安全協議庫,包含眾多的密碼演算法、公鑰基礎設施標準以及SSL協議

三、安裝Nginx

  (1).解包

  [root@izm5e8nyz28va3a786y465z src]# tar -zxvf nginx-1.16.1.tar.gz 

  (2).編譯配置(進入到解壓的檔案夾)./configure  --選項   

    ./configure  --prefix=/usr/local/nginx/  --sbin-path=/usr/local/nginx/sbin/  --conf-path=/usr/local/nginx/conf/ \
 --error-log-path=/usr/local/nginx/logs/error.log  --pid-path=/usr/local/nginx/run/nginx.pid  --http-log-path=/usr/local/nginx/logs/access.log \
 --http-client-body-temp-path=/usr/local/nginx/tmp/client/  --http-proxy-temp-path=/usr/local/nginx/tmp/proxy/ \
 --http-fastcgi-temp-path=/usr/local/nginx/tmp/fcgi/  --with-http_ssl_module  --with-http_flv_module  --with-http_gzip_static_module \
 --with-http_stub_status_module --with-http_realip_module  --with-pcre --user=nginx --group=nginx

    注意:1 若設定了用戶名,用戶組,則安裝前先創建用戶:useradd -M -s /sbin/nologin

         2 若設定了檔案路徑,則先創建相關目錄,并將目錄用戶所有者,所屬組設為配置的值,路徑是目錄則最后以'/'結尾,以免出錯,

         如 =/usr/local/nginx/conf/ 如果結尾沒/,conf會被當做檔案

    1. 路徑配置(不設定則為默認路徑)

    --prefix=/usr/local/nginx1.16.1  #nginx的安裝路徑,所有其它路徑都要依賴該選項

    --sbin-path=/usr/sbin/nginx   #指定nginx二進制檔案的路徑,不指定則:/usr/local/nginx/sbin/nginx

    --conf-path=/etc/nginx/nginx.conf  #nginx組態檔路徑,不指定則:/usr/local/nginx/conf/nginx.conf

    --error-log-path=/var/log/nginx/error.log  #nginx錯誤日志路徑,不指定則:/usr/local/nginx/logs/error.log

    --pid-path=/var/run/nginx/nginx.pid  #pid檔案路徑,不指定則:/usr/local/nginx/logs/nginx.pid

    --http-log-path=/var/log/nginx/access.log  #http訪問日志路徑

    --http-client-body-temp-path=/var/tem/nginx/client  #存盤客戶端請求主主體的臨時目錄

    --http-proxy-temp-path=/var/tem/nginx/proxy #存盤代理服務器接收資料的臨時檔案 

    --http-fastcgi-temp-path=/var/tem/nginx/fcgi  # 設定存盤HTTP fastcgi的臨時檔案的路徑 

    2.模塊配置

    --http_v2_module      #用于支持http2協議

    --with-http_ssl_module      #用于支持https協議

    --with-http_flv_module    #視頻直播模塊

    --with-http_gzip_module   #是nginx默認編譯的模塊,對網頁檔案壓縮

    --with-http_gzip_static_module   #加載gz靜態快取模塊,開啟后服務器優先回傳gz檔案    

    --with-http_stub_status_module  #http服務狀態模塊

    3. 其它功能啟用

    --with-pcre  #設定pcre庫原始碼路徑,若是yum安裝則是默認路徑不用寫,用以開啟對正則運算式支持

    --with-openssl  #啟用OpenSSL(安全套接字層密碼庫)啟用后可支持https,ssl證書

    3.用戶,用戶組配置

     --user=www  #nginx作業行程的用戶名,默認:user為  nobody;

     nobody 是系統用戶,是一個不能登陸的帳號,一個特殊用途的用戶 ID,uid<500一般都是系統ID

     --group=www   #nginx作業行程的用戶組,默認:group  nogroup

        nginx 只有一個主行程和多個作業行程,主行程主要讀取和評估組態檔正確性,以及管理作業行程

      作業行程是真正的網路請求處理的行程

   (3)編譯 

     make    

   (4)安裝

     make  install 

 

四、nginx服務控制

  1. 啟動nginx

  [root@izm5e8nyz28va3a786y465z tmp]# nginx

   nginx: [emerg] mkdir() "/var/tem/nginx/client" failed (2: No such file or directory)

  原因:缺少這個檔案夾,nobody默認用戶沒有權限穿件這個檔案夾

   創建:mkdir  -p  /var/tem/nginx/

   修改所有者:chown  nobody  /var/tem/nginx/

   之后,nginx能正常啟動

  若要訪問到nginx主頁,則需要開放80埠,或直接關閉防火墻

  關閉防火墻:(不推薦)

    1. firewall-cmd  --state  #查看防火墻狀態,running  /  no running

    2. systemctl stop firewalld.service  #關閉防火墻

    3. systemctl disable firewalld.service  #禁止開機啟動

  開放80埠:

    1. firewall-cmd --list-port  #查看開放的埠資訊

    2. firewall-cmd --query-port=80/tcp  #查看80埠是否開放

    3. firewall-cmd --zone=public --add-port=80/tcp --permanent  #開放80埠(--permanent永久生效)

    4. firewall-cmd --reload  #重啟防火墻

  2. 服務控制

    nginx指令官方檔案:https://www.nginx.com/resources/wiki/start/topics/tutorials/commandline/#upgrading-to-a-new-binary-on-the-fly

    nginx服務在運行時,會保持一個主行程和一個或多個 worker process 作業行程,可以通過給Nginx服務的主行程發送信號來控制服務

    2種發送信號的方式:

      一、nginx二進制檔案自帶的命令(信號控制,向nginx主程式發送信號,執行相應的操作)

      二、kill 命令(系統通過pid控制行程)

   nginx命令:

    注:如果沒有設定路徑,則要進入/usr/local/nginx/sbin/nginx/ 目錄后才能使用下列命令,否則無法識別nignx命令

              nginx –s  stop/start/reload/quit    #/停止/啟動/重啟/請求結束后退出

              nginx -t                #檢測組態檔是否正確 

    nginx -V            #查看編譯時配置資訊和版本號 

              nginx -v               #查看nginx版本號

              nginx -h               #查看nginx命令幫助

    nginx -p            #設定nginx安裝路徑

    nginx -c filename     #用指定的組態檔啟動Nginx服務

    nginx -g directives   #nginx啟動時執行的指令

          kill命令:kill  single  主行程號 (實際使用中多用此種方式)

    注:pid 可以通過cat  /usr/local/nginx/logs/nginx.pid  命令查看(前提設定過pid位置),nginx對linux信號的處理如下:     QUIT     #停止服務(子行程全部結束后關閉主行程)     TERM或INT  #直接停止服務(不管子行程是否結束)     HUP      #平緩重啟(不多載組態檔)     USR1       #重讀日志檔案     USR2       #平滑升級    常用組合命令:     nginx -g -c conffile  pid  #以指定組態檔,平滑重啟,若啟動失敗,則以老的組態檔啟動nginx     nginx  -tc  filename        #檢測指定nginx組態檔,并啟動     kill -QUIT $(cat /usr/local/nginx1.16.1/logs/nginx.pid)   #免去手動查詢pid           判斷nginx是否啟動的方式:       1. ps -ef |grep nginx  //查看行程串列,過濾出nginx       2.          3. nginx平滑升級的實作
   相關解釋:       平滑重啟:當WorkerMan主行程收到平滑重啟信號時,主行程會向其中一個子行程發送安全退出(讓對應行程處理完畢當前請求后才退出)信號,當這個行程     退出后,主行程會重新創建一個新的子行程(這個子行程載入了新的PHP代碼),然后主行程再次向另外一個舊的行程發送停止命令,這樣一個行程一個行程的     重啟,直到所有舊的行程全部被置換為止,(只有子行程加載的檔案支持平滑重啟)       平滑升級:在不停止nginx服務,不丟失任何請求的情況下,更新nginx版本或服務模塊,      當需要更新nginx版本,nginx模塊時,可以進行平滑升級,實作步驟如下:
    (1)用新的nginx二進制檔案(/usr/local/nginx/sbin)替換舊的     (2kill -URS2  $(cat /usr/local/nginx1.16.1/logs/nginx.pid)  #向nginx主行程發送USR2信號       nginx主行程接收到USR2信號,將nginx.pid改名為nginx.pid.oldbin,然后執行nginx啟動腳本,啟動一個新的nginx主行程和若干新作業行程     (3)kill -WINCH  $(cat /usr/local/nginx1.16.1/logs/nginx.pid.oldbin)  #優雅地結束舊行程的子行程
      nginx主行程接收到WINCH信號,讓舊行程的子行程停止接受請求,并在完成請求后退出,舊行程的請求轉到新行程,     (4)選擇使用新的nginx還是舊的nginx服務(如果新的不穩定可以退回舊的)       一段時間后,舊的子行程會全部退出,只保留舊的主行程和新nginx服務       a:選擇回到舊的nginx       kill -HUP  oldpid     #舊的主行程開啟作業行程,啟動舊的nginx服務(不會重讀組態檔)       kill -QUIT  newpid  #優雅停止新的nginx行程       當新的nginx主行程和作業行程全部停止后,nginx老的作業行程會改回原來的pid檔案,一切恢復到未升級狀態       b:選擇新的nginx行程       kill -QUIT  oldpid    #直接結束舊的nginx主行程就OK了
      注意:如果新的nginx行程和舊的nginx安裝路徑不同,nginx -p  newpath  指定新行程的啟動腳本位置后,再發送USR2信號,       

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/156780.html

標籤:Linux

上一篇:Shell—各種括號的用法

下一篇:Rsync實作檔案的同步

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more