作者:JackTian
首發於微信公衆號:傑哥的IT之旅(ID:Jake_Internet)
鏈接:Nginx系列教程(一)| 手把手教你在Linux環境下搭建Nginx服務
系列導讀
01. LAMP 系列教程(一)| 詳解 Linux 環境下部署 HTTPD 服務
02. LAMP 系列教程(二)| 如何在 Linux 環境下部署 AWStats 分析系統來監控 Web 站點?
03. LAMP 系列教程(三)| 一文讀懂 HTTPD 服務的訪問控制
04. LAMP 系列教程(四)| MySQL 數據庫系統(一)
05. LAMP 系列教程(五)| MySQL 數據庫系統(二)- SQL語句的基本操作
06. LAMP 系列教程(六)| MySQL 數據庫系統(三)- 數據庫的用戶授權
07. LAMP 系列教程(七)| MySQL 數據庫系統(四)- 數據庫的備份與恢復
08. LAMP 系列教程(八)| 帶你輕鬆玩轉 LAMP 網站架構平臺(一)
09. LAMP 系列教程(九)| LAMP 架構應用案例 - 部署 PHPMyAdmin 系統(二)
一、什麼是 Nginx?
Nginx
是一個高性能的HTTP
和反向代理Web
服務器,也提供了IMAP / POP3 / SMTP
服務,由伊戈爾·賽索耶夫爲俄羅斯訪問量第二的Rambler.ru
站點而開發,第一個公開版本0.1.0
發佈於2004年10月4日
,特點是佔有內存少,併發能力強,專爲性能優化而開發,穩定性和低系統資源消耗,以及對HTTP
併發連接的高處理能力,可支持單臺高達50000
個併發連接數。
那麼,在事實上Nginx
的併發能力在同類型的網頁服務器中表現較好,實際環境中,如果我們採用Nginx
的話,可能是如下該場景的架構圖。其實,在如下這種架構圖中,Nginx
服務器你可以直接理解爲是一臺負載均衡服務器
或者反向代理服務器
,所以當客戶端
發出請求到Nginx服務器
時,Nginx服務器
需將它配置好的規則由客戶端
發來的請求並轉發到後端的LAMP
、Tomcat
、LNMP
上。
二、爲什麼要用 Nginx?
作爲 Web 服務器
相比 Apache,Nginx 使用資源更少,支持更多的併發連接數。在高併發的情況下,Nginx 是 Apache 服務器的替代品,Nginx 作爲負載均衡服務器,內部是支持Rails
和PHP
程序對外服務,也支持作爲HTTP代理服務器
對外服務,採用C語言
編寫,無論在系統資源開銷還是CPU
使用效率要比Perlbal
好很多。
Nginx 配置簡單,Apache 複雜
Nginx 啓動容易,幾乎可以做到7*24
小時不間斷運行,即便很長時間未重新啓動,也能夠在不間斷服務的情況下對軟件版本進行升級,靜態處理性能要比 Apache 高 3倍以上,Nginx 需要配合其他後端來進行使用,而 Apache 對 PHP 支持較簡單,組件同時也比 Nginx 多。
核心點
Nginx 是異步的,多連接可對應一個進程;
Apache 是同步多進程模型,一個連接對應一個進程;
擅長領域
Nginx 適用於前端處理靜態請求;
Apache 適用於後端處理動態請求;
三、Nginx 安裝
安裝支持軟件
Nginx 的配置及運行需要pcre
、zlib
軟件包的支持,需先安裝這些軟件的開發包供相應的庫和頭文件,以此來確保 Nginx 的順利安裝。
# yum -y install pcre-devel zlib-devel
創建運行用戶、組
Nginx 服務程序默認以noboby
身份運行,這裏建議大家創建新的用戶賬號,更準確的控制訪問權限、增加靈活性、降低安全風險;
# useradd -M -s /sbin/nologin nginx
下載編譯安裝
配置 Nginx 的編譯選項時,將安裝目錄設爲/usr/local/nginx
,運行用戶和組均設爲nginx
;啓用http_stub_status_module
模塊以支持狀態統計,便於查看服務器的連接信息。
# wget http://nginx.org/download/nginx-1.17.0.tar.gz
# tar zxf nginx-1.17.0.tar.gz
# cd nginx-1.17.0
# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
# make && make install
爲主程序 Nginx 創建鏈接文件
# ln -s /usr/local/sbin/nginx /usr/local/sbin/
# ls -l /usr/local/sbin/nginx
lrwxrwxrwx. 1 root root 21 6月 4 07:31 /usr/local/sbin/nginx -> /usr/local/sbin/nginx
安裝好之後,進入默認安裝路徑到sbin
目錄下,執行nginx
即可啓動;
# cd /usr/local/nginx/sbin/
# pwd
/usr/local/nginx/sbin
# ./nginx
# nginx
監聽 Nginx 程序的狀態
# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 53816/nginx
監聽到端口後,在瀏覽器中直接訪問Nginx
地址,當瀏覽器看到如下頁面時,說明Nginx
已經安裝成功了。
使用 Nginx 服務腳本
可編寫Nginx
服務腳本,使用chkconfig
和service
工具進行統一管理;
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Server Control Scripts shell
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
if [ -f $PIDF ]; then
echo "Nginx is running.. Start it is error"
else
$PROG
fi
;;
stop)
if [ -f $PIDF ]; then
kill -s QUIT $(cat $PIDF)
rm -rf $PIDF
else
echo "Nginx is stopping .. Stop it is error"
fi
;;
restart)
$0 stop
$0 start
;;
reload)
if [ -f $PIDF ]; then
kill -s HUP $(cat $PIDF)
else
echo "Nginx is stopping . reload it is error"
fi
;;
status)
if [ -f $PIDF ]; then
echo "Nginx is running"
else
echo "Nginx is stopping"
fi
;;
*)
echo "Usage: $0 (start|stop|restart|reload|status)"
exit 1
esac
exit 0
# chmod +x /etc/init.d/nginx
# chkconfig --add nginx
如果修改了Nginx
的配置文件,可通過./nginx -s reload
命令加載Nginx
配置文件。
# ./nginx -s reload
來和上萬名讀者一起見證彼此成長!
掃描下方二維碼,添加傑哥微信,備註:地區/城市-職業方向/學校-暱稱
,即可加入傑哥的IT之旅讀者羣
,羣內僅供學習交流、日常互動、資源分享、經驗分享等,一定要記得備註,我會盡快通過好友驗證的。
👆長按識別,添加微信
推薦閱讀
1、GitHub 標星 2.5K+!教你通過玩遊戲的方式學習 VIM!
2、GitHub 標星 8K+!一款開源替代 ls 的工具你值得擁有!
3、沒有一行代碼,「2020 新冠肺炎記憶」這個項目卻登上了 GitHub 中文趨勢榜第一!
4、RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 實現無人值守安裝
5、Linux 環境下實戰 Rsync 備份工具及配置 rsync+inotify 實時同步
6、爲什麼要學習 Markdown?究竟有什麼用?
7、萬字長文帶你瞭解最常用的開源 Squid 代理服務器
8、一款常用的 Squid 日誌分析工具
今天的推薦不知道大家喜歡嗎?如果你喜歡,請在文章底部留言和點贊,以表示對我的支持,你們的留言
和點贊
是我持續更新的動力哦,感謝大家!
1、點個贊,讓更多的人看到這篇文章,順便激勵下我,嘻嘻。
2、關注我的原創微信公衆號「傑哥的IT之旅」
,專注於IT技術乾貨文章,以及不定期的分享學習資料,實用工具,面試經驗
等,當然了還有內推機會
哦,期待你的關注!