01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置
1、下載Nginx,進入Nginx下載地址:http://nginx.org/
點擊nginx-1.8.0,進入:http://nginx.org/en/download.html,下載文件:
2 下載pcre,這個是一個正則表達式的庫,Nginx做rewriter的時候回用到這個庫:
進入pcre的官網(rewrite模式需要pcre):http://www.pcre.org/
選中右擊復制所需要的版本:
3 下載zlib庫(gzip模塊需要zlib):http://www.zlib.net/
4.將下面安裝文件上傳到Linux服務器上:
5 開始安裝Nginx。
在正式開始前,編譯環境gcc g++開發庫之類的需要提前安裝好,這里默認你已經安裝好。Ubuntu平臺環境可以使用以下指令
| apt-get install build-essential |
| apt-get install libtool |
Centos平臺編譯環境使用如下指令
安裝make
| yum -y install gcc automake autoconf libtool make |
安裝g++
| yum install gcc gcc-c++ |
Nginx依賴以下模塊:
gzip模塊需要zlib庫
rewrite模塊需要pcre庫
ssl功能需要openssl庫
?
一般我們需要先安裝pcre,zlib,前者為了重寫rewrite,后者為了gzip壓縮。
選定源碼目錄,選定/usr/local/src
下載openssl,地址:ftp://ftp.openssl.org/source/
tar -zxvf openssl-1.0.1c.tar.gz?? (下載穩定版本)
cd openssl-1.0.1c
./config && make && make ?install
?
安裝pcre
tar zxvf pcre-8.37.tar.gz
cd pcre-8.37
./configure && make && make ?install
?
安裝zlib庫
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure && make && make install
?
安裝nginx.
Nginx一般有兩個版本,分別是穩定版和開發版,您可以根據您的目的來選擇這兩個版本的其中的一個,下面是把Nginx安裝到/usr/local/nginx目錄的詳細步驟如下:
tar zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
mkdir /usr/local/nginx
?
groupadd -r nginx
useradd -r -g nginx -s /bin/false -M nginx
?
#注意 \ 前面至少一個有空格
[root@localhost src]# cd nginx-1.8.0
[root@localhost nginx-1.8.0]# groupadd -r nginx
[root@localhost nginx-1.8.0]# useradd -r -gnginx -s /bin/false -M nginx
##注意:下面的with后面的路徑要正確。若是不正確,請確定后重新編寫下面的路徑配置。
[root@localhost nginx-1.8.0]# ./configure--sbin-path=/usr/local/nginx/nginx \
>--conf-path=/usr/local/nginx/nginx.conf \
> --pid-path=/usr/local/nginx/nginx.pid\
> --with-http_ssl_module \
> --with-pcre=../pcre-8.37 \? #指向解壓的源碼目錄
> --with-zlib=../zlib-1.2.8 \? #指向解壓的源碼目錄
> --with-openssl=../openssl-1.0.1c \? #指向解壓的源碼目錄
> --with-http_stub_status_module \
> --user=nginx \
> --group=nginx;
?
make && make install
?
在此過程中還可以使用下面的模塊:
> --with-http_gzip_static_module \
> --with-http_mp4_module \
> --with-http_flv_module \
?
安裝后的現象:
進入/usr/local/nginx,發現有如下內容:
?
啟動nginx
/usr/local/nginx/nginx #不指定配置文件地址
/usr/local/nginx/nginx -c/usr/local/nginx/nginx.conf #指定配置文件地址
?
若此過程中出現了如下錯誤:
nginx: [emerg] bind() to0.0.0.0:80 failed (98: Address already in use)
使用命令關閉占用80端口的程序
sudo fuser -k 80/tcp
?
停止服務:
kill `cat /usr/local/nginx/nginx.pid`
?
在瀏覽器中輸入:192.168.6.25(如果是本機輸入localhost)如果看到歡迎界面則安裝成功:
?
虛擬主鍵配置:
只需要更改server_name為對應的網站域名即可:
/usr/local/nginx
vim nginx.conf
?
檢測配置文件
/usr/local/nginx/nginx -t
?
重新加載配置文件(不停止服務)
/usr/local/nginx/nginx -s reload
?
Nginx編譯參數解析:
| –prefix #nginx安裝目錄,默認在/usr/local/nginx –pid-path #pid問件位置,默認在logs目錄 –lock-path #lock問件位置,默認在logs目錄 –with-http_ssl_module #開啟HTTP SSL模塊,以支持HTTPS請求。 –with-http_dav_module #開啟WebDAV擴展動作模塊,可為文件和目錄指定權限 –with-http_flv_module #支持對FLV文件的拖動播放 –with-http_realip_module #支持顯示真實來源IP地址 –with-http_gzip_static_module #預壓縮文件傳前檢查,防止文件被重復壓縮 –with-http_stub_status_module #取得一些nginx的運行狀態 –with-mail #允許POP3/IMAP4/SMTP代理模塊 –with-mail_ssl_module #允許POP3/IMAP/SMTP可以使用SSL/TLS –with-pcre=../pcre-8.11 #注意是未安裝的pcre路徑 –with-zlib=../zlib-1.2.5 #注意是未安裝的zlib路徑 –with-debug #允許調試日志 –http-client-body-temp-path #客戶端請求臨時文件路徑 –http-proxy-temp-path #設置http proxy臨時文件路徑 –http-fastcgi-temp-path #設置http fastcgi臨時文件路徑 –http-uwsgi-temp-path=/var/tmp/nginx/uwsgi #設置uwsgi 臨時文件路徑 –http-scgi-temp-path=/var/tmp/nginx/scgi #設置scgi 臨時文件路徑 |
?
6 nginx.conf配置說明:
nginx.conf是主配置文件。
| worker_processes?? 表示工作進程的數量,一般設置為cpu的核數 | ? | ||
| worker_connections? 表示每個工作進程的最大連接數 | ? | ||
| server{}塊定義了虛擬主機 | listener監聽端口 | ? | |
| server_name監聽域名 | ? | ||
| Location{}是用來匹配的URI進行配置,URI即語法中的”/uri”。Location /{}匹配任何查詢,因為所有請求都以/開頭。 | root 指定對應uri的資源查找路徑,這里html位相對路徑,完整路徑為/usr/local/nginx/html | ||
| Index指定首頁index文件的名稱,可以配置多個,以空格分開。如有多個,按配置順序查找。 | |||
| ? | ? | ? | ? |
從配置可以看出,nginx監聽了80端口、域名為localhost、跟路徑為html文件夾(我的安裝路徑為/usr/local/nginx,所以:/usr/local/nginx/html),默認index文件為index.html,index.htm、服務器錯誤重定向到50x.html頁面。
可以看到/usr/local/nginx/html/有以下文件:
| [root@localhost html]# cd /usr/local/nginx/html/ [root@localhost html]# ls 50x.html? index.html |
這里是上面在瀏覽器中輸入http://localhost,能夠顯示歡迎頁面的原因。實際上訪問的是/usr/local/nginx/html/index.html
?
7 接下來配置一個web項目:
(1)、將web項目上傳到/usr/local/nginx/html目錄下,目錄內容如下:
修改vim nginx.conf的配置,新增的內容如下:
不用關閉nginx的方式啟動nginx:
/usr/local/nginx/nginx -c/usr/local/nginx/nginx.conf -s reload
如果發現虛擬機外不能訪問,其實是防火墻的問題,需要將防火墻關閉,關閉防火墻的代碼如下:
service iptables stop
接著在瀏覽器中輸入:http://192.168.6.25:8080/test/
?
8 mime.types配置
文件擴展名與文件類型映射表,nginx根據映射關系,設置http請求響應頭的Content-Type值。當在映射表找不到時,使用nginx.conf中default-type指定的默認值。例如,默認配置中的指定的default-type為application/octet-stream
include?????? mime.types;
default_type? application/octet-stream;
默認
?? 下面截取一段mime.types定義的文件擴展名與文件類型映射關系,如下:
9 其它
fastcgi_params
nginx配置Fastcgi解析時會調用fastcgi_params配置文件來傳遞服務器變量,這樣CGI中可以獲取到這些變量的值。默認傳遞以下變量:
這些變量的作用從其命名可以看出。
?
fastcgi.conf
對比下fastcgi.conf與fastcgi_params文件,可以看出只有以下差異:
| /usr/local/nginx/conf$ diff fastcgi.conf fastcgi_params 2d1 < fastcgi_param? SCRIPT_FILENAME??? $document_root$fastcgi_script_name; |
即fastcgi.conf只比fastcgi_params多了一行“fastcgi_param?SCRIPT_FILENAME??? $document_root$fastcgi_script_name;”
原本只有fastcgi_params文件,fastcgi.conf是nginx 0.8.30 (released: 15th of December 2009)才引入的。主要為是解決以下問題(參考:http://www.dwz.cn/x3GIJ):
原本Nginx只有fastcgi_params,后來發現很多人在定義SCRIPT_FILENAME時使用了硬編碼的方式。例如,fastcgi_param SCRIPT_FILENAME/var/www/foo$fastcgi_script_name。于是為了規范用法便引入了fastcgi.conf。
不過這樣的話就產生一個疑問:為什么一定要引入一個新的配置文件,而不是修改舊的配置文件?這是因為fastcgi_param指令是數組型的,和普通指令相同的是:內層替換外層;和普通指令不同的是:當在同級多次使用的時候,是新增而不是替換。換句話說,如果在同級定義兩次SCRIPT_FILENAME,那么它們都會被發送到后端,這可能會導致一些潛在的問題,為了避免此類情況,便引入了一個新的配置文件。
因此不再建議大家使用以下方式(搜了一下,網上大量的文章,并且nginx.conf的默認配置也是使用這種方式):
fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
而使用最新的方式:
include fastcgi.conf;
?
uwsgi_params
與fastcgi_params一樣,傳遞哪些服務器變量,只有前綴不一樣,以uwsgi_param開始而非fastcgi_param。
?
scgi_params
與fastcgi_params一樣,傳遞哪些服務器變量,只有前綴不一樣,以uwsgi_param開始而非fastcgi_param。
?
koi-utf、koi-win、win-utf
這三個文件都是與編碼轉換映射文件,用于在輸出內容到客戶端時,將一種編碼轉換到另一種編碼。
koi-win: charset_map? koi8-r < -- > windows-1251
koi-utf: charset_map? koi8-r < -- > utf-8
win-utf: charset_map? windows-1251 < -- > utf-8
koi8-r是斯拉夫文字8位元編碼,供俄語及保加利亞語使用。在Unicode未流行之前,KOI8-R 是最為廣泛使用的俄語編碼,使用率甚至起ISO/IEC 8859-5還高。這3個文件存在是因為作者是俄國人的原因。
?
總結
以上是生活随笔為你收集整理的01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 炒包菜的家常做法?
- 下一篇: EasyUI中tree,Datagrid