1.下載源碼包,官網(wǎng)找最新穩(wěn)定版本
wget http://nginx.org//download/nginx-1.16.0.tar.gz
也可以直接官網(wǎng)下載到PC本地 xshell 使用rz命令上傳 或是ftp上傳
2.解壓.通常下載到/usr/local/src ,直接解壓到該目錄,用來專門放置安裝壓縮包和解壓源碼
3.配置參數(shù).
./configure --help #查看可以設(shè)置哪些參數(shù)
其中 --prefix=install_path 這個(gè)參數(shù)是指定 make install的時(shí)候 軟件安裝的目錄
4.編譯
make [按照Makefile生成模塊]
5.安裝
make install
以nginx為例
1.基礎(chǔ)概念和依賴
nginx安裝可以使用yum或源碼安裝砍鸠,推薦使用源碼次询,一是yum的版本比較舊,二是使用源碼可以自定義功能雀费,方便業(yè)務(wù)的上的使用,源碼安裝需要提前準(zhǔn)備標(biāo)準(zhǔn)的編譯器亚铁,GCC的全稱是(GNU Compiler collection)伪很,其有GNU開發(fā)髓涯,并以GPL即LGPL許可,是自由的類UNIX即蘋果電腦Mac OS X操作系統(tǒng)的標(biāo)準(zhǔn)編譯器年叮,因?yàn)镚CC原本只能處理C語言具被,所以原名為GNU C語言編譯器,后來得到快速發(fā)展只损,可以處理C++,Fortran一姿,pascal,objective-C跃惫,java以及Ada等其他語言叮叹,此外還需要Automake工具,以完成自動(dòng)創(chuàng)建Makefile的工作爆存,Nginx的一些模塊需要依賴第三方庫蛉顽,比如pcre(支持rewrite),zlib(支持gzip模塊)和openssl(支持ssl模塊)
官網(wǎng)http://nginx.org/en/download.html下載最新穩(wěn)定版本到本地 本例子
登錄Xshell連接服務(wù)器[阿里云ECS]
yum install lrzsz #用來使用rz命令
cd /usr/local/src #進(jìn)入用戶編譯安裝源碼目錄
rz # rz是代表上傳 會(huì)彈出window的選擇文件窗口,找到上面步驟下載的壓縮包,確定后會(huì)下載到當(dāng)前目錄下
yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel # 安裝nginx的編譯依賴
2.解壓
tar -vxf nginx-1.16.0.tar.gz # 解壓到當(dāng)前目錄
ll #查看解壓后的當(dāng)前目錄下的所有文件 # 主要目的看解壓后的文件名,一般為去掉壓縮為后綴的文件名,此處為nginx-1.16.0
cd nginx-1.16.0
3.配置編譯安裝參數(shù)[如果想自己管理自己的軟件安裝,注意配置--prefix=你管理自己編譯安裝軟件的目錄路徑]
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/usr/local/nginx/logs/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre
4.make [編譯]
我在這里出現(xiàn)兩個(gè)問題 . 解決方案應(yīng)該都在編譯前就執(zhí)行
>編譯參數(shù)指定了用戶和用戶組 如果不存在會(huì)報(bào)錯(cuò) 所以要先創(chuàng)建nginx用戶
>編譯參數(shù)指定了日志目錄 可能該目錄目錄路徑?jīng)]有可寫權(quán)限 比如 日志放在 /var/log/nginx/下 但是 /var 目錄不可寫 會(huì)導(dǎo)致安裝報(bào)錯(cuò)
5.make install [安裝]
此文章僅為學(xué)習(xí)記錄,原文章步驟非常詳細(xì)和好理解,見https://www.cnblogs.com/zhang-shijie/p/5294162.html
后續(xù)使用
/usr/local/nginx/sbin/nginx #啟動(dòng)nginx,通常沒有輸出任何信息,且下一步滿足即成功
#遭遇了netstate -ntlp #查看網(wǎng)絡(luò)連接進(jìn)程,看到nginx進(jìn)程即為成功,
#在瀏覽器輸入服務(wù)器IP或解析過的域名
#會(huì)顯示/usr/local/nginx/html/index.html
啟動(dòng)過程可能會(huì)提示/var/run/nginx/nginx.pid 不存在或是不是一個(gè)文件之類的提示
建議調(diào)整配置文件/usr/local/nginx/conf/nginx.conf里的pid參數(shù),指定/usr/local/nginx/logs/nginx.pid [記得先創(chuàng)建logs目錄]
設(shè)置為開機(jī)自啟
創(chuàng)建nginx啟動(dòng)命令腳本
vim /etc/init.d/nginx #內(nèi)容如下
插入以下內(nèi)容, 注意修改PATH和NAME字段, 匹配自己的安裝路徑 (這段是從網(wǎng)上copy的) 不過查看了相關(guān)參數(shù),跟我的編譯參數(shù)完全匹配
#! /bin/bash
# chkconfig: - 85 15
PATH=/usr/local/nginx
DESC="nginx daemon"
NAME=nginx
DAEMON=$PATH/sbin/$NAME
CONFIGFILE=$PATH/conf/$NAME.conf
PIDFILE=$PATH/logs/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
set -e
[ -x "$DAEMON" ] || exit 0
do_start() {
$DAEMON -c $CONFIGFILE || echo -n "nginx already running"
}
do_stop() {
$DAEMON -s stop || echo -n "nginx not running"
}
do_reload() {
$DAEMON -s reload || echo -n "nginx can't reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
do_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
do_stop
echo "."
;;
reload|graceful)
echo -n "Reloading $DESC configuration..."
do_reload
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
do_stop
do_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
exit 3
;;
esac
exit 0
設(shè)置執(zhí)行權(quán)限
chmod a+x /etc/init.d/nginx
注冊(cè)成服務(wù)
chkconfig --add nginx
設(shè)置開機(jī)啟動(dòng)
chkconfig nginx on
重啟, 查看驗(yàn)證nginx服務(wù)是否自動(dòng)啟動(dòng)
#重啟
reboot #或
shutdown -h 0 -r
#查看進(jìn)程
ps aux | grep nginx #或
netstat -nplt | grep nginx
對(duì)nginx服務(wù)執(zhí)行停止/啟動(dòng)/重新讀取配置文件操作
#啟動(dòng)nginx服務(wù)
systemctl start nginx.service
#停止nginx服務(wù)
systemctl stop nginx.service
#重啟nginx服務(wù)
systemctl restart nginx.service
#重新讀取nginx配置(這個(gè)最常用, 不用停止nginx服務(wù)就能使修改的配置生效)
systemctl reload nginx.service
成功