1. 程式人生 > >Nginx之(二)Nginx安裝

Nginx之(二)Nginx安裝

首先從官網上http://nginx.org/下載最新的stable version原始碼,當前最新版本為nginx-1.10.2.tar.gz。

2.1 configure

解壓之後,會發現裡面有一個名為“configure”的檔案:

configure本身是一個Shell指令碼,中間會呼叫<nginx-source-path>/auto/目錄下別的指令碼執行各種任務。根據不同的用途,auto目錄下面的指令碼各司其職,有檢查編譯器版本的,有檢查作業系統版本的,有檢查標準庫版本的,有檢查模組依賴情況的,有關於安裝的,有關於初始化的,有關於多執行緒檢查的等等。configure作為一個總驅動,呼叫這些指令碼去生成版本資訊標頭檔案、預設被包含的模組的宣告程式碼和makefile檔案

,版本資訊標頭檔案和預設被包含的模組的宣告程式碼被放置在新建立的objs目錄下。

插段廣告,先來普及一下有關makefile的知識。

一般來說,無論是C還是C++,首先要把原始檔編譯成中間程式碼檔案,在Windows下也就是 .obj 檔案,UNIX下是 .o 檔案,即 Object File,這個動作叫做編譯(compile),每個原始檔都應該對應於一箇中間目標檔案(O檔案或是OBJ檔案)。然後再把大量的ObjectFile合成執行檔案,這個動作叫作連結(link)

編譯時,編譯器需要保證語法的正確,函式與變數的正確。對於後者,通常是需要告訴編譯器標頭檔案的所在位置(標頭檔案中應該只是宣告,而定義應該放在C/C++檔案中),只要所有的語法正確,編譯器就可以編譯出中間目標檔案。

連結時,主要是連結函式和全域性變數,所以,我們可以使用這些中間目標檔案(O檔案或是OBJ檔案)來連結我們的應用程式。連結器並不管函式所在的原始檔,只管函式的中間目標檔案(Object File),在大多數時候,由於原始檔太多,編譯生成的中間目標檔案太多,而在連結時需要明顯地指出中間目標檔名,這對於編譯很不方便,所以,我們要給中間目標檔案打個包,在Windows下這種包叫“庫檔案”(Library File),也就是 .lib 檔案,在UNIX下,是Archive File,也就是 .a 檔案。

總結一下,原始檔首先會生成中間目標檔案,再由中間目標檔案生成執行檔案。在編譯時,編譯器只檢測程式語法,和函式、變數是否被宣告。如果函式未被宣告,編譯器會給出一個警告,但可以生成Object File。而在連結程式時,連結器會在所有的Object File中找尋函式的實現,如果找不到,那到就會報連結錯誤(Linker Error)。

Linux下的make命令用於編譯原始碼,但是它執行之前需要一個 makefile 檔案以告訴它需要怎麼樣去編譯和連結程式。

廣告完畢,繼續來說Nginx。

由於我們下載下來的是原始碼,需要編譯後才能安裝。在編譯安裝Nginx之前,我們需要使用configure命令做大量“幕後”工作,包括檢測作業系統核心和已經安裝的軟體,引數解析,中間目錄生成以及根據各種引數生成的.c檔案、makefile檔案等。

所以,第一步需要執行configure指令碼,該命令可以攜帶多種引數,使用“configure --help”檢視引數列表:

例如:

--prefix=<path> - 指定Nginx安裝路徑,預設為 /usr/local/nginx。

--sbin-path=<path> -指定Nginx可執行檔案安裝路徑,預設為<prefix>/sbin/nginx。

--conf-path=<path> -指定配置檔案路徑,預設為<prefix>/conf/nginx.conf。

--pid-path=<path> - 指定pid檔案路徑,預設為 <prefix>/logs/nginx.pid。

……等等。

注意,Nginx的一些模組需要依賴其他lib庫,如果系統沒有安裝,執行configure命令的時候會報這樣的錯誤:

./configure: error: the HTTP rewrite module requiresthe PCRE library.You can either disable the module by using--without-http_rewrite_module option, or install the PCRE library into thesystem, or build the PCRE library statically from the source with nginx byusing --with-pcre=<path> option.

一般需要提前安裝三個lib庫:

(1)rewrite模組依賴的PCRE

PCRE(PerlCompatible Regular Expressions)是一個Perl庫,包括 perl 相容的正則表示式庫。Rewrite 主要的功能就是實現URL的重寫,Nginx的Rewrite依賴PCRE庫來實現正則匹配。

(2)gzip模組依賴的 zlib

我們在Linux中經常會用到字尾為“.gz”的檔案,它們就是gzip格式的。現今已經成為Internet 上使用非常普遍的一種資料壓縮格式,或者說一種檔案格式。

HTTP協議上的GZIP編碼是一種用來改進WEB應用程式效能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓使用者感受更快的速度。這一般是指WWW伺服器中安裝的一個功能,當有人來訪問這個伺服器中的網站時,伺服器就將網頁內容壓縮後傳輸到來訪的電腦瀏覽器中顯示出來。一般對純文字內容可壓縮到原大小的40%。

zlib是一個通用的壓縮開源庫,提供了在記憶體中壓縮和解壓的函式,包括對解壓後資料的校驗。Nginx依賴zlib庫來實現gzip格式的資料壓縮。

(3)ssl 模組依賴的openssl

SSL是Secure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供祕密性傳輸。OpenSSL 是一個安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及SSL協議。

Nginx依賴openssl庫實現https安全連線等方面的功能。

2.2 make && make install

make是Linux下的編譯命令,它根據makefile檔案中描述的規則來自動進行編譯。

make install是Linux下的安裝命令。

可以直接輸入“make&& make install”一併完成編譯與安裝操作。預設的安裝路徑為“/usr/local/nginx”。

安裝完畢後,輸入“nginx-v”如果出現如下的版本資訊,證明安裝成功:

nginx version: nginx/1.10.2

使用“nginx”命令啟動Nginx,瀏覽器輸入“127.0.0.1:80”,會看到Nginx的預設頁面:


2.3 常用命令

使用“nginx -h”可列出所有可使用的命令列表:


常用命令如下:

l   nginx

啟動Nginx,可以利用“-c”引數指定要使用的配置檔案。

l   nginx –s stop

停止Nginx,等效於“nginx –s quit”。“-s”代表採用向 Nginx 傳送訊號。注:stop是快速停止nginx,可能並不儲存相關資訊;quit是完整有序的停止nginx,並儲存相關資訊。

l   nginx –s reload

過載配置,修改配置檔案後需要使用該命令使之生效。

l   nginx –v

檢視Nginx的版本資訊。

l   nginx –t

檢查配置檔案是否正確。

l   nginx –c filename

指定配置檔案的路徑為“filename”。預設路徑為“conf/nginx.conf”

l   nginx -g

臨時指定一些全域性配置項,以使新的配置項生效,例如:

nginx -g"pid /var/nginx/test.pid"

上面這行命令意味著會把pid檔案寫到/var/nginx/test.pid中。

-g引數的約束條件是指定的配置項不能與預設路徑下的nginx.conf中的配置項相沖突,否則無法啟動。就像上例那樣,類似這樣的配置項:pidlogs/nginx.pid,是不能存在於預設的nginx.conf中的。

另一個約束條件是,以-g方式啟動的Nginx服務執行其他命令列時,需要把-g引數也帶上,否則可能出現配置項不匹配的情形。例如,如果要停止Nginx服務,那麼需要執行下面程式碼:

nginx -g"pid /var/nginx/test.pid;" -s stop

如果不帶上-g"pid /var/nginx/test.pid;",那麼找不到pid檔案,也會出現無法停止服務的情況。

相關推薦

NginxNginx安裝

首先從官網上http://nginx.org/下載最新的stable version原始碼,當前最新版本為nginx-1.10.2.tar.gz。2.1 configure解壓之後,會發現裡面有一個名為“configure”的檔案:configure本身是一個Shell指令碼,中間會呼叫<nginx-

負載均衡系列nginx

永遠 實例 表示 特性 反向代理服務器 依據 forward 訪問 子郵件 Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個BSD-like 協議下發行 其特點是占有內存少,並發能力強,事實上nginx的並發能力

NginxNginx是什麼

Nginx("engine x")是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器。由俄羅斯的程式設計師Igor Sysoev所開發,供俄國大型的入口網站及搜尋引擎Rambler使用。Nginx程式碼完全用C語言寫成,其特點是佔有記憶體少,併發能力強。官方測試號稱最多能

NginxNginx配置

一個簡單的配置檔案如下:#定義Nginx執行的使用者及使用者組 user userName userGroupName; #工作程序數目,根據硬體調整,通常等於CPU數量或者2倍於CPU worker_processes 1; #錯誤日誌路徑與級別,級別選項:debug|info|notice|

Nginx+Tomcat+Redis+Mysql安裝

先上官網下載安裝包,安裝nginx需要預先安裝zlib、pcre 安裝nginx 解壓:var -zxvf nginx-5,解壓完進入目錄,可以看到,configure為環境檢測指令碼 ./configure進行安裝前的檢測: 缺少pcre和zlib,安裝pcr

nginx nginx編譯安裝 及 配置WEB服務

nginx(二) nginx編譯安裝 及 配置WEB服務       在前面《nginx詳解》文章中,我們對nginx有了一個基本的認識:包括應用場景、nginx基本架構、功能特性、併發模型以及配置說明等,我們知道nginx應用比較多的場景是WEB伺服器和反向代理伺服器。下面

nginx+lua 請求分發

product include new fault 腳本 back () file res 比如對產品productId=143這個請求分發 現編寫lua腳本 distrib_product.lua local uri_args = ngx.req.get_uri_ar

Hive學習Hive安裝

different 0.10 director lar blog cut cti mysql extend Hive的下載 下載地址http://mirrors.hust.edu.cn/apache/ 選擇合適的Hive版本進行下載,進到stable-2文件夾可以看到穩

流媒體技術學習筆記Nginx-Rtmp-Module統計某頻道在線觀看流的客戶數

sele lec rest uri class origin 客戶 擴展 raw 獲得訂閱者人數,可以方便地顯示觀看流的客戶數。 查看已經安裝好的模塊 /usr/local/nginx/sbin/nginx -V 安裝從源編譯Nginx和Nginx-RTMP所

Nginx------nginx.conf 配置文件

影響 name 模型 logs deny app params 路徑 localhost   上一篇博客我們將 nginx 安裝在 /usr/local/nginx 目錄下,其默認的配置文件都放在這個目錄的 conf 目錄下,而主配置文件 nginx.conf 也在其中,後

【Mac + Python3.6 + facebook-wda】IOS自動化安裝facebook-wda庫並編寫簡易自動化測試腳本

以及 應用 hot cit you ins dfa 查看端口 介紹 上一篇介紹完如何安裝WDA,接下來開始正式安裝開發庫並編寫自動化腳本。 目錄: 一、安裝facebook-wda庫 二、通過WEditor定位元素 三、附錄:學習資料

高效能Nginx介紹

14.4 nginx內部 如前所述,nginx程式碼庫由核心和許多模組組成。 nginx的核心是負責提供Web伺服器,Web和郵件反向代理功能的基礎;它支援使用底層網路協議,構建必要的執行時環境,並確保不同模組之間的無縫互動。但是,大多數協議和應用程式特定的功能都是由nginx模組完成的,而不是

nginx:負載均衡實戰nginx=keepalived

1.安裝keepalived 下載依賴: yum -y install gcc pcre-devel zlib-devel openssl-devel 換源為阿里雲的,準備下載keepalived,沒有wget的先yum install wget mv /etc/yum.repos.d/C

阿里雲伺服器Ubuntu環境搭建筆記——軟體安裝

1.嘗試安裝screen,輸入命令:apt install screen 輸出:Reading package lists... Done Building dependency tree        Reading state informatio

燕姐的 Linux 私房菜30—— Nginx

1、Nginx 簡介 Nginx官網:http://nginx.org/ Nginx,即 engine X,是為了解決 C10k 問題出現的。 (1)Nginx 的特性 1)模組化設計、較好擴充套件性; 2)高可靠性,master/worker架構; 3)支援熱部署,不停機更新配置檔

Nginx工作原理

眾所周知,nginx效能高,而nginx的高效能與其架構是分不開的4.1 程序模型Nginx在啟動後,會有一個master程序和多個worker程序。master程序主要用來管理worker程序,包含:接收來自外界的訊號,向各worker程序傳送訊號,監控worker程序的執行狀態,當worker程序退出後

nginx配置

#虛擬主機的配置 server { #監聽埠 listen 80; #域名可以有多個,用空格隔開 server_name www.ha97.com ha97.com; index index.html index.htm index.php; root /data/www/ha97; l

nginx學習——nginx的配置系統3upstream_module

upstream upstream可以用來定義一組伺服器,這些伺服器可以通過proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass這些指令指定的域名關聯起來,比如下面這組配置,backend就

高併發負載均衡——Nginx 和LVS

 在上一篇部落格中介紹到實現負載均衡主要可以通過軟、硬體兩個方面進行,例如硬體上購買RadWare等硬體裝置,或者通過軟體策略實現負載均衡。軟體策略上使用廣泛有Nginx 和LVS 在介紹兩款工

Logstash使用grok過濾nginx日誌

在生產環境中,nginx日誌格式往往使用的是自定義的格式,我們需要把logstash中的message結構化後再儲存,方便kibana的搜尋和統計,因此需要對message進行解析。   本文采用grok過濾器,使用match正則表示式解析,根據自己的log_forma