???
Hello World !
是一種心態(tài),也是一種格局。力透紙背奄喂,寫小白看得懂的技術(shù)文章铐殃!
一、準(zhǔn)備工作
??? 1跨新、Linux系統(tǒng)服務(wù)器富腊,例如這里使用的系統(tǒng)是CentOS7.7
??? 2、SSH連接工具域帐,用于遠(yuǎn)程連接Linux服務(wù)器赘被,推薦使用SecureCRT
??? 3、Nginx安裝文件肖揣,這里安裝的版本為nginx-1.17.5
民假,官網(wǎng)下載地址:http://nginx.org/download/nginx-1.17.5.tar.gz
??? 4、下載后的Nginx安裝文件nginx-1.17.5.tar.gz
龙优,通過SecureCRT
中的文件上傳工具SecureFX
上傳到Linux服務(wù)器(在Linux服務(wù)器上也可以直接使用wget http://nginx.org/download/nginx-1.17.5.tar.gz
下載)
二羊异、編譯安裝
??? 1、解壓Nginx安裝包nginx-1.17.5.tar.gz
到/usr/local/src/
目錄彤断,解壓出來的目錄為nginx-1.17.5
[root@localhost ~]# ll
total 692696
-rw-------. 1 root root 1430 Oct 22 11:05 anaconda-ks.cfg
-rw-r--r--. 1 root root 10267082 Oct 27 16:29 apache-tomcat-8.5.47.tar.gz
-rw-r--r--. 1 root root 194151339 Oct 27 12:39 jdk-8u231-linux-x64.tar.gz
-rw-r--r--. 1 root root 503854832 Oct 27 19:19 mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz
-rw-r--r--. 1 root root 1036056 Oct 27 16:35 nginx-1.17.5.tar.gz
[root@localhost ~]# tar -zxvf nginx-1.17.5.tar.gz -C /usr/local/src/
??? 2球化、編譯準(zhǔn)備
進(jìn)入解壓后的安裝文件目錄/usr/local/src/nginx-1.17.5/
,執(zhí)行./configure
命令瓦糟。這一步用來生成 Makefile
筒愚,為下一步的編譯做準(zhǔn)備,可以通過在./configure
后加參數(shù)來對(duì)安裝進(jìn)行控制菩浙,比如./configure --prefix=/usr/
意思是將該軟件安裝在 /usr/
目錄下巢掺,不指定時(shí)默認(rèn)的安裝目錄為/usr/local/
(這里我們安裝在默認(rèn)的安裝目錄下)。
[root@localhost src]# cd nginx-1.17.5/
[root@localhost nginx-1.17.5]# ll
total 760
drwxr-xr-x. 6 1001 1001 4096 Nov 7 11:04 auto
-rw-r--r--. 1 1001 1001 300262 Oct 22 23:16 CHANGES
-rw-r--r--. 1 1001 1001 458263 Oct 22 23:16 CHANGES.ru
drwxr-xr-x. 2 1001 1001 168 Nov 7 11:04 conf
-rwxr-xr-x. 1 1001 1001 2502 Oct 22 23:16 configure
drwxr-xr-x. 4 1001 1001 72 Nov 7 11:04 contrib
drwxr-xr-x. 2 1001 1001 40 Nov 7 11:04 html
-rw-r--r--. 1 1001 1001 1397 Oct 22 23:16 LICENSE
drwxr-xr-x. 2 1001 1001 21 Nov 7 11:04 man
-rw-r--r--. 1 1001 1001 49 Oct 22 23:16 README
drwxr-xr-x. 9 1001 1001 91 Nov 7 11:04 src
[root@localhost nginx-1.17.5]# ./configure
./configure
編譯選項(xiàng)如下:
–prefix=<path> Nginx安裝路徑劲蜻。如果沒有指定陆淀,默認(rèn)為 /usr/local/nginx
–sbin-path=<path> Nginx可執(zhí)行文件安裝路徑。只能安裝時(shí)指定先嬉,如果沒有指定轧苫,默認(rèn)為 <prefix>/sbin/nginx
–conf-path=<path> 在沒有給定`–c`選項(xiàng)下默認(rèn)的`nginx.conf`的路徑。如果沒有指定疫蔓,默認(rèn)為 <prefix>/conf/nginx.conf
–pid-path=<path> 在nginx.conf中沒有指定pid指令的情況下含懊,默認(rèn)的Nginx.pid的路徑。如果沒有指定衅胀,默認(rèn)為 <prerix>/logs/nginx.pid
如果報(bào)錯(cuò)(Error)岔乔,一般是因?yàn)?code>CC或GCC
環(huán)境不具備。首次編譯安裝需先安裝編譯環(huán)境滚躯,CentOS7下使用yum -y install
進(jìn)行安裝
[root@localhost src]# yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
模塊依賴:Nginx的一些模塊需要其他第三方庫的支持雏门,例如gzip模塊需要zlib庫嘿歌,rewrite模塊需要pcre庫,ssl功能需要openssl庫等茁影,這里一并安裝
安裝好GCC
環(huán)境后重新執(zhí)行./configure
預(yù)編譯宙帝,編譯成功提示如下:
預(yù)編譯成功在目錄中會(huì)出現(xiàn)Makefile文件:
??? 3、編譯安裝
使用make
命令編譯募闲、make install
命令安裝(make uninstall
是卸載):
[root@localhost nginx-1.17.5]# make
[root@localhost nginx-1.17.5]# make install
安裝后的目標(biāo)目錄為/usr/local/nginx
步脓,包含conf
配置文件目錄、html
靜態(tài)頁面目錄蝇更、logs
日志文件存放目錄、sbin
可執(zhí)行文件所在目錄呼盆,四個(gè)子目錄年扩。
[root@localhost src]# cd /usr/local/nginx/
[root@localhost nginx]# ll
total 4
drwxr-xr-x. 2 root root 4096 Nov 6 09:32 conf
drwxr-xr-x. 2 root root 40 Nov 2 10:11 html
drwxr-xr-x. 2 root root 58 Nov 6 09:04 logs
drwxr-xr-x. 2 root root 19 Nov 2 10:11 sbin
三、啟動(dòng)運(yùn)行
運(yùn)行/usr/local/nginx/sbin
目錄下的nginx
文件即可開啟Nginx访圃。
[root@localhost nginx]# cd sbin/
[root@localhost sbin]# ll
total 3748
-rwxr-xr-x. 1 root root 3835368 Nov 2 10:11 nginx
[root@localhost sbin]# ./nginx
使用ps -ef|grep nginx
命令查看Nginx進(jìn)程(master process
代表主進(jìn)程厨幻,worker process
代表工作進(jìn)程):
[root@localhost sbin]# ps -ef|grep nginx
root 3911 1 0 15:38 ? 00:00:00 nginx: master process ./nginx
bobo 3912 3911 19 15:38 ? 00:00:01 nginx: worker process
bobo 3913 3911 19 15:38 ? 00:00:01 nginx: worker process
bobo 3914 3911 20 15:38 ? 00:00:01 nginx: worker process
bobo 3915 3911 20 15:38 ? 00:00:01 nginx: worker process
root 3918 1588 0 15:38 pts/0 00:00:00 grep --color=auto nginx
Nginx默認(rèn)監(jiān)聽80端口,使用lsof -i:80
查看80端口監(jiān)聽情況(可使用yum -y install lsof
安裝lsof
工具):
[root@localhost sbin]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 3911 root 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3912 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3913 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3914 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
nginx 3915 bobo 6u IPv4 23215 0t0 TCP *:http (LISTEN)
瀏覽器打開http://192.168.2.128/
(你的地址)訪問Nginx頁面:
如果不能正常訪問服務(wù)腿时,可嘗試關(guān)閉防火墻:
systemctl stop firewalld.service
四况脆、配置環(huán)境變量
為了后續(xù)方便操作Nginx,可將/usr/local/nginx/sbin/nginx
可執(zhí)行文件所在目錄添加到系統(tǒng)環(huán)境變量中批糟,添加后可在任意目錄執(zhí)行nginx
命令格了。
1、編輯/etc/profile
系統(tǒng)配置文件
[root@localhost sbin]# vi /etc/profile
??? 2徽鼎、在配置文件/etc/profile
末尾添加如下內(nèi)容(vi命令:使用上下左右鍵移動(dòng)光標(biāo)到目標(biāo)位置盛末,按i
鍵進(jìn)入輸入模式編輯內(nèi)容,按Esc
鍵退回到命令模式否淤,按:wq
保存并退出)
export NGX_HOME=/usr/local/nginx
export NGX_PATH=${NGX_HOME}/sbin
export PATH=$PATH:${JAVA_PATH}:${NGX_PATH}
注意:export PATH=
多個(gè)環(huán)境變量之間使用:
(冒號(hào))分割悄但,變量使用${}
表示。
??? 3石抡、使用source
命令讓配置生效
[root@localhost sbin]# source /etc/profile
五檐嚣、常用命令
??? 1、Nginx常用命令(配置了環(huán)境變量之后可在任意目錄執(zhí)行nginx
命令)
啟動(dòng)命令(默認(rèn)使用
/usr/local/nginx/conf/nginx.conf
配置文件):
/usr/loacl/nginx/sbin/nginx
指定配置文件啟動(dòng):
nginx -c /usr/local/nginx/conf/nginx.conf
測(cè)試當(dāng)前Nginx配置文件是否正確:
nginx -t
測(cè)試指定的Nginx配置文件是否正確:
nginx -t -c /usr/local/nginx/conf/nginx.conf
修改配置后重新加載生效:
nginx -s reload
當(dāng)新的配置文件測(cè)試通過后啰扛,通過nginx -s reload
命令加載修改后的配置文件嚎京,命令下達(dá)后:
a. Nginx的master
進(jìn)程檢查配置文件的正確性,若是錯(cuò)誤則返回錯(cuò)誤信息隐解,Nginx繼續(xù)采用原配置文件進(jìn)行工作(因?yàn)?code>worker進(jìn)程未受到影響)挖藏;
b. Nginx啟動(dòng)新的worker
進(jìn)程,采用新的配置文件厢漩;
c. Nginx將新的請(qǐng)求分配新的worker
進(jìn)程膜眠;
d. Nginx等待以前的worker
進(jìn)程的全部請(qǐng)求響應(yīng)完畢,關(guān)閉相關(guān)worker
進(jìn)程;
e. 重復(fù)上面過程宵膨,直到全部舊的worker
進(jìn)程都被關(guān)閉掉架谎。
重新加載日志文件:
nginx -s reopen
開啟日志后(例如access.log
),日志文件中存放著所有的訪問記錄辟躏,時(shí)間長(zhǎng)了文件會(huì)越積越大谷扣。必要時(shí)需要做日志切割(由于Linux系統(tǒng)文件句柄的特點(diǎn),當(dāng)文件被打開的情況下使用mv
移動(dòng)文件捎琐,原來操作這個(gè)文件的進(jìn)程還是有該文件的inode信息会涎,會(huì)繼續(xù)讀寫原來的文件,因此在不關(guān)閉進(jìn)程的情況下簡(jiǎn)單的mv
是無法切割文件的)
Nginx文件切割過程如下:
a. mv
當(dāng)前日志文件到其他目錄瑞凑,這個(gè)時(shí)候Nginx繼續(xù)寫原來的文件(寫入到新位置文件中)末秃;
b. 使用nginx -s reopen
命令生成日志文件,這時(shí)Nginx會(huì)把新產(chǎn)生的日志信息寫到新生成的日志文件中籽御。
這樣就完成了日志的切割工作练慕,同時(shí)切割過程中沒有日志的丟失。
快速停止Nginx:
nginx -s stop
優(yōu)雅的停止Nginx:
nginx -s quit
下一篇技掏,我們深入探索Nginx配置文件铃将,完成:1、反向代理哑梳;2劲阎、熱備;3鸠真、負(fù)載均衡(輪詢哪工、權(quán)重、IP_HASH)4、緩存;5霞赫、靜態(tài)資源訪問等的配置空免。