###### tags: `system` # CentOS8 - OpenJDK + Tomcat9 + apache 2.4 & Proxy設定 ## OpenJDK * 一.更新CentOS <center>sudo yum update</center> * 二.安裝Java(OpenJDK) * 搜尋目前可用的OpenJDK <center>sudo yum search openjdk</center> * 安裝(openjdk-devel是程式開發使用、一般runtime只需openjdk) <center>sudo yum install java-1.8.0-openjdk-devel.x86_64</center> * 檢視Java版本 <center>java -version</center> ![](https://i.imgur.com/48GtwGm.png) * 三.測試java是否可運作,新增一隻java檔 <center>vi HelloWorld.java</center> ``` public class HelloWorld { public static void main(String[] args) { System.out.println("Hello! World!"); } } ``` * 四.compil <center>javac HelloWorld.java</center> * 五.執行 <center>java HelloWorld</center> ## Tomcat 9 * 一.新增Tomcat帳號 在正常的狀況下,由於安全性的考量,系統的各項服務都不建議使用 root 權限來執行,必須新增一個專門用於執行 Tomcat 服務的 tomcat 帳號: <center>sudo groupadd --system tomcat</center> <center>sudo useradd -d /usr/share/tomcat -r -s /bin/false -g tomcat tomcat</center> * 二.安裝Tomcat 9 <center>sudo yum -y install wget</center> 從[Tomcat 的官方網站](http://tomcat.apache.org/)下載最新的 Tomcat 9 壓縮檔: ![](https://i.imgur.com/aQhH6qf.png) ![](https://i.imgur.com/4diPJ9m.png) * 執行下載 <center>wget http://apache.stu.edu.tw/tomcat/tomcat-9/v9.0.30/bin/apache-tomcat-9.0.30.tar.gz</center> * 解壓縮至指定的目錄中 <center>sudo tar xvf apache-tomcat-${VER}.tar.gz -C /usr/share/</center> ${VER}為Tomcat版本 * 創建符號鏈接以提取tomcat數據 <center>sudo ln -s /usr/share/apache-tomcat-$VER/ /usr/share/tomcat</center> 如果下載較新版本的Tomcat,只需更新指向新版本文件夾的符號鏈接即可 * 設置適當的目錄權限 <center>sudo chown -R tomcat:tomcat /usr/share/tomcat</center> <center>sudo chown -R tomcat:tomcat /usr/share/apache-tomcat-$VER/</center> ${VER}為Tomcat版本 * 三.配置Tomcat 9 Systemd服務 <center>sudo vi /etc/systemd/system/tomcat.service</center> ``` [Unit] Description=Tomcat Server After=syslog.target network.target [Service] Type=forking User=tomcat Group=tomcat Environment=JAVA_HOME=/usr/lib/jvm/jre Environment='JAVA_OPTS=-Djava.awt.headless=true' Environment=CATALINA_HOME=/usr/share/tomcat Environment=CATALINA_BASE=/usr/share/tomcat Environment=CATALINA_PID=/usr/share/tomcat/temp/tomcat.pid Environment='CATALINA_OPTS=-Xms512M -Xmx1024M' ExecStart=/usr/share/tomcat/bin/catalina.sh start ExecStop=/usr/share/tomcat/bin/catalina.sh stop [Install] WantedBy=multi-user.target ``` * 四.啟動服務 <center>sudo systemctl daemon-reload </center> <center>sudo systemctl start tomcat </center> <center>sudo systemctl enable tomcat</center> * 查看服務是否啟動 <center>sudo systemctl status tomcat</center> ![](https://i.imgur.com/pi7dDg8.png) * 五.啟動防火牆服務 <center>sudo firewall-cmd --permanent --add-port=8080/tcp</center> <center>sudo firewall-cmd --reload</center> ![](https://i.imgur.com/a2xQt1V.png) * 六.在本機端輸入本機ip:8080 ![](https://i.imgur.com/HGVIvEk.png) * 七.創建WAR檔匯入至server中執行 ###### eclipce為例 創建新的web專案 ![](https://i.imgur.com/quVWGav.png) 輸入及選擇基本資料 ![](https://i.imgur.com/9qoQwpz.png) 選擇專案building位置,使用預設 ![](https://i.imgur.com/f5bQ2Jh.png) 設定root名稱及web資料夾,使用預設 ![](https://i.imgur.com/6vwZVY2.png) 專案初始資料檔 ![](https://i.imgur.com/ZgN0AAF.png) 產出初始Servlet ![](https://i.imgur.com/GrUVnzE.png) 在專案上按右鍵 -> Export ![](https://i.imgur.com/lbjt1P6.png) Export -> WAR file -> Next ![](https://i.imgur.com/7cYymvl.png) 基本預設 ![](https://i.imgur.com/W9MlErW.png) 選擇tomcat的webapps資料夾,基本設定 完成 -> Finish ![](https://i.imgur.com/SpC5mjk.png) 將war檔匯入至server ![](https://i.imgur.com/YPOCPqA.png) 解壓縮 ![](https://i.imgur.com/5ILFVxS.png) 啟動tomcat:sh tomcat目錄/bin/startup.sh;或者是進入到tomcat的bin目錄下執行:./startup.sh ![](https://i.imgur.com/9feFIAE.png) 成果 ![](https://i.imgur.com/94Ll2pI.png) ## Apache 2.4 & Proxy設定 * 一.Apache 安裝 * 安裝apache <center>sudo yum install httpd</center> * 啟動apache <center>sudo systemctl start httpd</center> * 設定開機直接啟動 <center>sudo systemctl enable httpd</center> * 檢察apache狀態 <center>sudo systemctl status httpd</center> * 二.Apache反向代理設定Reverse Proxy轉發URL到Tomcat 反向代理設定 Reverse Proxy ,用於將外部網路連入的連線,再依據需求與設定各自分配到特定的IP或Port或網址上。進而達到 單一外部IP 對應多內部IP的功能。 新增VirtualHost `vi /etc/httpd/conf.d/tomcat.conf` 其中`tomcat.conf` 可依照自己習慣命名 ![](https://i.imgur.com/t9UGJQF.png) ![](https://i.imgur.com/fKPBNJB.png) 在圖中,`` Order allow, deny Allow from all ``是apache2.2調整.conf的語法,在apache2.4中已更改為``Require all granted``。 <center>sudo setsebool -P httpd_can_network_connect 1</center> <center>#sudo setsebool -P httpd_can_network_relay 1</center> <center>#sudo setsebool -P httpd_graceful_shutdown 1</center> <center>#sudo setsebool -P nis_enabled 1</center> <center>sudo systemctl restart httpd</center> ![](https://i.imgur.com/W3R4LSM.png) [Tomcat 9 Installation CentOS 8(影片)](https://www.youtube.com/watch?v=rG4WhEZ6I8Y) [CentOS 8上安装Apache Tomcat 9](https://ywnz.com/linuxyffq/4679.html) [CentOS 7 安裝 Tomcat 9](https://blog.gtwang.org/linux/centos-linux-7-install-apache-tomcat-9-tutorial/) [Java建立Servlet Hello World Example](http://pclevin.blogspot.com/2014/08/javaservlet-hello-world-example.html) [Java建立servlet hello world example (二) 匯出war檔執行](http://pclevin.blogspot.com/2014/12/javaservlet-hello-world-example-war.html) [centos7+tomcat部署JavaWeb](https://kknews.cc/zh-tw/code/85yanyn.html) [Install Apache Tomcat 9 on CentOS 8](https://computingforgeeks.com/install-apache-tomcat-9-on-linux-rhel-centos/) [CentOS Linux 7 安裝 Apache 2 與 Tomcat 8 伺服器步驟教學,透過 Proxy 整合](https://blog.gtwang.org/linux/centos7-linux-install-apache2-and-tomcat8-server/) [CentOS 7 - Apache HTTP & HTTPS Server](https://www.youtube.com/watch?v=cG_UqXG4kC4)