這篇文章主要記錄做者如何在FreeBSD上構架Nginx服務器。做者採用下載該程序的一個源代碼包手動編譯的方法,而不是使用包管理工具。這樣作有兩個緣由:首先包質量不能保證,或無效或版本舊;其次須要在編譯時對多種重要的選項進行配置。nginx
另外,相關FreeBSD初始優化見博主以前的博文。正則表達式
Nginx是一個由C語言編寫的程序,所以首先須要在系統上安裝編譯工具。咱們採用常見GNU的GCC。確保系統上安裝GCC:算法
# gccvim
gcc: No input files specified服務器
通常在類UNIX環境下,你們喜歡使用wget下載。工具
#make install clean優化
剛剛安裝完後,wget並未能使用,須要執行下面的命令後方可生效。網站
#rehashspa
在Nginx編譯須要PCRE(Perl Compatible Regular Expression),由於Nginx的Rewrite模塊和HTTP核心模塊會使用到PCRE正則表達式語法。
#make install clean
若原來安裝有舊版本,可能會報錯,使用make reinstall clean便可。
zlib庫提供了開發人員的壓縮算法,在Ngnix的各類模塊中須要使用。可使用ports方法,在安裝PHP時一同安裝。在此採用獨立安裝方法。首先查看官方站http://zlib.net的最新版本,而後進行下載解壓配置安裝:
#wget http://zlib.net/zlib-1.2.8.tar.gz
#tar zxvf zlib-1.2.8.tar.gz
#cd zlib-1.2.8
#./configure --libdir=/usr/lib --includedir=/usr/include
#make install clean
(1) 首先查看官網網站http://nginx.net查看最新版本,而後進行下載解壓:
#wget http://nginx.org/download/nginx-1.5.1.tar.gz
#tar zxvf nginx-1.5.1.tar.gz
#cd nginx-1.5.1
(2) Nginx編譯會以debug方式編譯,編譯後的文件有3兆。經如下修改後,文件能夠減少到500KB左右。
#vim auto/cc/gcc
將約174行的「CFLAGS="$CFLAGS -g"」註釋掉。
(3) 配置選項。
這些選項在完成程序的創建安裝後不可編輯,他直接影響該項目的二進制文件。
l 較容易的是所有采用默認的選項,可是這樣設置會使你錯過跟多功能。
#./configure
l 普通的HTTP和HTTPS服務器。(在安裝FreeBSD的時候,已經內建了www用戶和www用戶組,所以不須要在本身創建了)
#./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
其餘模塊也可經過選項進行安裝,但可能須要安裝額外的庫。
l 郵件服務器代理。
#./configure --user=www --group=www --with-mail --with-mail_ssl_module
若僅僅做爲郵件代理不使用HTTP服務,則加入選項「--without-http」
(4) 編譯和安裝nginx。
#make
#make install clean
(5) 測試配置文件
#/usr/local/nginx/sbin/nginx -t
(6) 開機後自動啓動Nginx
l 建立Nginx服務配置腳本
#vim /usr/local/etc/rc.d/nginx.sh
加入如下內容:(若在安裝時改變了默認目錄,請加以修改)
nginx=/usr/local/nginx/sbin/nginx
conf=/usr/local/nginx/conf/nginx.conf
case $1 in
start)
echo -n "Starting Nginx"
$nginx -c $conf
echo " done"
;;
stop)
echo -n "Stopping Nginx"
killall -9 nginx
echo " done"
;;
test)
$nginx -t -c $conf
;;
reload)
echo -n "Reloading Nginx"
ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP
echo " done"
;;
restart)
$nginx stop
$nginx start
;;
show)
ps -aux|grep nginx
;;
*)
echo -n "Usage: $0 {start|restart|reload|stop|test|show}"
;;
esac
exit 0
l 可執行權限
#chmod +x /usr/local/etc/rc.d/nginx.sh
l 加入自啓動項
加入「nginx_enable="YES"」FreeBSD上構架Nginx服務器