在之前幾篇Web服務器講解中,總結(jié)了Apache威酒,Nginx和Tomcat的基本知識及他們之間的區(qū)別和聯(lián)系煌恢。Nginx是近年來走向流行的靜態(tài)服務器,而Tomcat是運行在JVM之上可以解析jsp宠页,servlet等動態(tài)資源的服務器左胞,對于大多數(shù)有過相關開發(fā)經(jīng)驗或者做過一些demo的開發(fā)者而言Tomcat肯定不會陌生,基本上所有Java Web項目都是運行在Tomcat之上的举户。
兩者各有優(yōu)缺點烤宙,因此在企業(yè)的實際開發(fā)中,Tomcat + Nginx整合的模式也得到廣泛應用俭嘁。Chuck也是在和一個學長交流的過程中躺枕,學長建議學一下Nginx相關的知識后開始對這部分進行學習并有所總結(jié)。
整合Nginx和Tomcat第一步就是安裝,可以先安裝Nginx拐云,但是在安裝Tomcat之前需要先安裝JDK罢猪,Chuck在自己的CentOS7上進行整合,因此首先在CentOS7上安裝JDK叉瘩。
JDK安裝注意事項
安裝JDK的過程自己百度吧膳帕,網(wǎng)上全是,大致就是下載linux下的JDK安裝包然后解壓到你想安裝的路徑即可薇缅,然后再/etc/profile中配置環(huán)境變量危彩,寫入的內(nèi)容和在Windows操作系統(tǒng)下配置環(huán)境變量的內(nèi)容基本一樣。保存并退出后泳桦,通過source /etc/profile命令重新加載profile文件汤徽,通過java -version命令查看JDK版本信息,能正確顯示即安裝成功灸撰。
Nginx安裝
Nginx安裝之前需要先安裝一些依賴的東西:
①gcc 安裝
安裝 nginx 需要先將官網(wǎng)下載的源碼進行編譯谒府,編譯依賴 gcc 環(huán)境,如果沒有 gcc 環(huán)境梧奢,則需要安裝:
yum install gcc-c++
②PCRE pcre-devel 安裝
PCRE(Perl Compatible Regular Expressions) 是一個Perl庫狱掂,包括 perl 兼容的正則表達式庫。nginx 的 http 模塊使用 pcre 來解析正則表達式亲轨,所以需要在 linux 上安裝 pcre 庫趋惨,pcre-devel 是使用 pcre 開發(fā)的一個二次開發(fā)庫。nginx也需要此庫惦蚊。命令:
yum install -y pcre pcre-devel
③zlib 安裝
zlib 庫提供了很多種壓縮和解壓縮的方式器虾, nginx 使用 zlib 對 http 包的內(nèi)容進行 gzip ,所以需要在 Centos 上安裝 zlib 庫蹦锋。
yum install -y zlib zlib-devel
④OpenSSL 安裝
OpenSSL 是一個強大的安全套接字層密碼庫兆沙,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及 SSL 協(xié)議莉掂,并提供豐富的應用程序供測試或其它目的使用葛圃。
nginx 不僅支持 http 協(xié)議,還支持 https(即在ssl協(xié)議上傳輸http)憎妙,所以需要在 Centos 安裝 OpenSSL 庫库正。
yum install -y openssl openssl-devel
接下來是安裝Nginx,需要先到官網(wǎng)下載Linux系統(tǒng)下的Nginx壓縮包厘唾,大概不到10MB褥符,下載很快。
下載下來的Nginx一般是tar.gz格式文件抚垃,通過
tar -zxvf 文件名 解壓目標路徑名
如: tar -zxvf nginx-1.12.tar.gz /usr/local/nginx
的方式進行解壓到目標路徑下喷楣。
Chuck使用的是很新的Nginx-1.12版本趟大,下載后完全可以不做任何配置選用默認的配置,進入到解壓好的目標文件中輸入安裝命令即可完成安裝(以上述路徑作為Nginx安裝路徑)
##轉(zhuǎn)移到解壓路徑
cd /usr/local/nginx
##選擇默認配置完成安裝
./configure && make && make install
到這里Nginx安裝工作就完成了铣焊,可以啟動運行Nginx逊朽。啟動命令:
/usr/local/nginx/sbin/nginx
此時通過瀏覽器輸入127.0.0.1顯示圖示情況即為安裝成功
Tomcat安裝與配置
Tomcat的大體安裝過程與Nginx類似,也是先到官網(wǎng)下載壓縮包曲伊,建議不要下載太高版本惋耙,Tomcat 8足矣。將下載好的文件解壓到目標路徑:
tar -zxvf apache-tomcat-8.5.15.tar.gz /usr/local/tomcat
接下來在/etc/profile中配置Tomcat熊昌,添加CATALINA_HOME環(huán)境變量即可
export CATALINA_HOME=/usr/local/tomcat
進入Tomcat安裝目錄下的bin文件夾,通過./startup.sh啟動Tomcat湿酸,打開瀏覽器在地址欄輸入127.0.0.1:8080婿屹,顯示類似下圖即為安裝成功(圖片是網(wǎng)上截的,地址欄輸入127.0.0.1即可版本號與下載安裝版本號相同):
小知識點
1.我們看到訪問Nginx和Tomcat時都有各自的歡迎頁面推溃,那么這些歡迎頁面存放在哪里呢昂利?
Nginx進入安裝目錄會看到一個名為html的文件夾,使用瀏覽器打開index.html即可看到歡迎頁面铁坎。
在Tomcat中蜂奸,有過項目部署經(jīng)驗的開發(fā)者都清楚項目是部署在Tomcat安裝路徑下的webapps中,webapps下ROOT文件夾內(nèi)的index.jsp就是Tomcat的歡迎頁面硬萍。
2.Tomcat項目默認部署在其安裝路徑下的webapps中扩所,能不能部署到其他地方?
這個也是可以的朴乖,但需要修改配置文件祖屏。首先將webapps下的所有文件復制到目標文件夾:
cp /usr/local/tomcat/webapps/* /usr/local/tomcatnginx/www
復制所有webapps下的文件到/usr/local/tomcatnginx/www中,然后修改Tomcat安裝目錄conf文件夾下的server.xml文件买羞,一百一十幾行有這么一句話:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
Tomcat就是通過這個配置文件到webapps下尋找項目袁勺,現(xiàn)在只需要將AppBase的值改為剛才設置的路徑即可
<Host appBase="/usr/local/tomcatnginx/www" autoDeploy="true" name="localhost" unpackWARs="true">
驗證可以在新的項目部署文件夾的ROOT文件夾中創(chuàng)建一個a.jsp,在瀏覽器地址欄輸入127.0.0.1:8080/a.jsp能正常顯示就算配置成功畜普。不放心的話可以在Tomcat安裝路徑的webapps的ROOT下創(chuàng)建b.jsp期丰,在瀏覽器地址欄輸入127.0.0.1:8080/b.jsp,此時新的項目部署文件夾不可能找到b.jsp吃挑,所以必會拋出404錯誤钝荡。
Nginx與Tomcat整合
最關鍵的一步來了。如何整合兩個服務器呢儒鹿?還是去修改配置文件化撕,但這回修改的是Nginx的配置文件。進入Nginx安裝目錄约炎,進入conf文件夾植阴,創(chuàng)建jsp.conf(文件名可以為其他)蟹瘾,寫入如下內(nèi)容:
user nobody;
#==worker進程數(shù),一般設置為CPU個數(shù)===
worker_processes 1;
events {
worker_connections 1024;
}
http {
server {
#============監(jiān)聽的Nginx端口========
listen 127.0.0.1:80;
server_name 127.0.0.1;
access_log logs/host.access.log combined;
#============對不同請求的處理=============
location ~ \.(jsp|jspx|do|action)?$
{
#=============tomcat的資源位置============
root /usr/local/tomcatnginx/www;
index index.jsp index.jspx index.do;
#==========Nginx提供的代理============
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#=== 如果遇到.jsp .jspx .do .action 的請求就進入該服務器(tomcat)===
proxy_pass http://127.0.0.1:8080;
}
}
}
代碼注解給的挺明白的掠手,不多說了憾朴,此時需要重新啟動Nginx服務器并加載jsp.conf文件
//首先關閉Nginx進程
killall -9 nginx
//重啟時加載配置文件
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/jsp.conf
打開瀏覽器,輸入127.0.0.1/a.jsp(注意主機名后沒有8080喷鸽,a.jsp為之前在Tomcat新的部署路徑中創(chuàng)建的jsp文件)众雷,若能正常顯示則說明整合完成,每當有.jsp做祝、.jspx砾省、.do或.action的后綴名請求時Nginx便會交由Tomcat實現(xiàn)動態(tài)解析。
關于整合就講到這里混槐,最好能在Linux系統(tǒng)下實際操作一番有助于理解编兄。