Tomcat adalah server web sumber terbuka untuk aplikasi berbasis Java. Ini digunakan untuk menyebarkan aplikasi Java Servlet dan JSP. Servlet Java adalah program kecil yang mendefinisikan bagaimana server menangani permintaan dan tanggapan. Tomcat bertindak sebagai implementasi open-source dari Java Servlet, JavaServer Pages, Java Expression Language, dan teknologi Java WebSocket.
Ada beberapa versi Tomcat yang tersedia. Kami akan membahas instalasi Tomcat 10 untuk tutorial kami. Jika Anda ingin menginstal Tomcat 9, instruksinya akan sama. Jika ada perubahan, itu akan ditentukan dalam tutorial.
Untuk tutorial kami, kami akan menginstal Tomcat 10 bersama dengan server Nginx untuk bertindak sebagai proxy terbalik dan melindunginya menggunakan SSL. Ada versi Tomcat 10.1.x yang merupakan versi alfa terbaru dari Tomcat, tetapi kami tidak akan menginstalnya.
Prasyarat
-
Server yang menjalankan Rocky Linux 8.5
-
Pengguna non-sudo dengan hak pengguna super.
-
Pastikan semuanya diperbarui.
$ sudo dnf update
-
Paket yang diperlukan untuk instalasi.
$ sudo dnf install wget tar
Langkah 1 - Instal Java
Tomcat 9 dan 10 membutuhkan Java 8 dan yang lebih baru. Kami akan menginstal OpenJDK 11, implementasi open-source platform Java.
Jalankan perintah berikut untuk menginstal OpenJDK.
$ sudo dnf install java-11-openjdk-devel
Verifikasi penginstalan.
$ java -version openjdk version "11.0.13" 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
Langkah 2 - Buat Pengguna Sistem
Kami akan membuat pengguna sistem baru untuk meminimalkan risiko keamanan dengan menjalankan Tomcat sebagai pengguna root. Untuk pengguna baru, kami akan mengatur /opt/tomcat
sebagai direktori home.
Jalankan perintah berikut untuk membuat pengguna sistem baru untuk Tomcat.
$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Langkah 3 - Unduh Tomcat
Versi terbaru Tomcat v10 dapat diunduh dari halaman unduhannya. Pada saat penulisan tutorial ini, v10.0.14 adalah versi terbaru yang tersedia. Periksa versi terbaru sebelum Anda mengunduh Tomcat.
Gunakan wget
untuk mengunduh Tomcat.
$ VERSION=10.0.14 $ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz
Ekstrak file ke /opt/tomcat
direktori.
$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
Buat tautan simbolis ke versi terbaru Tomcat yang mengarah ke direktori instalasi Tomcat.
$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
Ubah kepemilikan direktori menjadi pengguna yang dibuat sebelumnya.
$ sudo chown -R tomcat:tomcat /opt/tomcat
Langkah 4 - Buat File Unit Systemd
Langkah selanjutnya adalah membuat file layanan untuk server Tomcat agar dapat dijalankan secara otomatis.
Buat dan buka file /etc/systemd/system/tomcat.service
untuk diedit.
$ sudo nano /etc/systemd/system/tomcat.service
Tempelkan kode berikut.
[Unit] Description=Apache Tomcat 10 Servlet container Wants=network.target After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/jre" 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 Restart=always [Install] WantedBy=multi-user.target
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta untuk menyimpan.
Langkah 5 - Mulai dan Aktifkan layanan Tomcat
Muat ulang daemon layanan untuk mengaktifkan layanan Tomcat.
$ sudo systemctl daemon-reload
Aktifkan dan Mulai layanan Tomcat.
$ sudo systemctl enable tomcat --now
Periksa status layanan.
$ sudo systemctl status tomcat ? tomcat.service - Apache Tomcat 10 Servlet container Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2021-12-17 15:54:28 UTC; 24s ago Process: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 86226 (java) Tasks: 19 (limit: 11411) Memory: 132.7M CGroup: /system.slice/tomcat.service ??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties> Dec 17 15:54:27 howtoforge systemd[1]: Starting Apache Tomcat 10 Servlet container... Dec 17 15:54:28 howtoforge systemd[1]: Started Apache Tomcat 10 Servlet container.
Langkah 6 - Konfigurasi Firewall
Rocky Linux menggunakan Firewalld Firewall. Periksa status firewall.
$ sudo firewall-cmd --state running
Izinkan port HTTP dan HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Muat ulang firewall untuk mengaktifkan perubahan.
$ sudo firewall-cmd --reload
Langkah 7 - Konfigurasikan Antarmuka Manajemen Web Tomcat
Antarmuka pengelolaan web hanya dapat diakses setelah kami membuat kredensial pengguna untuknya.
Pengguna dan peran Tomcat didefinisikan dalam /opt/tomcat/latest/conf/tomcat-users.xml
mengajukan. Buka file untuk diedit.
$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
Tambahkan baris berikut sebelum </tomcat-users
garis. Ganti nama pengguna dan sandi dengan kredensial Anda.
Pilih kredensial yang berbeda untuk portal Manajer dan Administrator Tomcat.
<tomcat-users> <!-- Comments --> <role rolename="manager-gui"/> <user username="manager" password="managerpassword" roles="manager-gui" /> <role rolename="admin-gui"/> <user username="admin" password="adminpassword" roles="admin-gui"/> </tomcat-users>
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta untuk menyimpan.
Secara default, antarmuka Tomcat hanya dapat diakses dari localhost. Jika Anda perlu mengaksesnya dari mana saja, Anda perlu mengonfigurasinya.
Buka /opt/tomcat/latest/webapps/manager/META-INF/context.xml
untuk diedit.
$ sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
Hapus baris berikut atau beri komentar seperti yang ditentukan di bawah ini dengan melampirkannya di <!--
dan -->
.
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
Mengizinkan akses dari alamat IP mana pun adalah risiko keamanan. Anda dapat membatasinya dengan mengizinkan akses hanya dari alamat IP publik Anda. Jika alamat IP publik Anda 22.22.22.22 , lalu ubah barisnya sebagai berikut.
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|22.22.22.22" />
Daftar alamat IP yang diizinkan dipisahkan oleh bilah vertikal (| ). Anda dapat menambahkan satu alamat IP atau menggunakan ekspresi reguler.
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta untuk menyimpan.
Lakukan perubahan yang sama pada file /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
juga.
Setelah selesai, restart server Tomcat.
$ sudo systemctl restart tomcat
Langkah 8 - Instal SSL
Untuk menginstal sertifikat SSL menggunakan Let's Encrypt, kita perlu menginstal alat Certbot.
Pertama, Anda perlu mengunduh dan menginstal repositori EPEL.
$ sudo dnf install epel-release
Jalankan perintah berikut untuk menginstal Certbot.
$ sudo dnf install certbot
Buat sertifikat SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d tomcat.example.com
Perintah di atas akan mengunduh sertifikat ke /etc/letsencrypt/live/tomcat.example.com
direktori di server Anda.
Buat grup Diffie-Hellman sertifikat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Buat direktori webroot tantangan untuk pembaruan otomatis Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Buat Pekerjaan Cron untuk memperbarui SSL. Ini akan berjalan setiap hari untuk memeriksa sertifikat dan memperbarui jika diperlukan. Untuk itu, buat dulu file /etc/cron.daily/certbot-renew
dan buka untuk diedit.
$ sudo nano /etc/cron.daily/certbot-renew
Tempelkan kode berikut.
#!/bin/sh certbot renew --cert-name tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Ubah izin pada file tugas agar dapat dieksekusi.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Langkah 9 - Instal Nginx
Rocky Linux 8.5 dikirimkan dengan Nginx versi stabil terbaru. Instal menggunakan perintah berikut.
$ sudo dnf module install nginx:1.20
Verifikasi penginstalan.
$ nginx -v nginx version: nginx/1.20.1
Aktifkan dan mulai layanan Nginx.
$ sudo systemctl enable nginx --now
Buat dan buka file /etc/nginx/conf.d/tomcat.conf
untuk diedit.
$ sudo nano /etc/nginx/conf.d/tomcat.conf
Tempelkan kode berikut di dalamnya.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name tomcat.example.com; access_log /var/log/nginx/tomcat.access.log; error_log /var/log/nginx/tomcat.error.log; # SSL ssl_certificate /etc/letsencrypt/live/tomcat.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/tomcat.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/tomcat.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name tomcat.example.com; return 301 https://$host$request_uri; }
Simpan file dengan menekan Ctrl + X dan memasukkan Y ketika diminta setelah selesai.
Buka file /etc/nginx/nginx.conf
untuk diedit.
$ sudo nano /etc/nginx/nginx.conf
Tambahkan baris berikut sebelum baris include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Simpan file dengan menekan Ctrl + X dan memasukkan Y saat diminta.
Verifikasi sintaks file konfigurasi Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Mulai ulang layanan Nginx untuk mengaktifkan konfigurasi baru.
$ sudo systemctl restart nginx
Langkah 10 - Jalankan TomCat
Luncurkan https://tomcat.example.com
di browser Anda, dan itu akan membuka layar berikut.
Sekarang Anda dapat mengakses halaman Status Server, Aplikasi Manajer, dan Manajer Host menggunakan kredensial login yang kami konfigurasikan di langkah 7.
Kesimpulan
Ini mengakhiri tutorial kami tentang menginstal dan mengkonfigurasi Server Tomcat pada server berbasis Rocky Linux 8.5 dan menyajikannya melalui proxy terbalik Nginx, dan menggunakan SSL untuk melindunginya. Jika Anda memiliki pertanyaan, kirimkan di komentar di bawah.