nginx動態編譯
A. jdk nginx. redis 在arm和x86要分別編譯
一、注意openssl和pcre只需要把源碼解壓縮,不需要單獨交叉編譯!
開始的時候不知道,傻傻的把這兩個庫弄半天把它們編譯過去了。誰知道nginx的--with-pcre和--with-openssl選項,指定的是這兩個庫源代碼的路徑,並非安裝路徑!nginx的編譯系統只會從/usr、/usr/local等少數幾個目錄查找是否有預編譯的pcre、zlib、openssl等庫。對於交叉編譯,直接把交叉編譯後的pcre等安裝在/usr、/usr/local顯然不合適,因此需要使用--with-pcre和--with-openssl指定源代碼的位置
二、交叉編譯nginx
在x64 linux上面編譯非常簡單的nginx,沒想到在交叉編譯的時候巨多坑。下面一個configure是編譯成功的配置
進入/usr/local/src目錄,創建nginx文件夾。入剛創建的nginx目錄,下載nginx的tar包,解壓,進入解壓生成的目錄,進行配置(後面有補充,建議通讀一遍)編譯安裝查找安裝路徑,在執行make編譯時,可以添加要編譯的參數,已安裝完成,比如我現在要新增 http_stub_status_mole 模塊參數,那麼我只要把該參數添加進去然後重新編譯即可,需要注意的是原先編譯過的參數也要加進來。
進入nginx的安裝目錄,因為我安裝的時候沒有添加任何參數,所以這里我只需要執行
我這里只需要這一個模塊,如果你安裝的nginx還使用其他的模塊,記得在上面的編譯命令中加上。
另外,這里只能 make 千萬別 make install,否則就覆蓋安裝了。
make完成後,在源碼目錄下會有一個objs目錄,objs目錄下就多了個nginx,這個就是新版本的程序了;
然後將objs目錄下的nginx替換之前已經安裝過的nginx(建議將舊的nginx程序做下備份)
,
B. linux 版怎麼配置nginx
配置Nginx服務
Nginx是一款相當優秀的用於部署動態網站的服務程序,Nginx最初是為俄羅斯門戶站點而設計的網站服務軟體,作為一款輕量級的網站服務軟體,因其穩定性和豐富的功能而深受信賴,但最最最被認可的是低系統資源、佔用內存少且並發能力強,目前國內如新浪、網易、騰訊等門戶站均在使用,市場佔有份額一直保持在15-16%左右(2015年最新數據)。
Nginx程序的穩定性來自於它採用了分階段的資源分配技術,使得CPU與內存佔用率會非常低,所以使用Nginx程序部署動態網站環境不僅十分的穩定、高效,而且消耗更少的系統資源,豐富的模塊功能也幾乎與Apache程序數量相同,現在已經完全的支持了proxy、rewrite、mod_fcgi、ssl、vhosts等常用模塊。而且還支持了熱部署技術,即能夠可以7*24不間斷提供服務,即便運行數月也無須重啟,而且還可以在不暫停服務的情況下直接對Nginx服務程序進行升級。
坦白來講,雖然Nginx程序的代碼質量非常高,代碼很規范,技術成熟,模塊擴展也很容易,但Nginx依然存在不少問題,比如Nginx是由俄羅斯人創建的,所以在資料文檔方面還並不完善,中文教材的質量更是魚龍混雜,但Nginx近年來增長勢頭迅猛,預測未來應該能夠在輕量級HTTP伺服器市場有不錯的未來。
安裝PCRE(Perl兼容的正則表達式庫,解壓與編譯過程已省略):
[root@linuxprobe ~]# cd /usr/local/src
[root@linuxprobe src]# mkdir /usr/local/pcre
[root@linuxprobe src]# tar xzvf pcre-8.35.tar.gz
[root@linuxprobe src]# cd pcre-8.35
[root@linuxprobe pcre-8.35]# ./configure --prefix=/usr/local/pcre
[root@linuxprobe pcre-8.35]# make
[root@linuxprobe pcre-8.35]# make install
安裝openssl服務程序(解壓與編譯過程已省略):
[root@linuxprobe pcre-8.35]# cd /usr/local/src
[root@linuxprobe src]# mkdir /usr/local/openssl
[root@linuxprobe src]# tar xzvf openssl-1.0.1h.tar.gz
[root@linuxprobe src]# cd openssl-1.0.1h
[root@linuxprobe openssl-1.0.1h]# ./config --prefix=/usr/local/openssl
[root@linuxprobe openssl-1.0.1h]# make
[root@linuxprobe openssl-1.0.1h]# make install
把openssl服務程序命令目錄添加到環境變數中(永久生效):
[root@linuxprobe pcre-8.35]# vim /etc/profile
//將配置文件最下面的參數追加參數為:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin
[root@linuxprobe pcre-8.35]# source /etc/profile
安裝zlib數據壓縮函數庫(解壓與編譯過程已省略):
[root@linuxprobe pcre-8.35]# cd /usr/local/src
[root@linuxprobe src]# mkdir /usr/local/zlib
[root@linuxprobe src]# tar xzvf zlib-1.2.8.tar.gz
[root@linuxprobe src]# cd zlib-1.2.8
[root@linuxprobe zlib-1.2.8]# ./configure --prefix=/usr/local/zlib
[root@linuxprobe zlib-1.2.8]# make
[root@linuxprobe zlib-1.2.8]# make install
創建用於執行nginx服務的用戶:
[root@linuxprobe zlib-1.2.8]# cd ..
[root@linuxprobe src]# useradd www -s /sbin/nologin
安裝nginx服務程序(openssl,zlib,pcre要寫成源碼解壓路徑!!!):
[root@linuxprobe src]# tar xzvf nginx-1.6.0.tar.gz
[root@linuxprobe src]# cd nginx-1.6.0/
[root@linuxprobe nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --without-http_memcached_mole --user=www --group=www --with-http_stub_status_mole --with-http_ssl_mole --with-http_gzip_static_mole --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35
[root@linuxprobe nginx-1.6.0]# make
[root@linuxprobe nginx-1.6.0]# make install
創建nginx程序腳本(將下面的參數直接復制進去即可):
[root@linuxprobe nginx-1.6.0]# vim /etc/rc.d/init.d/nginx
#!/bin/bash
# nginx - this script starts and stops the nginx daemon
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
#configtest || return $?
stop
sleep 1
start
}
reload() {
#configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
[root@linuxprobe nginx-1.6.0]# chmod 755 /etc/rc.d/init.d/nginx
重啟nginx服務程序並添加到開機啟動項:
[root@linuxprobe nginx-1.6.0]# /etc/rc.d/init.d/nginx restart
Restarting nginx (via systemctl): [ OK ]
[root@linuxprobe nginx-1.6.0]# chkconfig nginx on
此時可以通過訪問IP來判斷nginx服務是否順利運行
LNMP(即Linux+Nginx+MYSQL+php)是目前非常熱門的動態網站部署架構,如果你是在搭建這種部署的話可以看下http://www.linuxprobe.com/chapter-20.html
C. linux nginx 編譯安裝的 怎麼啟動
linux nginx 編譯安裝的 怎麼啟動
–prefix=path
定義保存伺服器文件的目錄。這個目錄同時將作用於nginx.conf配置文件中配置的相對路徑(但不包括源碼庫的路徑)。默認值為/usr/local/nginx。
–sbin-path=path
設置nginx可執行文件的名稱,該名稱只在安裝期間使用。默認值是prefix/sbin/nginx
–conf-path=path
設置nginx.conf配置文件的名稱。如果需要,nginx可以使用不同的配置文件啟動,你可以通過命令行參數 -c file啟動。默認文件名為prefix/conf/nginx.conf
–pid-path=path
設置nginx.pid文件的名稱,nginx.pid用於存儲主進程的進程ID。安裝後,該文件名稱可以在nginx.conf的pid指令中修改。默認為prefix/logs/nginx.pid
–error-log-path=path
設置重要的錯誤、警告以及診斷文件的名字。安裝後,可以通過nginx.conf的error_log指令修改。默認為prefix/logs/error.log
–http-log-path=path
記錄主要請求日誌的名稱,安裝後通過access_log指令修改。默認為prefix/logs/access.log
–user=name
設置工作進程的用戶名,安裝後可以通過user指令修改。默認值為nobody
–group=name
設置工作進程的用戶組,安皇後可以通過user指令修改,默認與user相同。
–with-xxx_mole
安裝xxx模塊,這些模塊可以在nginx文檔中找到。
–without-xxx_mole
不安裝xxx模塊(有些模塊是默認安裝的,如果不想安裝,可以通過這個參數屏蔽),這些模塊可以在nginx文檔中找到。
D. 求大神指導Centos7 源碼編譯安裝Nginx+PHP 配置動靜分離
這個是我的服務的實際 將配置Nginx實現動靜分離,對php頁面的請求轉發給LAMP處理,而靜態頁面交給Nginx,以實現動靜分離。客戶請求靜態數據給Nginx,Nginx直接應答客戶端,當請求動態數據到Nginx時,Nginx讓客戶端去找LAMP,通過代理的方式,LAMP就和客戶端連接了。分別配置動態分離和靜態分離
(1)架設並調試後端LAMP架構,指定的域名,IP地址為xxxx,創建動態頁面test.php。
(2)配置Nginx(xxxx)處理動態頁面請求,並把域名改為 chaodiquan.com 在server{};段中加入以下代碼,檢測語法後,重啟Nginx
(3)客戶端輸入xxxx/test.php 成功後動態分離就實現了,接下來再配置靜態分離
(4)配置Nginx處理靜態頁面請求,在server{};中加入以下代碼,檢測語法後,重啟Nginx
location ~ .*.(gif|jpg|jpeg|bmp|swf)$ { #這段代碼意思是任意網址以這5種格式為結尾就到Nginx根目錄下的html文件夾尋找資源
root html;
expires 1d; #緩存一天}
(5)在nginx的html目錄中,放入圖片aa.jpg,然後在apache的動態測試頁test.php中添加
<html>
<body>
<img src="aaaa/aa.jpg">
</body>
</html>
(6)客戶端輸入xxxx/test.php測試,由於test.php是動態頁面,因此客戶端會找到LAMP架構中的Apache,然後調取圖片aa.jpg是靜態數據,所以從Nginx提取,最後反饋給客戶端。這個是
E. 緙栬瘧nginx-ct 鎬繪槸澶辮觸鎬庝箞鐮
1.鍙鍒犻櫎鐨/usr/local/nginx鐨勮繖鏍峰垹闄や笉瀹屽叏錛屽洜涓轟細鏈夊叾浠栭厤緗鎴杔ib涓鍒嗘暎鍐嶅叾浠栧湴鏂廣銆2.makeclean鍙鏄娓呴櫎緙栬瘧鏃朵駭鐢熺殑.o妗c銆3.寤鴻甤onfig鏃跺姞鍏prefix鎺烘暟鎸囧畾杞浠跺畨瑁呬綅緗銆銆4.濡傛灉浣犲彧鏄鎯抽噸鏂扮紪璇戞垨鏄鎹㈠埆鐨勭増鏈錛屾病鏈夊垹闄ゆ棤鎵璋撻偅鏃犳墍璋擄紝閲嶆柊config;make;makeinstall鍗沖彲
F. nginx配置文件詳解
一、安裝Nginx
在安裝Nginx之前,需確保系統已經安裝了gcc、 openssl-devel、 pcre-devel和zlib-devel軟體庫。
其中, _with-http_stub_status_mole 可以用來啟用 Nginx 的 NginxStatus 功能,以監控 Nginx 的運行狀態。
二、Nginx的配置文件結構
Nginx的配置文件nginx.conf位於其安裝目錄的conf目錄下。
nginx.conf由多個塊組成,最外面的塊是main,main包含Events和HTTP,HTTP包含upstream和多個Server,Server又包含多個location。
main(全局設置)、server(主機設置)、upstream(負載均衡伺服器設置)和 location(URL匹配特定位置的設置)。
1、main塊設置的指令將影響其他所有設置。
2、server塊的指令主要用喚搜於指定主機和埠。
3、upstream指令主要用於負載均衡,設置一系列的後端伺服器。
4、location塊用於匹配網頁位置。
這四者之間的關系式:server繼承main,location繼承server,upstream既不會繼承其他設置也不會被繼承。
在這四個部分當中,每個部分都包含若干指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令,同時每個部分還可以使用其他HTTP模塊指令,例如Http SSL模塊、HttpGzip Static模塊和Http Addition模塊等。
三、Nginx的全局配置
events事件指令是設定Nginx的工作模式及連接數上限:
use是個事件模塊指令,用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。
其中select和poll都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系統中。對於Linux系統,epoll工作模式是首選worker_connections也是個事件模塊指令,用於定義Nginx每個進程的最大連接數和塌歷,默認是1024。
最大客戶端連接數由worker_processes和worker_connections決定,即Max_client=worker_processes*worker_connections。
在作為反向代理時,max_clients變為:max_clients = worker_processes * worker_connections/4。
進程的最大連接數受Linux系統進程的最大打開文件數限制,在執行操作系統命令「ulimit -n 65536」後worker_connections的設置才能生效。
四、下面配置Nginx的HttpGzip模塊。這個模塊支持在線實時壓縮輸出數據流。
通過/opt/nginx/sbin/nginx -V命令可以查看安裝Nginx時的編譯選項,由輸出可知,已經安裝了HttpGzip模塊。
五、負載均衡配置
下面設定負載均衡的伺服器列表:
upstream是Nginx的HTTP Upstream模塊,這個模塊通過一個簡單的調度演算法來實現客戶端IP到後端伺服器的負載均衡。
在上面的設定中,通過upstream指令指定了一個負載均衡器的名稱cs.com。這個名稱可以任意指定,在後面需要的地方直接調用即可,Nginx的負載均衡模塊目前支持4種調度演算法。
六、server虛擬主機配置
下面介紹對虛擬主機的配置。
建議將對虛擬主機進行配置的內容寫進另外一個文件,然後通過include指令包含進來,這樣更便於維護和管理。
server標志定義虛擬主機開始,listen用於指定虛擬主機的服務埠,server_name用來指定IP地址或者域名,多個域名之間用空格分 開。index用於設定訪問的默認首頁地址,衫搏root指令用於指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。
Charset用於 設置網頁的默認編碼格式。access_log用來指定此虛擬主機的訪問日誌存放路徑,最後的main用於指定訪問日誌的輸出格式。
七、location URL匹配配置
URL地址匹配是進行Nginx配置中最靈活的部分。 location支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指令實現Nginx對動、靜態網頁進行過濾處理。使用location URL匹配配置還可以實現反向代理,用於實現PHP動態解析或者負載負載均衡。
以下這段設置是通過location指令來對網頁URL進行分析處理,所有擴展名以.gif、.jpg、.jpeg、.png、.bmp、.swf結尾的靜態文件都交給nginx處理,而expires用來指定靜態文件的過期時間,這里是30天。
八、StubStatus模塊配置
StubStatus模塊能夠獲取Nginx自上次啟動以來的工作狀態,此模塊非核心模塊,需要在Nginx編譯安裝時手工指定才能使用此功能。
stub_status設置為「on」表示啟用StubStatus的工作狀態統計功能。access_log 用來指定StubStatus模塊的訪問日誌文件。auth_basic是Nginx的一種認證機制。
auth_basic_user_file用來指定認證的密碼文件,由於Nginx的auth_basic認證採用的是與Apache兼容的密碼文件,因此需要用Apache的htpasswd命令來生成密碼文件。
然後輸入兩次密碼後確認之後添加用戶成功。
要查看Nginx的運行狀態,可以輸入http://ip/NginxStatus,輸入創建的用戶名和密碼就可以看到Nginx的運行狀態。
Active connections表示當前活躍的連接數,第三行的三個數字表示 Nginx當前總共處理了34561個連接, 成功創建次握手, 總共處理了354399個請求。
最後一行的Reading表示Nginx讀取到客戶端Header信息數, Writing表示Nginx返回給客戶端的Header信息數,「Waiting」表示Nginx已經處理完,正在等候下一次請求指令時的駐留連接數。
在最後這段設置中,設置了虛擬主機的錯誤信息返回頁面,通過error_page指令可以定製各種錯誤信息的返回頁面。在默認情況下,Nginx會在主目錄的html目錄中查找指定的返回頁面。
特別需要注意的是,這些錯誤信息的返回頁面大小一定要超過512K,否者會被ie瀏覽器替換為ie默認的錯誤頁面。