安裝nginx方法有很多,比如像Windows平臺下可以直接下載已經(jīng)編譯好的二進制文件,解壓完成后可以直接運行。下面我只說在Debian/Ubuntu下編譯源代碼的安裝方法。
首先,需要下載nginx源代碼,可以在官網(wǎng)直接下載,也可以使用版本控制工具來下載代碼,我是從github上clone到本地的。 接下來,將代碼解壓后,需要執(zhí)行configure命令來配置你的nginx安裝信息。下面有一個配置命令的例子,是官網(wǎng)提供的:
./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-4.4 --with-zlib=../zlib-1.1.3
我這里簡潔描述一下配置命令的幾個參數(shù)的含義:
--prefix=path 定義服務(wù)器保存文件的目錄,默認為/usr/local/nginx
--sbin-path=path nginx執(zhí)行文件名,默認為prefix/sbin/nginx
--conf-path=path 設(shè)置nginx.conf配置文件名,默認為prefix/conf/nginx.conf
--pid-path=path 設(shè)置nginx.pid文件名,它用來保存nginx主進程的進程ID,默認為prefix/logs/nginx.pid
--error-log-path=path 設(shè)置錯誤日志文件名,默認為prefix/logs/error.log
--http-log-path=path 設(shè)置HTTP請求日志文件名,默認為prefix/logs/access.log
--user-name=path 設(shè)置未授權(quán)用戶名,默認為nobody
--group=name 設(shè)置組名,默認為未授權(quán)用戶名
--with-select_module 編譯或取消編譯利用select()方法的模塊
--with-poll_module 編譯或取消編譯利用poll()方法的模塊
--without-http_gzip_module 取消編譯HTTP服務(wù)器壓縮響應(yīng)的模塊,需要zlip庫
--without-http_rewrite_module 取消編譯HTTP服務(wù)器重定向請求或修改請求URI地址的模塊,需要PCRE庫
--without-http_proxy_module 取消編譯HTTP服務(wù)器代理模塊
--with-http_ssl_module 編譯添加對HTTPS協(xié)議的支持,需要OpenSSL庫
--with-pcre=path 設(shè)置PCRE庫的源代碼路徑,下載PCRE源碼后解壓縮到指定的path即可,剩下的交給nginx的./configure和make命令完成
--with-pcre-jit 編譯PCRE庫支持及時編譯
--with-zlib=path 設(shè)置zlib庫源代碼的路徑,同樣下載zlib源碼后解壓到指定的path即可
--with-cc-opt=parameters 設(shè)置CFLAGS變量的額外參數(shù)
--with-ld-opt=parameters 設(shè)置鏈接時的額外參數(shù)
上面說到的zlib庫、PCRE庫和OpenSSL庫,我在安裝時都自己下載了,地址在上面也給出了,可以自己完成編譯工作。
執(zhí)行configure命令后,再執(zhí)行make install命令(如果你安裝的路徑需要授權(quán),在前面加上sudo)。
我是安裝到了/usr/local/nginx目錄下,在安裝完成后配置了/etc/environment里的PATH環(huán)境變量,將我的nginx安裝目錄添加到了PATH路徑中,/etc/environment生效后(source命令)。在終端執(zhí)行nginx命令提示權(quán)限不夠,執(zhí)行sudo命令提示找不到nginx命令。
sudo有時候會出現(xiàn)找不到命令,而明明PATH路徑下包含該命令,讓人疑惑。其實出現(xiàn)這種情況的原因,主要是因為當 sudo以管理權(quán)限執(zhí)行命令的時候,linux將PATH環(huán)境變量進行了重置,當然這主要是因為系統(tǒng)安全的考慮,但卻使得sudo搜索的路徑不是我們想要的PATH變量的路徑,當然就找不到我們想要的命令了。兩種方法解決該問題:
首先,都要打開sudo的配置文件:sudo visudo
1.可以使用 secure_path 指令修改 sudoers 中默認的 PATH為你想要的路徑。這個指令指定當用戶執(zhí)行 sudo 命令時在什么地方尋找二進制代碼和命令。這個選項的目的顯然是要限制用戶運行 sudo 命令的范圍,這是一種好做法。
2.將Defaults env_reset改成Defaults !env_reset取消掉對PATH變量的重置,然后在.bashrc中最后添加alias sudo='sudo env PATH=$PATH',這樣sudo執(zhí)行命令時所搜尋的路徑就是系統(tǒng)的PATH變量中的路徑,如想添加其他變量也是類似。
解決完后執(zhí)行sudo nginx沒有提示,再啟動瀏覽器輸入http://localhost回車,如果出現(xiàn)下面的頁面說明安裝成功。如果需要退出nginx,執(zhí)行sudo nginx -s quit命令即可。