Apache Tomcat adalah implementasi open source Java Servlet, JavaServer Pages, Java Expression Language, dan teknologi Java WebSocket. Apache Tomcat adalah salah satu aplikasi dan server web yang paling banyak diadopsi di dunia saat ini.

Tutorial ini membahas cara menginstal dan konfigurasi Apache Tomcat 9.0 di Debian 10 Buster.

Kami juga sarankan Anda untuk menguji setiap tutorial atau panduan apapun yang ada di Internet di virtual machine (vmware atau virtualbox) sebelum menerapkan ke server produksi, agar tidak mengacaukan sistem yang aktif berjalan ketika ada kesalahan.

Prasyarat

Sebelum melanjutkan dengan tutorial ini, pastikan Anda masuk sebagai user dengan hak istimewa sudo.

Install OpenJDK

Tomcat 9.0 membutuhkan Java SE 8 or atau lebih baru untuk dapat terinstall di server.

Jalankan Perintah berikut untuk meng install paket OpenJDK di Debian 10:

sudo apt install default-jdk

Membuat User untuk Tomcat

Menjalankan Tomcat sebagai root cukup berbahaya dari segi keamanan dan tidak dianjurkan. kita akan membuat user baru yang akan digunakan untuk menjalankan layanan Tomcat.

Jalankan perintah berikut untuk membuat pengguna dan grup sistem baru dengan direktori home dari /opt/tomcat:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

Download Tomcat

Pada saat penulisan ini, versi terbaru Tomcat adalah versi 9.0.27. Sebelum melanjutkan dengan langkah selanjutnya, sebaiknya Anda memeriksa halaman unduhan Tomcat untuk melihat apakah ada versi terbaru.

Ubah ke direktori /tmp dan download file dengan perintah wget berikut:

cd /tmp
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz

Setelah unduhan selesai, extract arsip dengan perintah tar berikut

tar -xf apache-tomcat-9.0.27.tar.gz

Setelah proses extract selesai, pindahkan ke direktori /opt/tomcat:

sudo mv apache-tomcat-9.0.27 /opt/tomcat/

Tomcat 9 akan update secara berkala. Untuk memiliki kontrol lebih besar atas versi dan pembaruan, buat symbolic link  bernama latest yang merujuk ke direktori instalasi Tomcat:

sudo ln -s /opt/tomcat/apache-tomcat-9.0.27 /opt/tomcat/latest

Nanti ketika upgrade Tomcat, cukup unpack versi yang lebih baru dan ubah symlink untuk menunjuk ke versi terbaru.

Langkah selanjutnya, Ubah kepemilikan direktori /opt/tomcat menjadi user dan grup tomcat, sehingga user dapat memiliki akses ke direktori instalasi:

sudo chown -R tomcat: /opt/tomcat

Jadikan skrip di dalam direktori bin agar dapat dieksekusi:

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

Membuat Unit File SystemD

Untuk menjalankan Tomcat sebagai service, kita akan membuat unit file  tomcat.service baru di direktori  /etc/systemd/system/ .

Buka text editor dengan mengetik perintah:

sudo nano /etc/systemd/system/tomcat.service

copy dan paste content berikut ini

[Unit]
Description=Tomcat 9.0 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

Beri tahu systemd bahwa kita telah membuat file unit baru dan restart layanan Tomcat dengan menjalankan:

sudo systemctl daemon-reload
sudo systemctl start tomcat

Anda dapat memeriksa status layanan dengan perintah berikut:

sudo systemctl status tomcat
● tomcat.service - Tomcat 9.0 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: 
   Active: active (running) since Sat 2019-11-09 13:53:51 PST; 5s ago
  Process: 5752 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status
 Main PID: 5759 (java)

dan jika tidak ada kesalahan, Anda dapat mengaktifkan layanan Tomcat untuk mulai secara otomatis saat boot:

sudo systemctl enable tomcat

Anda juga dapat melakukan operasi start, stop, dan restart Tomcat sama seperti layanan unit systemd lainnya:

sudo systemctl start tomcat
sudo systemctl stop tomcat
sudo systemctl restart tomcat

Penyesuaian Firewall

Jika Anda memiliki firewall yang berjalan di sistem Debian dan Anda ingin mengakses interface tomcat dari manapun, Anda harus membuka port 8080:

sudo ufw allow 8080/tcp

Saat menjalankan aplikasi Tomcat di lingkungan produksi, kemungkinan besar Anda akan memiliki load balancer atau reverse proxy, dan itu adalah praktik terbaik untuk membatasi akses ke port 8080 hanya dari jaringan internal Anda.

Konfigurasi Tomcat Web Management Interface

Sekarang setelah Tomcat terinstall di server, langkah selanjutnya adalah membuat user yang akan mengakses antarmuka manajemen web.

User Tomcat beserta peran user ditentukan dalam file tomcat-users.xml.

Jika Anda membuka file, Anda akan melihat bahwa file tersebut diisi dengan dokumentasi dan contoh yang menjelaskan cara mengkonfigurasi file.

sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

Untuk menambahkan user baru yang dapat mengakses antarmuka web tomcat (manager-gui dan admin-gui) kita perlu mendefinisikan user tersebut dalam file tomcat-users.xml seperti yang ditunjukkan di bawah ini.

Pastikan Anda mengubah nama user dan kata sandi yang lebih kuat agar lebih aman:

<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>

Secara default antarmuka  manajemen web Tomcat dikonfigurasikan untuk memungkinkan akses hanya dari localhost. Jika Anda ingin dapat mengakses antarmuka web dari IP jarak jauh atau dari mana saja yang tidak direkomendasikan, karena ini merupakan risiko keamanan Anda dapat membuka file-file berikut dan lakukan perubahan berikut.

Jika Anda perlu mengakses antarmuka web dari mana saja, buka file berikut dan beri komentar atau hapus garis yang disorot dengan warna kuning:

sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0000:1" />
-->
</Context>
sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

Jika Anda hanya perlu mengakses antarmuka web dari IP tertentu, alih-alih menambahkan IP publik Anda ke daftar. Katakanlah IP publik Anda adalah 32.32.32.32 dan Anda hanya ingin mengizinkan akses dari IP tersebut :

sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|32.32.32.32" />
</Context>
sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|32.32.32.32" />
</Context>

Daftar alamat IP yang diizinkan adalah daftar yang dipisahkan dengan bilah vertikal |. Anda dapat menambahkan satu persatu alamat IP atau bisa juga menggunakan menggunakan regex.

Restart layanan Tomcat agar perubahan diterapkan:

sudo systemctl restart tomcat

Uji Instalasi Tomcat

Untuk menguji apakah Tomcat sudah terpasang dengan benar, Buka browser dan ketik: http://<domain_anda_atau_IP_address> 8080

Dengan asumsi instalasi berhasil, layar yang mirip dengan berikut ini akan muncul:

tomcat-home

Dasbor pengelola aplikasi web Tomcat tersedia di http://<domain_atau_alamat_IP>:8080/manager/html. Dari sini Anda dapat deploy, undeploy, start, stop, dan reload aplikasi Anda.

tomcat-manager

Dasbor pengelola virtual host Tomcat tersedia di http://<domain_atau_alamat_ip>:8080/host-manager/html. Dari sini Anda dapat membuat, menghapus, dan mengelola virtual host Tomcat.

tomcat-host-manager
tomcat host manager

Kesimpulan

Anda telah berhasil menginstal Tomcat 9.0 pada sistem Debian 10. Anda dapat mengunjungi Dokumentasi resmi Apache Tomcat 9.0 dan mempelajari lebih lanjut tentang fitur-fitur Apache Tomcat.