linux伺服器部署tomcat和Nginx

来源:http://www.cnblogs.com/xiaoming0601/archive/2017/07/13/7162041.html
-Advertisement-
Play Games

最近對linux伺服器特別感興趣,通過自己對已有資源的學習和使用,總結了我踩過的坑,已經如何填坑的 ...


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

一、準備工作

  首先你得有一臺可以玩的linux伺服器,知道用戶名和密碼,然後你需要在windows電腦上安裝兩個可以連上linux伺服器的工具,Xshell 5和Xftp 5,安裝教程不多說,補圖說明如何連上伺服器:

  xshell連接界面如下,輸入好主機ip後點擊確定,xshell會彈出視窗輸入用戶名和密碼即可連接成功!

  

  xftp連接界面如下,填空就可以了,很簡單不多說,提一下這裡為什麼選擇SFTP而不選擇FTP呢,看http://blog.sina.com.cn/s/blog_7a06b2f7010116rw.html就可以明白了!

  

二、安裝部署工作

  若要部署項目到到linux伺服器上,安裝jdk和tomcat是必不可少的,在這裡要強調的是,如果你的一個伺服器上要部署多個應用時,那就需要針對每一個應用都有自己的tomcat,因為不同的應用下麵,tomcat的配置肯定是不一樣的,對於這種情況,可以安裝一個tomcat安裝目錄和多個應用下的tomcat的工作目錄,對於相同的部分可以共用安裝目錄的tomcat,下麵再分別詳細介紹該如何操作,如何安裝tomcat和jdk到你的伺服器上

  1.目錄劃分   

  這是很重要的一步,可以按照下圖這種方式新建目錄,該目錄下麵放置與項目啟動和部署訪問相關的一些文件,大家可以看到,我在這個目錄下麵放置了多個版本的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.補充一句,推薦使用第二種方式,操作簡單,成功率高,就拿我來說吧,當我使用第一種方式修改防火牆配置的時候,重啟失敗,使用第二種方式,完美成功

三、總結

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

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 因為項目第一次接觸postgresql,有個問題搞死我了,如果初學,估計大家也會遇見這樣的問題,希望可以節約時間。 用戶postgres的口令不顯示啊!服! ...
  • CentOS 6.9 升級MySQL 5.6.36到5.7.18 MySQL 5.6.36 安裝過程:http://www.cnblogs.com/imweihao/p/7156754.html 升級方法很簡單 1、安全關閉資料庫 [root@001 ~]# service mysqld stop ...
  • SELECT request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName FROM sys.dm_tran_locksWHERE resource_type = 'OBJECT' KILL spid 如: ...
  • 1.什麼是鎖 鎖(LOCK)用於管理對共用資源的併發控制。通過建立鎖,可以保護資源(數據)的完整性和一致性。 通過一個經典的資料庫問題(丟失更新)就可以看到鎖的意義: 1)針對同一個資料庫,有表 Student,表結構如下: ID、姓名、年齡 2)用戶A登錄到資料庫中,查詢Student表的數據,此 ...
  • Figure 1 Figure 2 Figure 3 編號位置以刻度尺為起點0.74釐米(2個字元間距),文本縮進以刻度尺為起點2.96釐米(8個字元間距) 以上兩者相減得到的值正好=特殊格式懸掛縮進的值2.22釐米 Figure 4 上圖看到,文本縮進以刻度尺為起點2.96釐米(8個字元間距),段 ...
  • 原文發表於:2010-12-09轉載至cu於:2012-07-21 閑來無事把nginx伺服器升級了,因為沒有經常玩linux,記錄下來以免將來再升級的時候又去查資料。 下載: [root@liuawblizfpws~]#wget http://nginx.org/download/nginx-0. ...
  • Visual Studio 2015:http://tieba.baidu.com/p/3442930798Visual Studio 2013:http://tieba.baidu.com/p/3442929573Visual Studio 2008:http://tieba.baidu.com/ ...
  • 查看當前目錄: pwd 查看文件具體大小: ls -l 返回上一級: cd.. 返回根目錄: cd / 創建一個隱藏文件 vim .test 顯示隱藏文件:ls -a 編輯文件: 1.vim 文件名 2.按i進入插入模式 3.寫完文件之後按esc,再按shift+:鍵,再輸入wq,回車,文件就保存了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...