nginx在官方網站提供了軟件下載,官網地址:http://nginx.org/en/download.html,目前Nginx發佈3種類型的版本:html
1.Mainline version:開發版本nginx
2.Stable version:穩定版本c++
3.Legacy versions:早期版本正則表達式
在Windows系統上經過virtualbox虛擬機安裝的centos7做爲學習的服務器,使用xshell鏈接虛擬機。算法
一.Nginx安裝前相關準備工做shell
1.將下載好的nginx壓縮包經過xftp上傳到虛擬機的目錄中。以下圖所示:windows
2.切換到解壓的目錄,將壓縮包解壓centos
[shell@shell-learn myusr]$ tar -zxvf /mytools/nginx-1.16.0.tar.gz 瀏覽器
3.將用戶切換到root用戶:bash
[shell@shell-learn nginx-1.16.0]$ su root
4.nginx目錄結構介紹
src目錄:存放Nginx的源代碼
man目錄:存放Nginx的幫助文檔
html目錄:存放默認網站文件
contrib目錄:存放其餘機構或組織貢獻的文檔資料
conf目錄:存放Nginx服務器的配置文件
auto目錄:存放大量的腳本文件,和configure腳本程序相關
configure文件:Nginx自動安裝腳本,用於檢查環境,生成編譯代碼須要的makefile文件
CHANGES、CHANGES.ru、LICENSE、README都是Nginx服務器的相關文檔資料
5.Nginx相關依賴包
pcre-devel:爲Nginx模塊(如rewrite)提供正則表達式庫
zlib-devel:爲Nginx模塊(如gzip)提供數據壓縮用的函數庫
openssl-devel:爲Nginx模塊(如ssl)提供密碼算法、證書以及SSL協議等功能
安裝命令:
yum -y install pcre-devel openssl-devel
因爲openssl-devel依賴於zlib-devel,在經過安裝openssl-devel時會自動解決依賴,所以不須要安裝zlib-devel
二.Nginx編譯安裝
1.切換到解壓目錄
[root@shell-learn myusr]$ cd nginx-1.16.0/
2.配置Nginx的編譯選項,指定安裝目錄
[root@shell-learn nginx-1.16.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module
其餘模塊暫時用不到,當用到的時候從新編譯Nginx,並使用--with-選項添加須要的模塊便可。
編譯時候,出現錯誤:./configure: error: C compiler cc is not found ,須要安裝編譯插件:
[root@shell-learn nginx-1.16.0]#yum -y install gcc-c++
3.經過make命令編譯和安裝Nginx
[root@shell-learn nginx-1.16.0]# sudo make && make install
三.Nginx的啓動和中止
1.啓動Nginx
[root@shell-learn nginx-1.16.0]# cd /usr/local/nginx/sbin
[root@shell-learn sbin]# ./nginx
2.查看Nginx運行狀態
[root@shell-learn sbin]# ps aux|grep nginx
root 6324 0.0 0.1 45952 1128 ? Ss 09:08 0:00 nginx: master process ./nginx
nobody 6325 0.0 0.1 46412 1904 ? S 09:08 0:00 nginx: worker process
root 6328 0.0 0.0 112708 984 pts/0 R+ 09:09 0:00 grep --color=auto nginx
前兩行分別是Nginx主進程和工做進程,第三行是grep Nginx命令。主進程以root用戶運行,而工做進程以nobody用戶運行,進程ID分別是6324 和 6325。
3.中止Nginx服務
當即中止服務:
[root@shell-learn sbin]# ./nginx -s stop
從容中止服務:
[root@shell-learn sbin]# ./nginx -s quit
經過kill或者killall命令殺死進程:
kill Nginx的主進程的PID
killall nginx
4.查看端口號佔用
netstat -tlnp
四.訪問測試
1.安裝iptables防火牆
在CentOS 7中防火牆由firewalld來管理,咱們這裏使用iptables管理方式。
中止firewalld服務:
systemctl stop firewalld
systemctl mask firewalld
安裝iptables-services:
yum install iptables-services
啓動iptables服務
systemctl start iptables
設置開機啓動:
systemctl enable iptables
2.配置iptables防火牆,實現開放80端口的訪問
[root@shell-learn ·]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
參數說明:
-I INPUT:表示在INPUT(外部訪問規則)中插入一條規則
-p tcp:指定數據包匹配的協議(tcp、udp、icmp等),這裏指定tcp協議
--dport 80:用於指定數據包匹配的目標端口號,這裏指定80端口
-j ACCEPT:指定對數據包的處理操做(ACCEPT、DROP、REJECT、REDIRECT等),這裏指定ACCEPT操做
3.查看防火牆狀態
[root@shell-learn ·]# service iptables status
4.須要將臨時生效的配置保存
[root@shell-learn ·]# service iptables save
5.重啓iptables 防火牆
[root@shell-learn ·]# service iptables restart
6.訪問Nginx主頁
在windows系統中經過瀏覽器進行訪問:http://nginx服務器的ip地址
五.添加到環境變量
1.查看環境變量
[root@shell-learn ·]# echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/shell/.local/bin:/home/shell/bin
其中/bin和/sbin放置經常使用程序;sbin表示須要管理員權限;/usr/bin和/usr/sbin放置一些工具軟件的可執行程序;/usr/local/bin和/usr/local/sbin放置用戶自行安裝的可執行程序。
2.經過軟連接將nginx程序連接到/usr/local/sbin目錄中
[root@shell-learn ·]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
建立軟連接後,就能夠在任意目錄下直接使用nginx命令來控制nginx服務。
六.添加到系統服務
在centos系統中,service命令其實是調用了/etc/init.d目錄下的shell腳本,所以將nginx添加到系統服務中時,須要在/etc/init.d目錄中編寫一個文件名稱爲nginx的shell腳本。
#! /bin/bash
#Startup script for the nginx Web Server
DAEMON=/usr/local/nginx/sbin/nginx
case "$1" in
start)
echo "Starting Nginx daemon..."
$DAEMON && echo "SUCESS"
;;
stop)
echo "Stopping Nginx daemon..."
$DAEMON -s quit && echo "SUCESS"
;;
reload)
echo "Reloading Nginx daemon..."
$DAEMON -s reload && echo "SUCESS"
;;
restart)
echo "Restart Nginx daemon..."
$DAEMON -s quit
$DAEMON && echo "SUCESS"
;;
*)
echo "Usage: service nginx {start|restart|reload|stop|test|show}"
;;
esac
保存腳本,併爲nginx腳本添加可執行權限
[root@shell-learn ·]# chmod +x /etc/init.d/nginx
七.設置開機自啓動
若nginx服務實現開機啓動,就須要在/etc/init.d/nginx腳本文件中添加對chkconfig的支持,打開腳本文件,在第二行的位置新增以下內容:
#chkconfig: 35 85 15
其中35表示nginx服務容許的啓動級別是3和5,若暫時不開啓任何啓動級別,可使用「-」代替。85和15用於設置nginx服務的啓動(S)順序和關閉(K)順序。數值小的先執行,數值大的後執行。該值是用戶自定義取值範圍在0-99之間。
使用chkconfig命令執行添加nginx服務自啓動操做,具體命令以下:
[root@shell-learn ·]# chkconfig --add nginx
經過chkconfig --list查看添加後的效果。
從新啓動Linux系統,測試nginx服務是否可以開機自啓動。