Linux中編譯、安裝nginx
Nginx ("engine x") 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP 代理伺服器。 Nginx 是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0釋出於2004年10月4日。其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。
作為開源的伺服器軟體,在Linux系統中安裝和其他開源軟體的安裝方法大同小異,無非就是編譯,然後安裝。下面介紹我編譯安裝nginx的過程:
工作機器各項引數如下:
CPU:Intel Xeon 5110
記憶體:DDR2 1G*4
主機型號:ProLiant DL140 G3
作業系統:Red Hat Enterprise Linux Server release 5.4 x86_64版
核心版本:2.6.18
gcc版本:4.1.2
g++版本:4.1.2
1.下載nginx原始碼:
截止到今天(2011年11月24日),最新的穩定版的nginx伺服器版本號為1.0.10,可以從nginx的官方網站http://www.nginx.org/中下載到其原始碼。
這裡強烈建議下載tar.gz格式的壓縮包。在Linux下,檔案訪問有著嚴格的許可權限制。一個檔案是否允許以二進位制或者指令碼的形式執行,完全取決於其是否擁有執行缺陷,這與Windows識別檔案字尾名(.exe、.bat)的方式不同。zip格式的壓縮包中是不保留檔案的許可權資訊的,而tar.gz格式的壓縮包是儲存有檔案的許可權資訊的。
然後對其解壓,並執行編譯配置指令碼:
[[email protected] Downloads]# tar -xf nginx-1.0.10.tar.gz
[[email protected] Downloads]# cd nginx-1.0.10
[[email protected] nginx-1.0.10]# ./configure
指令碼執行到最後可能會報出如下錯誤:
checking for PCRE library ... not found
checking for PCRE library in /usr/local/ ... not found
checking for PCRE library in /usr/include/pcre/ ... not found
checking for PCRE library in /usr/pkg/ ... not found
checking for PCRE library in /opt/local/ ... not found
./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
[ [email protected] nginx-1.0.10]#
這說明系統中缺少PCRE庫。該庫是實現正則表示式的基礎,如果缺少此庫,nginx無法支援HTTP中的URL重寫功能。如果你不需要此功能,可以在執行編譯配置指令碼時加入“--without-http_rewrite_module”。但是,這裡我們需要這項功能。於是下載PCRE庫。
2.下載安裝PCRE庫:
PCRE庫是實現Perl式正則表示式的基礎。如果系統中缺少此庫需要編譯安裝。可以從著名的開源軟體網站sourceforge上下載:http://sourceforge.net/projects/pcre/files/pcre/。目前最新版本是8.20。
仍然是下載後解壓、配置、編譯和安裝:
[[email protected] Downloads]# tar -xf pcre-8.20.tar.gz
[[email protected] Downloads]# cd pcre-8.20
[[email protected] pcre-8.20]# ./configure
[[email protected] pcre-8.20]# make
[[email protected] pcre-8.20]# sudo make install
3.編譯nginx:
如果編譯配置指令碼正常執行,會在最後報告出nginx將要安裝的位置以及其他相關資訊。閱讀過之後直接編譯就好:
nginx path prefix: "/usr/local/nginx"
nginx binary file: "/usr/local/nginx/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx/conf"
nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
nginx pid file: "/usr/local/nginx/logs/nginx.pid"
nginx error log file: "/usr/local/nginx/logs/error.log"
nginx http access log file: "/usr/local/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"
[[email protected] nginx-1.0.10]# make
然後進行安裝:
[[email protected] nginx-1.0.10]# sudo make install
安裝到的預設位置是/usr/local/nginx
安裝完畢之後一般需要對其進行優化配置。在很多時候一臺nginx可以承載很多業務,它扮演的是各個子業務系統的入口,通過主機頭來區分不同的業務應用。只有一個nginx.conf配置檔案就會給今後的運維工作帶來很大的麻煩,為此我們將nginx的配置進行了重新的梳理
首先我們把預設的server配置全部刪除。只保留基本的http配置。預設的訪問日誌內容不夠全面,於是我們對它進行修改,記錄更多的欄位。
log_format main '$time_iso8601'
' $request_uri'
' $status'
' $bytes_sent'
' $upstream_cache_status'
' $request_time'
' $upstream_response_time'
' $host'
' $remote_addr'
' $server_addr'
' $upstream_addr'
' $http_referer'
' $http_user_agent'
' $http_x_forwarded_for'
' web'
' -' #$cachezone
' $sent_http_cache_control'
' $http_nagios'
' $upstream_status'
' -' #$cache_process_time
雖然最終要啟用gzip壓縮,但由於細化配置較多,我們保持nginx.conf中的#gzip on被註釋掉的狀態,增加如下配置
#gzip on;
include gzip.conf;
include proxy.conf;
include vhost/*.conf;
關於gzip.conf的配置詳情:#找不到預壓縮檔案,進行動態壓縮
gzip on;
gzip_min_length 1k; #設定最小的壓縮值,單位為bytes.超過設定的min_length的值會進行壓縮,小於的不壓縮.
gzip_comp_level 3; #壓縮等級設定,1-9,1是最小壓縮,速度也是最快的;9剛好相反,最大的壓縮,速度是最慢的,消耗的CPU資源也多
gzip_buffers 16 64k; #設定系統的快取大小,以儲存GZIP壓縮結果的資料流,它可以避免nginx頻煩向系統申請壓縮空間大小
gzip_types text/plain application/x-javascript text/css text/javascript;
#關於gzip_types,如果你想讓圖片也開啟gzip壓縮,那麼用以下這段吧:
#gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php image/jpeg image/gif image/png;
#gzip公共配置
gzip_http_version 1.1; #識別http的協議版本(1.0/1.1)
gzip_proxied any; #設定使用代理時是否進行壓縮,預設是off的
gzip_vary on; #和http頭有關係,加個vary頭,代理判斷是否需要壓縮
gzip_disable "MSIE [1-6]."; #禁用IE6的gzip壓縮
關於proxy.conf的配置詳情:
#注:proxy_temp_path和proxy_cache_path指定的路徑必須在同一分割槽
proxy_temp_path /tmp/proxy_temp;
#設定Web快取區名稱為cache_one,記憶體快取空間大小為500MB,1天沒有被訪問的內容自動清除,硬碟快取空間大小為30GB。
proxy_cache_path /tmp/proxy_cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=30g;
client_body_buffer_size 10m; #原為512k
proxy_connect_timeout 10; #代理連線超時
proxy_read_timeout 30; #代理髮送超時
proxy_send_timeout 30; #代理接收超時
proxy_buffer_size 128k; #代理緩衝大小,原為32k
proxy_buffers 16 256k; #代理緩衝,原為4 64k
proxy_busy_buffers_size 512k; #高負荷下緩衝大小,原為128k
proxy_temp_file_write_size 1024m; #proxy快取臨時檔案的大小原為128k
#proxy_ignore_client_abort on; #不允許代理端主動關閉連線
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404 http_502 http_504;
接下來就是針對具體應用進行配置了,首先建立虛擬主機配置專用的目錄
[[email protected] pcre-8.20 conf]# mkdir vhost
[[email protected] pcre-8.20 conf]# cd vhost/
針對每一個主機,分成兩個配置檔案:XXX_server.conf和upstream_XXX.conf。前者用來配置主機名、轉發規則,後者用來配置提供服務的後端伺服器。
例如:admin_web_system_server.conf
server {
listen 80;
server_name admin.business.com;
client_max_body_size 35m;
location ^~ / {
access_log /data/log/nginx/logs/admin_web_system/access.log main;
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://admin_web_system;
proxy_pass_header Set-Cookie;
}
#limit_conn perip 50;
}
後端伺服器配置:upstream_admin_web_system.confupstream admin_web_system {
server 192.168.254.100:8080 max_fails=2 fail_timeout=30s;
server 192.168.254.100:8081 max_fails=2 fail_timeout=30s;
}
在上述配置中,還缺少統一存放日誌的目錄:/data/log/nginx/logs/admin_web_system,建立一下就好了。
接下來測試一下配置是否正確:
[[email protected] vhost]#cd ..
[[email protected] conf]# cd ..
[[email protected] nginx]# cd sbin/
[[email protected] sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
提示一切正常就可以啟動了:[[email protected] sbin]# ./nginx
相關推薦
Linux中編譯、安裝nginx
Nginx ("engine x") 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP 代理伺服器。 Nginx 是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的,第一個公開版本0.1.0釋出於2004年10月4日。其將
Linux中檢視jdk安裝目錄、解除安裝jdk、rpm命令、rm命令引數
一、Linux中檢視jdk安裝目錄 [[email protected] ~]# whereis java java: /usr/bin/java /usr/local/java#java執行路徑 [[email protected] ~]# which java /usr/
linux 下的兩種軟體安裝方式 —— 原始碼(編譯、安裝),編譯好的二進位制(直接安裝)
我們以 GPG(加密工具)為例來說明兩種安裝方式的區別: 原始碼(Source code releases,名稱中則會含有src等說明資訊,tarball:source),先編譯再安裝 ./c
Linux環境下openssl交叉編譯、安裝和裁剪
最近的專案需求中依賴libcrypto和libssl庫,所以需要編譯安裝openssl0.9.8e,花了差不多一天的時間終於成功安裝和裁剪,現在總結並分享個人的方法,貼出來供大家參考和指正。 方法如下(不同的平臺要根據實際環境更改相應的編譯工具): 一、配置: ./conf
Linux基礎第三天—Linux的軟連結與硬連結、安裝nginx以及基本配置、LNMP和LAMP的搭建
ln 建立硬連結 ln oldboy.txt oldgirl.txt 建立硬連結,原檔案oldboy.txt寫在前面,兩檔案inode相同,存在同一個block中, 內容同步刪除,但其中一個刪除 另一個並不會消失,因為block, l
linux中sublime Text安裝配置及搭建c/c++編譯系統
1. Sublime Text 3的下載安裝 到官方網站上http://www.sublimetext.com/3下載64位(系統位64位)的.deb安裝包(http://c758482.r82.cf2.rackcdn.com/sublime-text_build-3
OpenCV在linux平臺的編譯、安裝和使用
分六個部分介紹: 一、下載跨平臺編譯工具 CMake 下載地址:http://www.cmake.org/cmake/resources/software.html二、解壓、編譯 CMake tar xvfz cmake-2.8.12.1.tar.gz makedir -
Nginx在Linux中的線上安裝
第二步:先安裝Nginx依賴的包:nginx是C語言開發,建議在linux上執行,本教程使用Centos6.5作為安裝環境。n gcc 安裝nginx需要先將官網下載的原始碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gcc:yum install gcc-c+
Linux中編譯安裝軟件的基本流程
參考 conf 控制 準備 all 開發 流程 src efi 1. 準備軟件包源文件 從互聯網下載相應的軟件包(以 .tar.gz 或 .tar.bz2 為後綴),將tarball文件解壓到/usr/local/src目錄下,並切換到軟件包目錄下 ; 2. ./con
linux中的ssh安裝、解除安裝與配置
注意:以下命令是在root下執行的,若沒root則要輸入su命令進入root環境下或命令前加上sudo,測試版本:ubuntu14.04 64位 ssh的安裝 安裝前先檢查linux下有沒有安
linux中編譯C語言程序
編輯器 ins spa include all 運行程序 gcc linux中 style 1.首先安裝gcc編輯器 yum install gcc* -y 2.編寫C語言程序 [[email protected]/* */ ~]# vim aa.c #i
Linux中 別名、內部命令、外部命令、hash緩存表 系統調用時的優先級比較
別名、內部命令、外部命令、hash緩存表 Linux系統中別名、內部命令、外部命令、hash緩存表 優先級優先級比較 在我們平時使用Linux系統執行各種命令時,會發現命令在執行過程中會區分哪個優先執行,哪個其次執行,這裏我們來做個試驗證明一下。 別名:用a
Linux中Centos7下安裝Mysql(更名為Mariadb)
sys img mage 大小寫 alt utf image bsp 啟動服務 一、安裝: yum install mariadb-server mariadb 二、啟動服務: systemctl start mariadb 三、配置大小寫敏感問題、和字符為
linux中軟件安裝方法總結
linuxlinux中軟件安裝方法:1 rpm -ivh 包名.rpm 有依賴問題,安裝A,A需要先安裝B,B先安裝C等。2 yum安裝,yum包管理器,yum安裝解決rpm安裝的依賴問題,安裝更簡單化。 優點:簡單,易用,高效 缺點:不能定制 centos切換在線yum源地址為ali
Linux中profile、bashrc、bash_profile之間的區別和聯系(轉)
用戶登錄 upd rtu 文件輸入 當前 設定 log set less /etc/profile:此文件為系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行.並從/etc/profile.d目錄的配置文件中搜集shell的設置. 英文描述為: # /etc/pr
Linux 下編譯並安裝配置 Qt 4.53全過程
雙擊 win port 環境 簡單的 類型 http you ner 最近準備做 Nokia 的 Symbian,Maemo 下觸摸屏開發。考慮到程序的跨平臺可移植性,最終選擇使用 Qt 開發。相對來說,國內關於 Qt 相關文檔並不算很多。作者將 Linux
linux中redis的安裝配置,後門漏洞修復及其攻擊方法整合
conf eid member 策略 ron 分享 正數 二進制 我想 Linux上redis安裝: 需先在服務器上安裝yum(虛擬機可使用掛載的方式安裝) 安裝配置所需要的環境運行指令: yum -y install gcc 進入解壓文件執行make 指令進行編譯 執
linux中CURL的安裝
官網下載 sta config tps 特性 onf erl nbsp 地址 curl是一款著名的字符界面下的下載工具,支持HTTP、HTTPS、FTP、FTPS、DICT、TELNET、LDAP、FILE,和GOPHER。此外還具有cookies支持、斷點續傳、FTP上傳
Linux中編譯C文件
-s nbsp 最簡 通過 gcc 基本 linu 16px sub C/C++程序編譯的過程 預處理,展開頭文件,宏定義,條件編譯處理等。通過gcc -E source.c -o source.i或者cpp source.c生成。 編譯。這裏是一個狹義的編譯意義,指的是將
linux中cat、more、less命令區別詳解
more|less本文轉自:http://blog.csdn.net/xyw_blog/article/details/16861681在《Python絕技》這本書的第一個小程序首先展示了針對與unix系統中shadow文件密碼的暴力破解的能力,因為之前只是對shadow文件停留在保存了用戶密碼的階段,但並沒