# linux install tomcat8.5.37 ``` sudo apt update sudo apt install default-jdk java -version sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat ``` 三條指令,分別為: 1. sudo apt update:用來更新 Ubuntu 系統的套件資訊。當執行這條指令時,系統會向 Ubuntu 的套件庫發出請求,並下載可用的更新資訊。 2. sudo apt install default-jdk:用來安裝 Java Development Kit (JDK),這是一個用於開發 Java 程式的套件。這條指令會自動下載、安裝 JDK 的預設版本。 3. sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat 這條指令是用來建立一個新的使用者帳號,該帳號的名稱為"tomcat",並且會在系統上建立一個家目錄 "/opt/tomcat" 來存放該使用者的檔案。以下是指令中各個選項的詳細說明: sudo:使用管理員權限執行此指令 useradd:用於建立新的使用者帳號 -m:建立家目錄 ("/opt/tomcat") -U:建立一個與使用者同名的群組 -d /opt/tomcat:使用 "/opt/tomcat" 作為使用者的家目錄 -s /bin/false:設定使用者的登入殼程式為 "/bin/false", 這表示該帳號無法登入系統。通常用於服務帳號,以保護系統安全性。 ``` VERSION=8.5.37 wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/ ``` 三條指令,分別為: 1. VERSION=8.5.37:用來定義 Tomcat 的版本號,此處版本號為 8.5.37。 2. ``` wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp: ``` 用來下載指定版本的Tomcat壓縮檔案。此處的wget指令會從指定的 URL 下載檔案,並存放在 /tmp 目錄中。${VERSION} 會被替換為定義的版本號,從而下載相應版本的 Tomcat。 3. sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/:用來解壓縮 Tomcat 的壓縮檔案,並將其放置在 /opt/tomcat/ 目錄下。這條指令使用 tar 指令解壓縮 /tmp 目錄中下載的 Tomcat 壓縮檔案,並將其解壓縮到 /opt/tomcat/ 目錄中。這裡的 sudo 關鍵字是為了確保在以系統管理員身份執行時,可以執行所需的權限操作。 ``` sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh' sudo chown -R tomcat: /opt/tomcat ``` 三條指令,分別為: 1. sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest:用來建立一個符號連結,將 /opt/tomcat/latest 目錄指向最新版本的 Tomcat。此處的 ${VERSION} 會被替換為定義的版本號,從而指向正確的 Tomcat 目錄。 2. sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh':用來設定最新版本的 Tomcat 目錄中的所有 .sh 結尾的檔案為可執行檔。此處的 chmod 指令會設定指定檔案的權限屬性,+x 表示加上可執行權限。 3. sudo chown -R tomcat: /opt/tomcat:用來設定 /opt/tomcat 目錄以及其下的所有檔案和目錄的擁有者為 tomcat 使用者,並設定相應的權限。這樣做是為了確保 Tomcat 服務在執行時擁有正確的權限和訪問權限。-R 選項表示這個操作是遞迴式的,會同時作用於目錄和其下的所有檔案。 ``` sudo vim /etc/systemd/system/tomcat.service ``` tomcat.service內容: ``` [Unit] Description=Tomcat 8.5 servlet container After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/default-java" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat/latest" Environment="CATALINA_HOME=/opt/tomcat/latest" Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/latest/bin/startup.sh ExecStop=/opt/tomcat/latest/bin/shutdown.sh [Install] WantedBy=multi-user.target ``` 這段指令建立了一個 Systemd service 文件,用來啟動 Tomcat 服務。具體而言: 1. sudo vim /etc/systemd/system/tomcat.service:用 Vim 編輯器打開 /etc/systemd/system 目錄下的 tomcat.service 檔案,這個檔案將會定義 Tomcat 服務的 Systemd service 設定。 2. [Unit]:這個部分是 Systemd unit 文件的一個 section,用來定義這個 service 的 metadata。Description 欄位是對服務的簡短描述,After 欄位用來指定啟動這個服務所依賴的其他 service,這裡是 network.target,表示在網路服務啟動之後才啟動 Tomcat。 3. [Service]:這個部分定義了服務的具體內容。Type 欄位定義這個服務是 fork 型態的,這表示當啟動這個服務時,Systemd 會 fork 出一個子進程來執行這個服務。 4. User=tomcat 和 Group=tomcat:這兩個欄位用來設定啟動 Tomcat 服務的使用者和群組,這裡設定為 tomcat。 5. 環境變數:這裡設定了幾個環境變數,包括 JAVA_HOME、JAVA_OPTS、CATALINA_BASE、CATALINA_HOME、CATALINA_PID 和 CATALINA_OPTS,這些變數會在啟動 Tomcat 服務時被讀取。 6. ExecStart 和 ExecStop:這兩個欄位定義了啟動和停止服務時所執行的指令。ExecStart 設定為 /opt/tomcat/latest/bin/startup.sh,這個腳本用來啟動 Tomcat 服務;ExecStop 設定為 /opt/tomcat/latest/bin/shutdown.sh,這個腳本用來停止 Tomcat 服務。 7. [Install]:這個部分用來定義啟動時的預設等級,這裡設定為 multi-user.target,表示在多使用者模式下啟動服務。 完成後執行以下指令: ``` sudo systemctl daemon-reload sudo systemctl enable --now tomcat sudo systemctl restart tomcat sudo systemctl status tomcat ``` 這些指令的作用分別是: 1. sudo systemctl daemon-reload: 重新載入 Systemd 的配置文件,以讓 Systemd 讀取到最新的配置信息。 2. sudo systemctl enable --now tomcat: 啟用 Tomcat 服務,並設置為開機自啟動。 3. sudo systemctl restart tomcat: 重新啟動 Tomcat 服務。 4. sudo systemctl status tomcat: 顯示 Tomcat 服務的狀態,包括是否正在運行以及運行情況等信息。 若有看見active代表tomcat啟動成功 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up