cd?~? wget?http://nginx.org/keys/nginx_signing.key? sudo?apt-key?add?nginx_signing.key? sudo?nano?/etc/apt/sources.list???#?添加以下兩句? deb?http://nginx.org/packages/ubuntu/?precise?nginx? deb-src?http://nginx.org/packages/ubuntu/?precise?nginx? sudo?apt-get?update? sudo?apt-get?install?nginx
ubuntu 從ppa源安裝 nginx :
sudo?add-apt-repository?ppa:nginx/stable? sudo?apt-get?update? sudo?apt-get?install?nginx
ubuntu 從常規源安裝 nginx :
sudo?apt-get?install?nginx
編譯安裝nginx
wget?http://nginx.org/packages/mainline/ubuntu/pool/nginx/n/nginx/nginx_1.5.7-1~precise_i386.deb? wget?http://nginx.org/download/nginx-1.5.7.tar.gz tar?xzf?nginx-1.5.7.tar.gz cd?nginx-1.5.7
(注意:nginx1.5.7是mainline版而非stable版)
為了方便開發和管理,我在根目錄下新建了一個png目錄,并且目錄所有者設置為當前用戶,nginx就編譯在/png/nginx/1.5.7下面:
sudo?mkdir?/png sudo?chown?eechen:eechen?/png
運行用戶我定義為png:png,所以我需要新建這樣一個用戶:
sudo?addgroup?png?--system sudo?adduser?png?--system?--disabled-login?--ingroup?png?--no-create-home?--home?/nonexistent?--gecos?"png?user"?--shell?/bin/false
(新建用戶的命令可以參考官方deb包里的預安裝腳本debian/preinst)
編譯參數參考了nginx官方提供的deb包(nginx -v可見).
./configure?
--prefix=/png/nginx/1.5.7? --sbin-path=/png/nginx/1.5.7/sbin/nginx? --conf-path=/png/nginx/1.5.7/conf/nginx.conf? --error-log-path=/png/nginx/1.5.7/var/log/error.log? --http-log-path=/png/nginx/1.5.7/var/log/access.log? --pid-path=/png/nginx/1.5.7/var/run/nginx.pid? --lock-path=/png/nginx/1.5.7/var/run/nginx.lock? --http-client-body-temp-path=/png/nginx/1.5.7/var/cache/client_temp? --http-proxy-temp-path=/png/nginx/1.5.7/var/cache/proxy_temp? --http-fastcgi-temp-path=/png/nginx/1.5.7/var/cache/fastcgi_temp? --http-uwsgi-temp-path=/png/nginx/1.5.7/var/cache/uwsgi_temp? --http-scgi-temp-path=/png/nginx/1.5.7/var/cache/scgi_temp? --user=png? --group=png? --with-http_ssl_module? --with-http_realip_module? --with-http_addition_module? --with-http_sub_module? --with-http_dav_module? --with-http_flv_module? --with-http_mp4_module? --with-http_gunzip_module? --with-http_gzip_static_module? --with-http_random_index_module? --with-http_secure_link_module? --with-http_stub_status_module? --with-mail? --with-mail_ssl_module? --with-file-aio? --with-ipv6
注意:這一步按錯誤提示安裝依賴的包,這時就是apt要發威的時候了,比如我的系統安裝了這些包:
sudo?apt-get?-y?install?
build-essential? autoconf? libtool? libxml2? libxml2-dev? openssl? libcurl4-openssl-dev? libbz2-1.0? libbz2-dev? libjpeg-dev? libpng12-dev? libfreetype6? libfreetype6-dev? libldap-2.4-2? libldap2-dev? libmcrypt4? libmcrypt-dev? libmysqlclient-dev? libxslt1.1? libxslt1-dev? libxt-dev? libpcre3-dev
安裝好這些包后,下次編譯新版nginx就不用再裝了,而且基本也滿足編譯php時configure的需求.
好了,configure成功后就可以編譯安裝了:
time?make?&&?make?install
time主要用來查看本次編譯耗時.
編譯好后可以看看這個家伙的個頭:
du?-sh?/png/nginx/1.5.7/sbin/nginx
5.5m?/png/nginx/1.5.7/sbin/nginx
環境簡單配置總結
減小nginx編譯后的文件大小:
編輯源文件 nginx-1.5.7/auto/cc/gcc 去除debug信息(注釋掉即可):
#?debug? #?cflags="$cflags?-g"
這樣編譯后的主程序大小則為700多k,和nginx官方提供的deb包程序大小相近.
另外configure時去掉一些不需要的模塊,編譯后的可執行文件會更小.
當然,我需要一個服務腳本用來管理nginx,這時同樣可以借助官方deb包里提供的服務腳本etc/init.d/nginx.
我把它放到/png/nginx/1.5.7/nginx,對開頭定義的幾個值(13到19行)進行稍加修改:
path=/sbin:/usr/sbin:/bin:/usr/bin desc=nginx name=nginx conffile=/etc/nginx/nginx.conf daemon=/usr/sbin/nginx pidfile=/var/run/$name.pid scriptname=/etc/init.d/$name 改為 path=/sbin:/usr/sbin:/bin:/usr/bin desc=nginx name=nginx conffile=/png/nginx/1.5.7/conf/nginx.conf daemon=/png/nginx/1.5.7/sbin/nginx pidfile=/png/nginx/1.5.7/var/run/$name.pid scriptname=/png/nginx/1.5.7/$name
啟動前先創建一個cache目錄,否則會提示出錯:
mkdir?/png/nginx/1.5.7/var/cache
啟動nginx:
sudo?/png/nginx/1.5.7/nginx?start
測試頁面:
curl?-i?`hostname`
看一下端口:
sudo?netstat?-antp|grep?nginx
查看一下它占用的內存:
htop按f4過濾nginx
用top同樣能看到類似內容:
top?-b?-n1|head?-n7?&&?top?-b?-n1|grep?nginx
主要看res這個值,常駐內存(resident),不包括swap空間的物理內存, 單位為kb,%mem就是以res為參照對象.
可以看到nginx兩個進程占用的物理內存加起來不到2m,內存占用非常小.
另外top里的res這個值對應ps aux里的rss這個值:
ps?aux|head?-n1?&&?ps?aux|grep?nginx
還有我們可以看到nginx的工人進程只有一個線程:
cat?/proc/25047/status|grep?threads
threads:?1
其中25047是nginx工人進程pid號.
把nginx做成系統服務,開機自啟動:
sudo?ln?-s?/png/nginx/1.5.7/nginx?/etc/init.d/png-nginx sudo?update-rc.d?png-nginx?defaults?#開機自啟動? sudo?update-rc.d?-f?png-nginx?remove?#?以后不想開機自啟動可以這樣禁止 sudo?service?png-nginx?reload?#這樣就可以用service來管理nginx服務了,比如重載配置
最后,nginx的主配置文件位于/png/nginx/1.5.7/conf/nginx.conf,自己按需配置.