Nginx系列教程(一)| 手把手教你在Linux環境下搭建Nginx服務

作者: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服務器需將它配置好的規則由客戶端發來的請求並轉發到後端的LAMPTomcatLNMP上。
在這裏插入圖片描述

二、爲什麼要用 Nginx?

作爲 Web 服務器

相比 Apache,Nginx 使用資源更少,支持更多的併發連接數。在高併發的情況下,Nginx 是 Apache 服務器的替代品,Nginx 作爲負載均衡服務器,內部是支持RailsPHP程序對外服務,也支持作爲HTTP代理服務器對外服務,採用C語言編寫,無論在系統資源開銷還是CPU使用效率要比Perlbal好很多。

Nginx 配置簡單,Apache 複雜

Nginx 啓動容易,幾乎可以做到7*24小時不間斷運行,即便很長時間未重新啓動,也能夠在不間斷服務的情況下對軟件版本進行升級,靜態處理性能要比 Apache 高 3倍以上,Nginx 需要配合其他後端來進行使用,而 Apache 對 PHP 支持較簡單,組件同時也比 Nginx 多。

核心點

Nginx 是異步的,多連接可對應一個進程;
Apache 是同步多進程模型,一個連接對應一個進程;

擅長領域

Nginx 適用於前端處理靜態請求;
Apache 適用於後端處理動態請求;

三、Nginx 安裝

安裝支持軟件

Nginx 的配置及運行需要pcrezlib軟件包的支持,需先安裝這些軟件的開發包供相應的庫和頭文件,以此來確保 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 64 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服務腳本,使用chkconfigservice工具進行統一管理;

#!/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技術乾貨文章,以及不定期的分享學習資料,實用工具,面試經驗等,當然了還有內推機會哦,期待你的關注!

歡迎關注我的微信公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章