新聞中心
隨著互聯(lián)網(wǎng)的快速發(fā)展,Web服務(wù)器的性能越來越重要。作為一款免費(fèi)的操作系統(tǒng),Linux一直以來都是Web服務(wù)器的首選之一,而Nginx則是一個高性能的開源Web服務(wù)器軟件,它具有高效的負(fù)載均衡、反向代理和緩存等功能,可以讓W(xué)eb應(yīng)用獲得更高的性能。

本文將介紹如何使用Linux和Nginx搭建一個高性能的Web服務(wù)器,以便讓讀者了解如何構(gòu)建一個快速且可靠的Web服務(wù)器。
一、安裝Linux操作系統(tǒng)
要搭建一個Web服務(wù)器,需要選擇一個適合的操作系統(tǒng)。目前較為流行的選擇有Ubuntu、CentOS、Debian等。本文以Ubuntu作為我們的操作系統(tǒng)。
在安裝Ubuntu之前,需要先準(zhǔn)備好安裝介質(zhì)并將其插入服務(wù)器中。隨后按照提示進(jìn)行安裝即可。
二、安裝Nginx
在安裝完操作系統(tǒng)后,就可以開始安裝Nginx了??梢园凑找韵虏襟E進(jìn)行安裝:
1. 添加Nginx軟件包倉庫
在Ubuntu上,可以通過將Nginx軟件包倉庫添加到apt安裝工具中進(jìn)行安裝。要做到這一點(diǎn),需要在終端執(zhí)行以下命令:
sudo apt-add-repository ppa:nginx/stable
sudo apt-get update
2. 安裝Nginx
在添加完軟件包倉庫后,就可以安裝Nginx了??梢允褂靡韵旅钸M(jìn)行安裝:
sudo apt-get install nginx
安裝完成后,Nginx服務(wù)將自動啟動。如果出現(xiàn)問題,則可以使用以下命令查看Nginx是否正在運(yùn)行:
sudo service nginx status
如果Nginx未啟動,則可以使用以下命令啟動它:
sudo service nginx start
而如果想要停止Nginx,則可以使用以下命令:
sudo service nginx stop
三、配置Nginx
安裝Nginx之后,需要對其進(jìn)行配置,以實(shí)現(xiàn)更佳性能??梢园凑找韵虏襟E進(jìn)行配置:
1. 調(diào)整worker_processes值
打開/etc/nginx/nginx.conf文件,并找到worker_processes參數(shù)。將其設(shè)置為服務(wù)器上可用處理器核心數(shù)的兩倍,以獲得更佳性能。
2. 調(diào)整worker_connections值
找到worker_connections參數(shù),并將其設(shè)置為合適的值。根據(jù)Nginx的文檔建議,可以將其設(shè)置為每個處理器核心1000的連接數(shù),以獲得更佳性能。
3. 啟用gzip壓縮
啟用gzip壓縮可以減少文件傳輸大小,從而提高Web頁面的加載速度??梢园凑找韵屡渲脤zip壓縮功能添加到Nginx中:
gzip on;
gzip_types text/pln text/css application/json application/x-javascript
text/xml application/xml application/xml+rss text/javascript;
四、優(yōu)化文件緩存
Nginx還提供了一個內(nèi)置的緩存功能,可以將Web頁面緩存在內(nèi)存中,從而提高頁面加載速度??梢耘渲靡韵聟?shù)來優(yōu)化文件緩存:
1. 配置文件緩存路徑
打開/etc/nginx/nginx.conf文件,并找到以下配置項(xiàng):
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:50m inactive=60m;
proxy_cache_key “$scheme$request_method$host$request_uri”;
將levels值設(shè)置為可用內(nèi)存大小的一半,以避免過度緩存。
2. 配置緩存時間
將inactive值設(shè)置為Web頁面的緩存時間,以便在此期間內(nèi)使用緩存。
3. 啟用緩存
在要使用緩存的位置塊中添加以下代碼:
proxy_cache_bypass $http_pragma;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
五、結(jié)論
使用Linux和Nginx搭建一個高性能的Web服務(wù)器并不難。只需要按照以上步驟進(jìn)行安裝和配置,就可以快速構(gòu)建一個快速且可靠的Web服務(wù)器。而由于Linux和Nginx都是免費(fèi)的開源軟件,因此可以通過采用它們來減少Web服務(wù)器的開銷,同時還可以獲得非常好的性能。
相關(guān)問題拓展閱讀:
- linux 版怎么配置nginx
- linux上利用pm2和nginx部署項(xiàng)目
linux 版怎么配置nginx
配置Nginx服務(wù)
Nginx是一款相當(dāng)優(yōu)秀的用于部署動態(tài)網(wǎng)站的服務(wù)程序,Nginx最初是為俄羅斯門戶站輪跡旅點(diǎn)而設(shè)計(jì)的網(wǎng)站服務(wù)軟件,作為一款輕量級的網(wǎng)站服務(wù)軟件,因其穩(wěn)定性和豐富的功能而深受信賴,但最最最被認(rèn)可的是低系統(tǒng)資源、占用內(nèi)存少且并發(fā)能力強(qiáng),目前國內(nèi)如新浪、網(wǎng)易、騰訊等門戶站均在使用,市場占有份額一直保持在15-16%左右(2023年最新數(shù)據(jù))。
Nginx程序的穩(wěn)定性來自于它采用了分階段的資源分配技術(shù),使得CPU與內(nèi)存占用率會非常低,所以使用Nginx程序部署動態(tài)網(wǎng)站環(huán)境不僅十分的穩(wěn)定、高效,而且消耗更少的系統(tǒng)資源,豐富的模塊功能也幾乎與Apache程序數(shù)量相同,現(xiàn)臘凳在已經(jīng)完全的支持了proxy、rewrite、mod_fcgi、州仔ssl、vhosts等常用模塊。而且還支持了熱部署技術(shù),即能夠可以7*24不間斷提供服務(wù),即便運(yùn)行數(shù)月也無須重啟,而且還可以在不暫停服務(wù)的情況下直接對Nginx服務(wù)程序進(jìn)行升級。
坦白來講,雖然Nginx程序的代碼質(zhì)量非常高,代碼很規(guī)范,技術(shù)成熟,模塊擴(kuò)展也很容易,但Nginx依然存在不少問題,比如Nginx是由俄羅斯人創(chuàng)建的,所以在資料文檔方面還并不完善,中文教材的質(zhì)量更是魚龍混雜,但Nginx近年來增長勢頭迅猛,預(yù)測未來應(yīng)該能夠在輕量級HTTP服務(wù)器市場有不錯的未來。
安裝PCRE(Perl兼容的正則表達(dá)式庫,解壓與編譯過程已省略):
# cd /usr/local/src
# mkdir /usr/local/pcre
# tar xzvf pcre-8.35.tar.gz
# cd pcre-8.35
# ./configure –prefix=/usr/local/pcre
# make
# make install
安裝openssl服務(wù)程序(解壓與編譯過程已省略):
# cd /usr/local/src
# mkdir /usr/local/openssl
# tar xzvf openssl-1.0.1h.tar.gz
# cd openssl-1.0.1h
# ./config –prefix=/usr/local/openssl
# make
# make install
把openssl服務(wù)程序命令目錄添加到環(huán)境變量中(永久生效):
# vim /etc/profile
//將配置文件最下面的參數(shù)追加參數(shù)為:
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/openssl/bin
# source /etc/profile
安裝zlib數(shù)據(jù)壓縮函數(shù)庫(解壓與編譯過程已省略):
# cd /usr/local/src
# mkdir /usr/local/zlib
# tar xzvf zlib-1.2.8.tar.gz
# cd zlib-1.2.8
# ./configure –prefix=/usr/local/zlib
# make
# make install
創(chuàng)建用于執(zhí)行nginx服務(wù)的用戶:
# cd ..
# useradd www -s /in/nologin
安裝nginx服務(wù)程序(openssl,zlib,pcre要寫成源碼解壓路徑!!!):
# tar xzvf nginx-1.6.0.tar.gz
# cd nginx-1.6.0/
# ./configure –prefix=/usr/local/nginx –without-http_memcached_module –user=www –group=www –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-openssl=/usr/local/src/openssl-1.0.1h –with-zlib=/usr/local/src/zlib-1.2.8 –with-pcre=/usr/local/src/pcre-8.35
# make
# make install
創(chuàng)建nginx程序腳本(將下面的參數(shù)直接復(fù)制進(jìn)去即可):
# vim /etc/rc.d/init.d/nginx
#!/bin/bash
# nginx – this script starts and stops the nginx daemon
# chkconfig:
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/logs/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
&& exit 0
nginx=”/usr/local/nginx/in/nginx”
prog=$(basename $nginx)
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
&& . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep “configure arguments:” | sed ‘s/*–user=\(*\).*/\1/g’ -`
if ; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep ‘configure arguments:’`
for opt in $options; do
if ; then
value=`echo $opt | cut -d “=” -f 2`
if ; then
# echo “creating” $value
mkdir -p $value && chown -R $user $value
fi
fi
done
}
start() {
|| exit 5
|| exit 6
make_dirs
echo -n $”Starting $prog: “
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
&& touch $lockfile
return $retval
}
stop() {
echo -n $”Stopping $prog: “
killproc $prog -QUIT
retval=$?
echo
&& rm -f $lockfile
return $retval
}
restart() {
#configtest || return $?
stop
sleep 1
start
}
reload() {
#configtest || return $?
echo -n $”Reloading $prog: “
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case “$1” in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $”Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}”
exit 2
esac
# chmod 755 /etc/rc.d/init.d/nginx
重啟nginx服務(wù)程序并添加到開機(jī)啟動項(xiàng):
# /etc/rc.d/init.d/nginx restart
Restarting nginx (via systemctl):
# chkconfig nginx on
此時可以通過訪問IP來判斷nginx服務(wù)是否順利運(yùn)行
LNMP(即Linux+Nginx+MYSQL+PHP)是目前非常熱門的動態(tài)網(wǎng)站部署架構(gòu),如果你是在搭建這種部署的話可以看下
linux上利用pm2和nginx部署項(xiàng)目
Introduce
在開發(fā)模式的時候,我們常用 nodemon 和 webpack 熱更新nodejs項(xiàng)目(如express)和前端項(xiàng)目(如vue),但需要部署的時候我們就不能再用開發(fā)環(huán)境的配置了,姿拆需要改成生產(chǎn)環(huán)境配置。為了使得項(xiàng)目可以穩(wěn)健的運(yùn)行在服務(wù)端,node可以使用nohup啟動,前端項(xiàng)目握行可以使用nginx代理。
但是段冊嘩為了更加規(guī)范管理,我們應(yīng)該使用pm2來管理node項(xiàng)目。
nohup(不推薦使用)
作用:不掛斷地運(yùn)行命令。
啟動后通過 ps -ef 可以查看進(jìn)程和 pid,如果需要停止,輸入
需要特別注意的是,退出遠(yuǎn)程時,要使用 exit 退出,直接關(guān)閉遠(yuǎn)程工具將會導(dǎo)致后臺靜默進(jìn)程停止。
盡管nohup是內(nèi)置工具,但萬一服務(wù)拋異常,對外沒有反應(yīng),表現(xiàn)為無端停止服務(wù),對維護(hù)不友好。
pm2(推薦使用)
相比 nohup,pm2 更加合理,推薦使用 pm2 部署。
首先全局安裝 pm2
為了方便,我們可以把 pm2 軟鏈接到系統(tǒng)環(huán)境下(假設(shè) pm2 安裝路徑是/usr/in/nodejs/bin/pm2),
最后在項(xiàng)目中添加 pm2 配置文件, processes.json
其中 name 代表進(jìn)程別名,script 代表需要執(zhí)行的命令,env 是注入到服務(wù)中的變量。
最后修改 package.json 的 start 命令(項(xiàng)目為 express )為
如果需要查看 pm2 狀態(tài),使用
表明通過 pm2 啟動項(xiàng)目。
停止或重啟服務(wù)使用
自動啟動
在實(shí)際情況下,偶爾會發(fā)生服務(wù)器宕機(jī),可是重啟后pm2應(yīng)用不會被自動啟動,這時候我們就需要去保存我們的pm2狀態(tài),然后配置開機(jī)自啟。
執(zhí)行后會輸出
這表示pm2把當(dāng)前應(yīng)用列表啟動信息保存到了磁盤文件上
執(zhí)行后輸出
這表明pm2往系統(tǒng)中寫入了開機(jī)啟動任務(wù),開機(jī)是自動啟動上次pm2保存的應(yīng)用列表
這時候如果想測試,可以手動重啟服務(wù)器試一下,查看一下pm2應(yīng)用任務(wù)是否正確啟動
再也不用擔(dān)心重啟后服務(wù)不起了。
nginx
作為一個高性能的http和反向代理服務(wù),在linux上不免要選用它。
安裝教程
代理教程
對于Web而已,80端口和443端口是十分重要的,原則上需要輸入 才可以瀏覽網(wǎng)頁的,但由于默認(rèn)端口是80,所以‘:80’可以忽略。同理對于https的443端口也一樣。
所以我們常常需要在80端口監(jiān)聽多個服務(wù),這就必須要用上nginx的代理功能了。用法如下:
常規(guī)配置
代理配置
nginx如果檢測到vue.msg.com的請求,將 轉(zhuǎn)發(fā) 請求到本機(jī)的8080端口,如果檢測到的是react.msg.com請求,也會將請求 轉(zhuǎn)發(fā) 到8081端口。
同樣的,如果前面用pm2開啟了node項(xiàng)目,而且運(yùn)行在3000端口,并且已經(jīng)做好了域名映射,如(api.msg.com),我們可以同理配置代理
上面就是linux上部署項(xiàng)目的教程(后續(xù)介紹 docker部署 )。
關(guān)于linux與nginx的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁名稱:Linux與Nginx:構(gòu)建高性能的Web服務(wù)器(linux與nginx)
文章來源:http://fisionsoft.com.cn/article/ccdihhd.html


咨詢
建站咨詢
