Resin server 是處理 JSP 要求的 Server, Apache http Server 主要是處理靜態網頁以及 php 要求的 Server。
目前 Resin server 雖然已有提供靜態網頁以及處理 php 要求的功能,但習慣上,仍以 Apache http Server 來處理這些要求。
所以,該如何將兩個 Server 整合起來,當需要執行 jsp 需求時,就轉給 Resin Server。當有靜態網頁以及執行 php 需求的工作時,就由 Apache http Server 來處理的配置方法,就是本文底下要介紹的。
由圖中可以得知,我們可以利用「mod_caucho(C)」模組方塊居中處理協調。
若網站是處於重新部署狀態,那麼建議:
- 安裝 Apache httpd
- 下載 resin server 原始碼,解壓縮,編譯,安裝
- mod_caochu.so 會被編譯出來
sudo apt -y install apache2 apache2-dev
./configure --prefix=(resin安裝目錄) \
--with-apxs=/usr/bin/apxs
make
sudo make install
在 resin 編譯完成後,mod_caochu.so 會被編譯出來,並且放入 /usr/lib/apache2/modules 目錄下。
若 Apache http server 與 Resin Server 都已在執行,不需要重新部署。
- 若系統找不到 apxs 者
- 下載 resin server 原始碼,解壓縮,編譯
- 將 mod_caucho.so 放到 apache 相關的 module 的目錄下
若 Server 的作業系統是 Debian/Ubuntu 系列,可能只是安裝 apache2 套件,此時則需要加裝 apache2-dev 套件,apxs 就在 apache2-dev 套件內,安裝完成後,預設會被放入 /usr/bin 這個目錄下,所以完整路徑為:/usr/bin/apxs 。
cd (resin原始碼目錄)/
./configure --prefix=(resin安裝目錄) \
--with-apxs=/usr/bin/apxs
make
sudo cp (resin原始碼目錄)/modules/c/src/apache2/.libs/mod_caucho.so \
/usr/lib/apache2/modules/
解決 cauchu.so 問題後,接下來…
- 將以下設定放入 apache server 設定中
- 在 apache server 設定中,設置文件處理順序,添加或修改以下內容:
- 關閉 Resin Server 的 php 功能
- 重新啟動網站服務
LoadModule caucho_module \
/usr/lib/apache2/modules/mod_caucho.so
# mod_caucho
<IfModule mod_caucho.c>
ResinConfigServer localhost 6800
<Location /webapp>
SetHandler caucho-request
</Location>
</IfModule>
<IfModule mod_dir.c> DirectoryIndex index.jsp index.php index.html index.xhtml index.htm </IfModule>
在 Resin 的配置文件 app-default.xml 中尋找與 PHP 相關的配置。可能會有類似這樣的內容,找到後請刪掉,或是註解起來:
<servlet servlet-name="resin-php"
servlet-class="com.caucho.quercus.servlet.QuercusServlet">
</servlet>
<resin:if test="${! quercus_disable}">
<servlet-mapping url-pattern="*.php"
servlet-name="resin-php"
default="true"/>
</resin:if>
<welcome-file>index.php</welcome-file>
最後重新啟動 Apache http Server 和 Resin Server 服務,讓設定值可以生效。
2026-04-05 補充
Resin Server 架好之後,如何讓他開機自動執行?
目前有以下兩個方法:
-
傳統方法:SysV init
編譯 resin 時,同時會產生 init.d 目錄,在該目錄底下檔案 resin 便是 SysV 的腳本檔案。將該檔案 resin 複製到 /etc/init.d/ 底下,並做個小手腳,步驟如下:sudo cp (resin編譯目錄)/init..d/resin /etc/init.d/ sudo ln -s /etc/init.d/resin /etc/rc2.d/S90resin sudo ln -s /etc/init.d/resin /etc/rc3.d/S90resin sudo ln -s /etc/init.d/resin /etc/rc4.d/S90resin sudo ln -s /etc/init.d/resin /etc/rc5.d/S90resin -
目前系統建議採用的方法:Systemd
直接將編譯時 init.d 目錄底下檔案 resin 改寫成 Systemd 格式,內容如下:[Unit] Description=The Resin Java Application Server After=network.target remote-fs.target [Service] Type=forking User=root #根據原腳本設定環境變數 Environment=RESIN_HOME=/usr/local/resin4 Environment=JAVA_HOME=/usr/lib/jvm/java-1.25.0-openjdk-amd64 ##目前 openjdk 版本為 1.25.0 #啟動與停止指令 ExecStart=/usr/local/resin4/bin/resinctl start-all ExecStop=/usr/local/resin4/bin/resinctl shutdown #日誌與工作目錄 StandardOutput=append:/usr/local/resin4/log/console.log StandardError=append:/usr/local/resin4/log/console.log [Install] WantedBy=multi-user.target將以上內容在目錄 /etc/systemd/system/ 下存成 resin.service 檔,然後,再做個設定。
sudo chmod 744 /etc/systemd/system/resin.service sudo systemctl enable /etc/systemd/system/resin.service sudo systemctl start /etc/systemd/system/resin.service
以上任意一種方法,都可以達成開機便能自動啟動效果。
