Nginx是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務(郵件服務)。
Tomcat集群
1、下載tomcat,解壓,復制一份,分別將文件夾重命名為tomcat1、tomcat2
2、修改conf/server.xml中使用的端口號,避免端口沖突
tomcat1的端口:
tomcat1使用默認的端口即可。
http那個connector是建立http連接的(http協議),有這個標簽才能成為web服務器,才能和客戶端連接上。
nginx+tomcat,ajp連接用不上,完全可以注釋掉。
同一個tomcat進程內,可以共用一個端口,所以2個重定向使用的端口可以相同。
tomcat2的端口:
很多教程的重定向端口都沒有改,因為一個小demo,也用不上重定向。
3、用記事本打開bin/startup.bat,分別在開頭加上
set TITLE="tomcat1" set CATALINA_HOME="D:\tomcat1"
set TITLE="tomcat2" set CATALINA_HOME="D:\tomcat2"
TITLE是啟動tomcat時彈出的windows的黑框框的窗口標題,這個無關緊要。
CATALINA_HOME是tomcat的主目錄的路徑,啟動tomcat時會檢測startup.bat中是否設置了CATALINA_HOME,設置了就使用設置的,未設置就使用環境變量中的CATALINA_HOME,如果環境變量中也未設置,一閃而過啟動失敗。
啟動的是CATALINA_HOME指定的tomcat,不是你雙擊|調用哪個tomcat的startup.bat就啟動哪個tomcat。
只能寫在startup.bat中,如果把值都寫在環境變量CATALINA_HOME中,鬼知道你要啟動哪個tomcat。
startup.bat中設置的CATALINA_HOME優先級高於環境變量中的設置。
4、將2個tomcat的conf/logging.properties中的控制台編碼從UTF-8改為GBK,喜歡看亂碼的可以不改。
5、tomcat依賴jdk(將jsp轉換為servelt要用到jdk),環境變量中需要設置JAVA_HOME,值是jdk主目錄的路徑。
6、分別雙擊startup.bat啟動2個tomcat,部署相同的項目,為了好觀察效果,在tomcat1的項目的index.jsp的<body>中寫tomcat1,另一個寫tomcat2,瀏覽器中輸入地址測試下項目是否都部署成功了。
Nginx
1、下載Nginx的windows版,解壓
2、修改conf/nginx.conf
服務器列表中我給每個服務器(tomcat)加了權重,使用加權輪詢,這樣才方便看到效果。
默認是輪詢(不設置權重、或者權重都為1),將服務器列表排成一圈,根據服務器列表配置的前后順序:
nginx:tomcat1,你閑着不?
tomcat1:我閑着
nginx:那你處理下請求
nginx:tomcat1,你閑着不?
tomcat1:我正在處理請求
nginx:tomcat2,你閑着不?
tomcat2:我閑着
nginx:那你來處理請求
部署的項目小、處理速度快,又是本地機上,請求、響應時間只有幾毫秒、十幾毫秒,tomcat1基本都是閑着的,如果使用輪詢,看到的一直都是tomcat1。
分配不同的權重才看得到tomcat2。如果你部署一個很大的項目,或者單身多年點一次刷新只需幾毫秒,也可以看到tomcat2。
3、雙擊啟動nginx.exe,驗證nginx是否啟動成功的2種方式:
- 任務管理器看一下有沒有nginx的2個進程
- 瀏覽器地址欄輸入127.0.0.1,看一下有沒有nginx的首頁或者tomcat的首頁。如果沒啟動tomcat,看到的是nginx的首頁;如果啟動了tomcat,會將請求轉發給tomcat,看到的是tomcat的首頁
如果nginx啟動失敗,一般是端口被占用了,nginx默認使用80端口,殺掉占用端口的進程,或者在conf/nginx.conf中修改端口號,如果修改了端口號,地址欄中要寫上端口號。
4、比方tomcat1的項目地址是 http://127.0.0.1:8080/test/ ,tomcat2的項目地址是 http://127.0.0.1:8081/test/
在地址欄輸入127.0.0.1:80/test 即訪問部署的項目,這個127.0.0.1:80是nginx的ip、端口。
端口號默認就是80,如果nginx使用80端口,地址欄可以不寫端口號,如果不是80端口,必須寫上端口號。
多個tomcat啟動|關閉的3種方式:
1、雙擊.bat
2、命令行,切換到單個tomcat所在目錄,startup、shutdown,cd來cd去很麻煩
3、將tomcat1的2個.bat分別重命名為startup1.bat、shutdown1.bat,tomcat2的分別重命名為startup2.bat、shutdown2.bat。
Path環境變量中添加tomcat1、tomcat2的bin目錄。
命令行下startup1即運行startup.bat、啟動tomcat1,shutdown1即運行shutdown1.bat、停止tomcat1,tomcat2也是同樣的道理。命令行傳入的是.bat的文件名。
nginx啟動|關閉的2種方式
1、雙擊nginx.exe啟動,任務管理器結束nginx的2個進程即關閉,修改nginx的配置需先結束2個進程、再雙擊nginx.exe啟動。
2、命令行cd到nginx的主目錄,
- start nginx 啟動nginx
- nginx -s reload 重新加載配置。修改nginx的配置后無需重啟nginx,執行此命令即生效。
- nginx -s stop 快速停止nginx。這個是強制停止nginx,可能導致一些問題。
- nginx -s quit 完整有序地停止nginx。
其實都是調用nginx.exe,傳遞的參數不同罷了。
把nginx的主目錄添加到Path環境變量中,不用cd到nginx主目錄就可操作?
理論上是這樣,但實操時基本都是毛病,不是啟動失敗(命令無效),就是停止的時候報錯:不能創建xx日志文件、不能找到xx日志文件.......
cd到nginx的主目錄進行操作,就不會出現這樣的問題。