linux服務器部署tomcat和Nginx

  項目須要,申請了三臺測試機器,好在測試機裏面光禿禿的什麼都沒有,我就能夠好好的學習一把玩一把了!接下來以圖文的形式講一下我所碰到的坑以及小小的收穫吧!html

1、準備工做linux

  首先你得有一臺能夠玩的linux服務器,知道用戶名和密碼,而後你須要在windows電腦上安裝兩個能夠連上linux服務器的工具,Xshell 5和Xftp 5,安裝教程很少說,補圖說明如何連上服務器:nginx

  xshell鏈接界面以下,輸入好主機ip後點擊肯定,xshell會彈出窗口輸入用戶名和密碼便可鏈接成功!web

  

  xftp鏈接界面以下,填空就能夠了,很簡單很少說,提一下這裏爲何選擇SFTP而不選擇FTP呢,看http://blog.sina.com.cn/s/blog_7a06b2f7010116rw.html就能夠明白了!shell

  

2、安裝部署工做windows

  若要部署項目到到linux服務器上,安裝jdk和tomcat是必不可少的,在這裏要強調的是,若是你的一個服務器上要部署多個應用時,那就須要針對每個應用都有本身的tomcat,由於不一樣的應用下面,tomcat的配置確定是不同的,對於這種狀況,能夠安裝一個tomcat安裝目錄和多個應用下的tomcat的工做目錄,對於相同的部分能夠共享安裝目錄的tomcat,下面再分別詳細介紹該如何操做,如何安裝tomcat和jdk到你的服務器上centos

  1.目錄劃分   tomcat

  這是很重要的一步,能夠按照下圖這種方式新建目錄,該目錄下面放置與項目啓動和部署訪問相關的一些文件,你們能夠看到,我在這個目錄下面放置了多個版本的jdk和多個版本的tomcat,項目部署過程當中具體使用哪一個tomcat和jdk都是能夠經過配置實現的。服務器

   

  對於實際的應用,咱們專門放在一個實例目錄下,創建好每一個應用的名字,而後該目錄下面放置相應的war包,以及解壓後的文件,等着tomcat讀取該目錄部署該應用,以下:網絡

     

  2.修改配置  

  每一個應用下面的tomcat咱們也放置在一個目錄下面方便管理,以下圖,可是得注意每一個tomcat的配置

      

  /bin目錄下面,start.sh文件和stop.sh文件都要修改,首先要指定jdk路徑,相似於配置環境變量,其次就是要,指定tomcat工做目錄的tomcat路徑,你們能夠注意到,CATALINA_HOME和CATALINA_BASE分別對應tomcat的安裝目錄和工做目錄,而後你們從最後一行能夠看到項目啓動使用的是安裝目錄下面的start.sh,可是項目啓動使用的tomcat配置文件則是每一個應用tomcat本身所配置的配置文件。stop.sh也是一樣的道理。

  對於使用xshell執行./start.sh和./stop.sh都是須要權限的,若出現沒有權限,我們可使用xftp對start.sh郵件修改權限,按如圖所示,打上勾勾便可。

  

  /conf目錄下面,須要注意修改的配置有,首先是server.xml文件,修改對應的端口號,每一個應用的tomcat都須要修改不一樣的端口號,否則會致使啓動多個tomcat時端口占用而無法啓動,最好記住這個這個應用配置的tomcat的端口號,後面使用nginx作端口映射時會用到; 

  

  另一個要修改的地方就是,Catalina目錄下的localhost目錄下的ROOT.xml文件,該文件用於指定tomcat啓動時,加載哪一個目錄下的項目實例

  

  其餘的/logs目錄、/temp目錄、/webapps目錄、/work目錄不須要修改;從上面也能夠看出來,目錄劃分很是清晰,分別劃分爲,服務安裝目錄(jdk、tomcat、nginx等),應用實例目錄,以及應用部署目錄,你們在使用玩linux服務器部署多個項目時,也能夠按照這種方式劃分。

  3.nginx實現80端口反向代理

  按道理說,這個時候咱們就能夠把咱們本身應用的war包傳到相應的目錄下面解壓,而後去對應的應用tomcat工做目錄下面執行./start.sh就能夠啓動該項目了!你們不妨能夠先試試看。

  項目部署好後,咱們配置好hosts開始訪問了,這個時候咱們會發現,必須得加上上面配置好的tomcat端口號才能夠訪問,咱們能不能不加上端口號(使用默認的80端口)訪問呢?上面也提到了,對於不一樣的tomcat咱們配置了不一樣的端口號,緣由就是一個端口號只能給一個tomcat去使用,這就意味着,項目訪問必須得添加端口號訪問,可是,要作到每個應用均可以使用80端口訪問咱們也是能夠作到的,這時候就要使用到nginx了,安裝好nginx後咱們添加部分配置就能夠作到反向代理,對不一樣應用使用的80端口訪問轉發到相應的端口號,在tomcat看來,外部請求仍是使用了tomcat配置的端口號,這樣也就實現了咱們想要的效果,具體配置以下(固然咱們也得作好相應的目錄劃分工做):

  nginx目錄以下:

  

  咱們只須要關心/conf目錄下面的nginx.conf配置文件,具體配置信息我也打開給你們看了,注意到最後一行了麼,"include domains/*",表示該配置尚未完,包含/domains目錄下的全部配置文件,

  

  這個時候咱們把相應的每一個應用的nginx配置,用不一樣命名的文件配置好就能夠了

  

  而後再來看看怎麼配置吧,監聽auction.center.jd.net:80域名訪問,而後轉發到本機的127.0.0.1的1605端口訪問,從配置中咱們也能夠看到,對於一些異常狀態,如http_500 http_502 http_504等會記錄下來,作不一樣的處理,通常狀況下能夠跳轉到網站首頁等等,而後就是記錄日誌,配置好了這個配置文件,咱們必定不能忘了新建日誌目錄,否則nginx找不到目錄,啓動會報錯。

  

  作完了這些工做以後,還沒完,咱們須要重啓nginx,具體怎麼重啓我就很少說了,百度上不少相關資料,若是重啓失敗,我們乾脆來狠招,殺掉nginx進程,而後再使用nginx service start命令啓動nginx服務。

  在咱們作完這些工做以後,是否是就可使用咱們熟悉的方式(不添加端口號)訪問了呢,嗯對是的沒錯就是這樣的,不少人在顧慮是否是還要重啓tomcat從新部署應用,那隻能說明你對網絡層的nginx路由轉換那一層沒有理解,咱們訪問的域名首先經過咱們配置的hosts作DNS解析,轉換到對應的Ip,找到ip對應的服務器,通過服務器的防火牆,而後當咱們對服務器配置Nginx後,Nginx首先會攔截請求,對請求作處理和分發,最終纔會打到相應的tomcat上(我的理解,可能理解的也不到位,勿噴),這時候咱們就能夠滿懷信心的訪問域名發送請求了!!

  4.踩坑

  額。。很差!!空歡喜一場,跳轉到首頁,仍是無法訪問指定應用,當我試着加上端口號後,「奇蹟」般的能訪問,這就說明我們配置的Nginx沒有生效,問題出在哪呢?

  下面說下個人解題思路吧,首先咱們得確認全部的請求都走到了Nginx,這時候就體現了日誌的好處了,當咱們使用80端口訪問咱們的應用時,盯着日誌去看,一遍兩遍三遍。。沒有日誌,這個時候咱們粗略的能夠判定根本就沒有通過Nginx服務,並不能肯定nginx服務對於服務器沒有生效,應爲也許是我們的日誌配置的有問題呢,這個時候我作出一個大膽的操做,那就是關掉,nginx服務訪問,仍是跳轉到網站首頁,怎麼回事?難道跳轉到首頁不是經過nginx配置的?的確,公司在網絡層就已經作了處理,這個時候我很迷茫,徹底就是各類嘗試,不妨修改tomcat配置,把其中一個應用配置成80端口,這樣總能夠訪問了吧,很快,修改完成並部署好,就等着地址欄輸入域名訪問了,由於Nginx服務已經關閉了,這時候的請求確定是直接打到tomcat上的,訪問一次兩次三次,「奇蹟」般的竟然不能訪問,納尼???這時候靈光一閃,絕對是服務器防火牆禁用了80端口,趕忙試着在本地telnet 192.168.108.37 80 果真不能訪問,證實了個人猜想是對的,這時候就好辦了,只要在防火牆中開通80端口訪問權限便可,下面補充下如何在CentOS下配置iptables防火牆放開80端口。

  1.打開iptables的配置文件,代碼以下:vi /etc/sysconfig/iptables

  2.經過/etc/init.d/iptables status,命令查詢是否有打開80端口,若是沒有可經過兩種方式處理

  3.第一種方式:修改vi /etc/sysconfig/iptables命令添加使防火牆開放80端口,代碼以下: 

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

  4.關閉/開啓/重啓防火牆 代碼以下:/etc/init.d/iptables stop    (#start 開啓  、#restart 重啓)

    5.第二種方式:經過命令去添加端口,代碼以下:

[root@centos httpd]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@centos httpd]# /etc/rc.d/init.d/iptables save
[root@centos httpd]# /etc/init.d/iptables restart

  6.查看效果:[root@centos httpd]# /etc/init.d/iptables status

  7.補充一句,推薦使用第二種方式,操做簡單,成功率高,就拿我來講吧,當我使用第一種方式修改防火牆配置的時候,重啓失敗,使用第二種方式,完美成功

3、總結

  最後結果也是預料之中,即便tomcat配置了1605端口,咱們照樣能使用80端口訪問,這就是nginx的強大之處,不過幾兆的安裝包,竟然能發揮如此多的做用,這是我剛學nginx入門,瞭解的很淺陋,可是經過這一次實踐讓我對nginx有所好感,慢慢的我會從認識到了解到熟知(雖然不能相知相愛)。

  補充:上面講的這麼多都是基於會一些基本linux命令的,對於不知道如何建立文件,修改文件,上傳war包,啓動tomcat,查看進程,查看日誌等等基本命令的,最好仍是先學習下基本的linux命令,慢慢的你會發現,許多能用xftp可視化界面作的事情,咱們更喜歡去用命令操做。

相關文章
相關標籤/搜索