Apache服務器+tomcat配置

1.安裝Apache服務器

1.1 Windows下安裝Apache

打開Apache Server的官網,能夠看到上面只提供源碼,不提供編譯好的包,若是須要二進制文件能夠從其它貢獻者那裏獲取,而且網站上也提供了幾個網址,我選擇了Apache Lounge,由於它同時提供32位和64位的下載,下載好後解壓到某個目錄,如G:\Program Files\Apache24,而後打開conf/httpd.conf文件,修改其中的某些代碼:css

# Apache的IP地址和端口。通常來講不須要設置,Apache會綁定在本機全部IP地址的80端口上。
Listen 80
Listen 127.0.0.1:80

# Web服務器的名字
ServerName www.mysite.com

# 這是網站的根目錄
DocumentRoot "G:\Program Files\Apache24\htdocs"
<Directory "G:\Program Files\Apache24\htdocs">
    # 這裏刪掉了Indexes,不然別人能夠瀏覽到您網站裏的全部文件
    Options FollowSymLinks
</Directory>

啓動bin目錄下的httpd.exe文件(也能夠用httpd.exe -k install命令把apache註冊爲服務,而後用net start Apache2.4命令啓動Apache),而後在瀏覽器中輸入localhost就能夠看到默認的頁面了--"It works!"。以上簡單的配置只是爲了讓Apache服務器先運行起來,感謝這篇博文html

1.2 Linux下安裝Apache

參考這篇博客,主要步驟是:linux

  1. 安裝C++
  2. 安裝apr
  3. 安裝apr-util
  4. 安裝pcre
  5. 安裝apache
  6. 若是啓動apache時找不到libpcre庫,能夠參考這篇博客

2.安裝Tomcat

Tomcat的安裝比較簡單,打開Tomcat官網,Windows則選擇32位或64位的zip包,Linux則選擇tar.gz包或zip包,下載後解壓到指定目錄便可。web

3.Apache鏈接Tomcat

3.1 http_proxy方式

這是利用 Apache 自帶的 mod_proxy 模塊使用反向代理技術來鏈接 Tomcat。http_proxy 模式是基於 HTTP 協議的代理,所以它要求 Tomcat 必須提供 HTTP 服務,也就是說必須啓用 Tomcat 的 HTTP Connector。首先打開 APACHE_HOME/conf/httpd.conf文件,把下面這些模塊的加載語句前面的註釋#刪掉:正則表達式

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Include conf/extra/httpd-vhosts.conf

而後打開 APACHE_HOME/conf/extra/httpd-vhosts.conf,這裏是配置虛擬主機的文件,固然也能夠在httpd.conf文件中配置,可是這裏單獨配置比較清晰。文件中已經提供了一些模版,因此咱們只要照着模板添加:apache

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "G:\working\idea_workspace\demo1\src\main\webapp"
    ServerName demo1.com
    ErrorLog "logs/demo1.com-error.log"
    CustomLog "logs/demo1.com-access.log" common
	
	ProxyPass /test http://localhost:8080/demo1/
	ProxyPassReverse /test http://localhost:8080/demo1/
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "G:\working\idea_workspace\BlogTest\ROOT"
    ServerName blog.com
    ErrorLog "logs/blog.com-error.log"
    CustomLog "logs/blog.com-access.log" common
	
	ProxyPass / http://localhost:8082/blog/
	ProxyPassReverse / http://localhost:8082/blog/
</VirtualHost>

解釋一下上面的配置,DocumentRoot是指定網站的根目錄,也就是相似於tomcat中的docBase,假如這裏不配置,則默認使用httpd.conf中的DocumentRoot配置。 ServerName是指定要代理的服務,ProxyPass後面有兩個參數,例如對於第一個<VirtualHost>的配置,它的意思是把全部demo1.com/test/xxx的請求都轉給 http://localhost:8080/demo1/xxx 處理,注意 ProxyPass是用做URL前綴匹配的,不可使用正則表達式,例如代理/*.jpg這樣的配置是不接受的,而ProxyPassReverse主要是爲了防止重定向跳過代理的,關於這一點,能夠參考這篇博客
這裏配置了兩個虛擬主機,所以Apache能夠對這兩個網站進行代理,從而實現一臺服務器搭建多個網站的功能。要想實現這一點,固然還須要在tomcat中配置,建議對於一個網站就啓動一個tomcat實例,不要使用tomcat的虛擬主機功能,這樣重啓A網站的tomcat實例時就不會影響B網站的運行了。關於tomcat的配置這裏很少作介紹,主要就是注意把tomcat的關閉端口改爲不同的,以及監聽端口不要重複,關於Apache的虛擬主機配置還能夠參考這篇文章。另外,還能夠在<VirtualHost>節點中配置Apache不轉發靜態文件給tomcat處理,這樣能夠提升性能,例如:windows

<VirtualHost *:80>
# 這裏同上
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !
</VirtualHost>

由於靜態文件交給了Apache處理,所以須要受權,不然沒法訪問,打開APACHE_HOME/conf/httpd.conf文件,添加以下代碼:瀏覽器

<Directory "G:\working\idea_workspace\demo1\src\main\webapp">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

這裏指定了demo1網站的根目錄,同時受權,這樣當訪問靜態資源時就不會報403錯誤了。tomcat

4.其它Apache配置細節

關於Apache的配置文件httpd.conf,還有一些細節和配置的含義在這裏總結一下:服務器

  • 使用LoadModule加載模塊的順序是跟它們在文件中聲明的順序相反的,即後寫的LoadModule語句先加載;
  • ServerName: 標識Apache自身,若是沒有配置,會使用127.0.0.1做爲服務器的默認地址,而這個地址只是一個網絡迴環地址,只有本機能訪問;
  • ScriptAliasAlias:都是用於實現映射目錄的功能,但ScriptAlias是把映射的目錄識別爲CGI腳本目錄,目錄中全部文件都看成CGI腳本對待,而Alias只是映射爲一個普通的目錄;
  • Options指令:指定在目錄中使用哪些服務器特性,例如Indexes表明開啓索引功能,請求該目錄的URL中若是沒有由DirectoryIndex指令指定的索引文件,則用戶能夠查看當前目錄的文件列表(默認返回結果是這個),通常狀況下應該要關閉;
相關文章
相關標籤/搜索