Ubuntu 20.04 Üzerine Apache Tomcat 10 Kurulumu: Kapsamlı Bir Rehber
Apache Tomcat, Java tabanlı web uygulamalarını çalıştırmak için yaygın olarak kullanılan açık kaynaklı bir web sunucusu ve servlet konteyneridir. Java Servlet, JavaServer Pages (JSP), Java Expression Language ve Java WebSocket gibi teknolojileri uygulayarak Java kodunun web üzerinde yürütülmesini sağlar. Özellikle kurumsal düzeyde ve geliştirme ortamlarında Java tabanlı uygulamaların dağıtımı için vazgeçilmez bir araçtır. Bu makalede, popüler ve güvenilir bir işletim sistemi olan Ubuntu 20.04 LTS (Long Term Support) üzerine Apache Tomcat 10’un adım adım, kapsamlı bir şekilde nasıl kurulacağını detaylandıracağız.
Ubuntu 20.04, uzun süreli desteği ve kararlılığı ile sunucu ortamları için ideal bir seçimdir. Tomcat 10 ise, Jakarta EE 9 (veya daha yeni) spesifikasyonlarını destekleyen en son kararlı sürümlerden biridir. Bu sürüm, eski Java EE isim alanlarından Jakarta EE isim alanlarına geçişi temsil eder, bu da modern Java tabanlı web uygulamaları geliştirenler için önemli bir adımdır. Bu rehber, Tomcat’i güvenli, yönetilebilir ve sisteminize entegre edilmiş bir şekilde kurmanıza yardımcı olacaktır.
Ön Gereksinimler
Apache Tomcat 10 kurulumuna başlamadan önce, bazı temel gereksinimleri karşıladığınızdan emin olmalısınız. Bu gereksinimler, sorunsuz bir kurulum süreci için kritik öneme sahiptir.
Ubuntu 20.04 Sunucusu
* Bir Ubuntu 20.04 LTS kurulu sunucuya veya sanal makineye erişiminiz olmalıdır.
* SSH (Secure Shell) aracılığıyla sunucuya erişebilmelisiniz. Genellikle, bir terminal veya PuTTY gibi bir SSH istemcisi kullanılır.
Sudo Yetkileri
* Kurulum adımlarının çoğu için kök (root) yetkilerine ihtiyacınız olacaktır. Bu nedenle, sudo komutunu kullanabilen bir kullanıcı hesabına sahip olmanız gerekmektedir. Güvenlik açısından, doğrudan root kullanıcısı olarak işlem yapmak yerine, sudo yetkisi olan standart bir kullanıcı hesabı kullanılması önerilir.
Java Development Kit (JDK)
* Apache Tomcat, Java tabanlı bir uygulama olduğu için çalışmak üzere bir Java Runtime Environment (JRE) veya daha iyisi bir Java Development Kit (JDK) gerektirir. Tomcat 10, Java SE 8 veya daha yeni bir sürümünü gerektirir. Bu rehberde, Ubuntu 20.04 için varsayılan olarak sunulan OpenJDK 11 veya OpenJDK 17’yi kullanacağız. OpenJDK, ücretsiz ve açık kaynaklı bir Java uygulamasıdır ve çoğu Linux dağıtımında tercih edilen seçenektir.
Bu ön gereksinimleri kontrol ettikten sonra, kurulum adımlarına geçmeye hazırız.
Adım 1: Sistem Güncelleme ve Java Kurulumu
Kurulum sürecine başlamadan önce, sisteminizin paket listesini güncellemek ve mevcut paketleri yükseltmek her zaman iyi bir uygulamadır. Bu, en son güvenlik yamalarına ve yazılım sürümlerine sahip olmanızı sağlar.
Sistem Güncelleme
Terminalinizi açın ve aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt upgrade -y
* sudo apt update: Bu komut, yerel paket indeksinizi Ubuntu depolarındaki en son bilgilerle günceller. Bu sayede, sisteminiz hangi paketlerin güncellenmesi gerektiğini veya yeni paketlerin mevcut olduğunu öğrenir.
* sudo apt upgrade -y: Bu komut, sisteminizdeki yüklü paketleri en son sürümlerine yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı verilmesini sağlar, böylece yükseltme işlemi kesintiye uğramaz.
Java (OpenJDK) Kurulumu
Tomcat 10 için Java SE 8 veya daha yeni bir sürümü gereklidir. Ubuntu 20.04 depolarında OpenJDK 11 ve OpenJDK 17 mevcuttur. Performans ve güvenlik iyileştirmeleri nedeniyle daha yeni bir sürüm olan OpenJDK 11 veya 17’yi tercih etmek genellikle daha iyidir. Bu rehberde OpenJDK 11’i kuracağız, ancak aynı adımları OpenJDK 17 için de uygulayabilirsiniz (openjdk-17-jdk paketini kullanarak).
Aşağıdaki komutla OpenJDK 11’i kurun:
sudo apt install openjdk-11-jdk -y
Kurulum tamamlandıktan sonra, Java’nın doğru şekilde yüklendiğini doğrulamak için sürümünü kontrol edebilirsiniz:
java -version
Çıktı, yüklü Java sürümünü göstermelidir, örneğin:
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
Java’nın kurulum dizinini (JAVA_HOME) bilmek, Tomcat servis dosyasını yapılandırırken faydalı olacaktır. Genellikle OpenJDK için bu yol /usr/lib/jvm/java-11-openjdk-amd64 şeklindedir.
Adım 2: Tomcat Kullanıcısı Oluşturma
Güvenlik en iyi uygulamalarından biri olarak, Apache Tomcat’i sistemde ayrı, yetkisiz bir kullanıcı altında çalıştırmak şiddetle tavsiye edilir. Bu, Tomcat’in veya dağıtılan uygulamaların güvenlik açıkları nedeniyle tüm sistemin tehlikeye atılma riskini azaltır.
Aşağıdaki komutu kullanarak tomcat adında yeni bir kullanıcı ve grup oluşturalım:
sudo groupadd tomcat
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
* sudo groupadd tomcat: Bu komut, tomcat adında yeni bir sistem grubu oluşturur.
* sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat: Bu komut, tomcat adında yeni bir sistem kullanıcısı oluşturur.
* -s /bin/false: Bu kullanıcıya kabuk erişimi verilmediğini belirtir. Bu, kullanıcının sisteme doğrudan giriş yapmasını engeller, bu da güvenlik için önemlidir.
* -g tomcat: Bu kullanıcıyı tomcat grubuna atar.
* -d /opt/tomcat: Bu kullanıcının ana dizinini /opt/tomcat olarak ayarlar. Tomcat’i buraya kuracağız.
Bu adımla, Tomcat’i çalıştırmak için güvenli bir kullanıcı ortamı oluşturmuş olduk.
Adım 3: Apache Tomcat 10 İndirme ve Kurulumu
Şimdi Apache Tomcat 10’un en son kararlı sürümünü resmi web sitesinden indireceğiz ve uygun dizine kuracağız.
Tomcat’i İndirme
Öncelikle, Apache Tomcat’in resmi indirme sayfasını ziyaret ederek Tomcat 10’un en son kararlı sürümünün URL’sini bulmanız gerekir. Genellikle “Core” altında tar.gz uzantılı dosyayı arayın. Bu makalenin yazıldığı tarihte, Tomcat 10.1.x serisi günceldir.
Aşağıdaki komutları kullanarak Tomcat’i /tmp dizinine indirin:
cd /tmp
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.20/bin/apache-tomcat-10.1.20.tar.gz
* URL’yi en son kararlı sürüme göre güncellediğinizden emin olun.
Tomcat’i Çıkartma ve Taşıma
İndirdiğiniz sıkıştırılmış dosyayı /opt/tomcat dizinine çıkaracağız. Bu dizini daha önce tomcat kullanıcısının ana dizini olarak belirlemiştik.
Önce, /opt/tomcat dizinini oluşturalım (eğer otomatik oluşmadıysa):
sudo mkdir /opt/tomcat
Şimdi indirdiğiniz dosyayı /opt/tomcat dizinine çıkartın:
sudo tar -xf apache-tomcat-10.1.20.tar.gz -C /opt/tomcat
* -C /opt/tomcat: Sıkıştırılmış dosyanın içeriğini belirtilen dizine çıkartır.
Çıkarılan dizin genellikle apache-tomcat-10.1.20 gibi bir isme sahip olacaktır. Yönetimi kolaylaştırmak ve gelecekteki yükseltmeleri basitleştirmek için, bu dizine sembolik bir bağlantı (symlink) oluşturalım:
sudo ln -s /opt/tomcat/apache-tomcat-10.1.20 /opt/tomcat/latest
Bu, latest sembolik bağlantısının her zaman mevcut Tomcat sürümünü işaret etmesini sağlar. Gelecekte yeni bir sürüm kurduğunuzda, sadece sembolik bağlantıyı yeni dizini işaret edecek şekilde güncelleyebilirsiniz.
İzinleri Ayarlama
Tomcat’i tomcat kullanıcısı altında çalıştıracağımız için, bu kullanıcının Tomcat kurulum dizini üzerinde doğru izinlere sahip olması gerekir.
Tüm /opt/tomcat dizininin sahipliğini tomcat kullanıcısına ve grubuna verin:
sudo chown -R tomcat:tomcat /opt/tomcat
Ayrıca, conf dizinindeki yapılandırma dosyalarına ve bin dizinindeki yürütülebilir betiklere doğru okuma ve yürütme izinleri ayarlamamız gerekir:
sudo chmod -R u+rwx /opt/tomcat/latest/conf
sudo chmod -R u+x /opt/tomcat/latest/bin
* u+rwx: Kullanıcıya okuma, yazma ve yürütme izinleri verir.
* u+x: Kullanıcıya yürütme izinleri verir.
Bu izin ayarları, Tomcat’in doğru şekilde başlaması ve çalışması için gereklidir.
Adım 4: Systemd Servisi Oluşturma
Tomcat’i bir Systemd servisi olarak yapılandırmak, sunucu başlatıldığında otomatik olarak başlamasını sağlamanın, kolayca durdurup başlatmanın ve sistem kaynaklarını daha iyi yönetmenin en iyi yoludur.
Yeni bir Systemd servis dosyası oluşturalım:
sudo nano /etc/systemd/system/tomcat.service
Açılan editöre aşağıdaki içeriği yapıştırın:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="CATALINA_PID=/opt/tomcat/latest/tomcat.pid"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_BASE=/opt/tomcat/latest"
ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh
RestartSec=10
Restart=on-failure
[Install]
WantedBy=multi-user.target
* [Unit]
* Description: Servisin kısa bir açıklamasını sağlar.
* After=network.target: Bu servisin ağ servisi başladıktan sonra başlatılması gerektiğini belirtir.
* [Service]
* Type=forking: Servisin ana işleminin bir alt işlem başlattığını ve ana işlemin çıktığını belirtir. Tomcat için bu tip uygundur.
* User=tomcat, Group=tomcat: Servisin hangi kullanıcı ve grup altında çalışacağını belirtir. Daha önce oluşturduğumuz tomcat kullanıcısını kullanıyoruz.
* Environment="JAVA_HOME=...": Java kurulum dizininin yolunu belirtir. Bu yolu, sisteminizdeki Java sürümüne göre güncellediğinizden emin olun (örn. OpenJDK 17 için /usr/lib/jvm/java-17-openjdk-amd64).
* Environment="CATALINA_PID=...": Tomcat’in işlem kimliği (PID) dosyasını nerede saklayacağını belirtir.
* Environment="CATALINA_HOME=...": Tomcat’in kök dizinini belirtir.
* Environment="CATALINA_BASE=...": Tomcat’in yapılandırma dosyalarının ve diğer kaynaklarının bulunduğu dizini belirtir. Genellikle CATALINA_HOME ile aynıdır.
* ExecStart: Servis başlatıldığında çalıştırılacak komutu belirtir. Tomcat’in startup.sh betiğini kullanırız.
* ExecStop: Servis durdurulduğunda çalıştırılacak komutu belirtir. Tomcat’in shutdown.sh betiğini kullanırız.
* RestartSec=10: Servis başarısız olursa, yeniden başlatmadan önce 10 saniye bekler.
* Restart=on-failure: Servis beklenmedik bir şekilde durursa otomatik olarak yeniden başlatılır.
* [Install]
* WantedBy=multi-user.target: Bu servisin çok kullanıcılı sistem durumunda (normal çalışma modu) etkinleştirilmesi gerektiğini belirtir.
Dosyayı kaydedin ve kapatın (nano’da Ctrl+O, Enter, Ctrl+X).
Systemd Servisini Yeniden Yükleme ve Başlatma
Systemd’ye yeni servis dosyasını bildirmek için daemon’ı yeniden yüklemeniz gerekir:
sudo systemctl daemon-reload
Şimdi Tomcat servisini başlatın:
sudo systemctl start tomcat
Tomcat’in sistem başlangıcında otomatik olarak başlamasını sağlamak için etkinleştirin:
sudo systemctl enable tomcat
Servisin durumunu kontrol ederek çalıştığından emin olun:
sudo systemctl status tomcat
Çıktı, servisin “active (running)” durumunda olduğunu göstermelidir.
Adım 5: Güvenlik Duvarını Yapılandırma (UFW)
Ubuntu’da varsayılan güvenlik duvarı olan UFW (Uncomplicated Firewall), sunucunuzu dış tehditlerden korumak için önemlidir. Tomcat varsayılan olarak 8080 portunu kullanır, bu nedenle bu porta dışarıdan erişime izin vermeniz gerekir.
Öncelikle, UFW’nin durumunu kontrol edin:
sudo ufw status
Eğer UFW etkin değilse, aşağıdaki komutlarla etkinleştirebilirsiniz (SSH bağlantınızın kesilmemesi için önce SSH portuna izin vermeyi unutmayın):
sudo ufw allow OpenSSH
sudo ufw enable
Şimdi 8080 portuna TCP bağlantılarına izin verin:
sudo ufw allow 8080/tcp
Güvenlik duvarı kurallarının uygulandığını doğrulamak için tekrar durumu kontrol edin:
sudo ufw status
8080 portunun “ALLOW” durumunda olduğunu görmelisiniz.
Tomcat Kurulumunu Doğrulama
Tüm adımları başarıyla tamamladıysanız, Tomcat’in web arayüzüne erişebilmelisiniz. Bir web tarayıcısı açın ve sunucunuzun IP adresini veya alan adını 8080 portuyla birlikte girin:
http://SERVER_IP_ADRESİNİZ:8080
Eğer her şey doğru kurulduysa, Apache Tomcat’in varsayılan karşılama sayfasını görmelisiniz. Bu sayfa, Tomcat’in başarıyla çalıştığını gösterir.
Adım 6: Tomcat Web Yönetim Arayüzünü Yapılandırma
Tomcat, uygulamaları dağıtmak, sunucu durumunu izlemek ve diğer yönetim görevlerini gerçekleştirmek için bir web yönetim arayüzü (Manager App ve Host Manager App) sunar. Bu arayüzlere erişmek için kullanıcı kimlik bilgileri tanımlamanız gerekir.
Kullanıcı Kimlik Bilgilerini Ayarlama
conf/tomcat-users.xml dosyası, Tomcat’in kullanıcılarını ve rollerini tanımlar. Bu dosyayı düzenleyerek yönetici kullanıcıları oluşturacağız.
sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
etiketinin içine, mevcut örneklerin altına veya üzerine aşağıdaki satırları ekleyin. YOUR_ADMIN_USERNAME ve YOUR_ADMIN_PASSWORD kısımlarını kendi güvenli kullanıcı adınız ve şifrenizle değiştirin:
* manager-gui: Bu rol, Tomcat Manager uygulamasının web arayüzüne erişim sağlar. Bu arayüzden uygulamaları dağıtabilir, başlatabilir, durdurabilir ve kaldırabilirsiniz.
* admin-gui: Bu rol, Host Manager uygulamasının web arayüzüne erişim sağlar. Bu arayüzden sanal ana bilgisayarları yönetebilirsiniz.
Dosyayı kaydedin ve kapatın. Değişikliklerin etkili olması için Tomcat servisini yeniden başlatmanız gerekir:
sudo systemctl restart tomcat
Yönetim Arayüzlerine Erişim Kısıtlaması (Güvenlik)
Varsayılan olarak, Tomcat Manager ve Host Manager uygulamalarına herhangi bir IP adresinden erişilebilir. Güvenlik nedeniyle, bu arayüzlere yalnızca belirli IP adreslerinden (örneğin, kendi geliştirme makinenizin IP adresi) erişime izin vermek iyi bir uygulamadır.
Bunu yapmak için, ilgili context.xml dosyalarını düzenlemeniz gerekir.
Manager Uygulaması için:
sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
Aşağıdaki satırları bulun:
Bu satırlar varsayılan olarak yalnızca localhost’tan erişime izin verir. Kendi IP adresinizi (örn. 192\.168\.1\.100) veya birden fazla IP adresini eklemek için | sembolünü kullanın:
Host Manager Uygulaması için:
sudo nano /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
Aynı şekilde allow özelliğini düzenleyin:
Dosyaları kaydedip kapattıktan sonra, Tomcat’i tekrar yeniden başlatmanız gerekebilir, ancak genellikle bu değişiklikler otomatik olarak algılanır.
Şimdi web tarayıcınızdan yönetim arayüzlerine erişebilirsiniz:
* Tomcat Manager: http://SERVER_IP_ADRESİNİZ:8080/manager/html
* Host Manager: http://SERVER_IP_ADRESİNİZ:8080/host-manager/html
Oluşturduğunuz kullanıcı adı ve şifre ile giriş yapmalısınız.
Ek Yapılandırmalar ve En İyi Uygulamalar
Apache Tomcat kurulumunuzu tamamladıktan sonra, performansı, güvenliği ve yönetilebilirliği artırmak için bazı ek yapılandırmalar ve en iyi uygulamalar düşünebilirsiniz.
Bellek Ayarları (JVM Options)
Tomcat’in performansını doğrudan etkileyen önemli bir faktör, Java Sanal Makinesi (JVM) için ayrılan bellek miktarıdır. Varsayılan ayarlar çoğu zaman küçük uygulamalar için yeterli olsa da, daha büyük veya yoğun kaynak kullanan uygulamalar için bellek ayarlarını optimize etmek gerekebilir.
Tomcat’in JVM seçeneklerini ayarlamak için genellikle /opt/tomcat/latest/bin/setenv.sh adında bir dosya oluşturulur. Bu dosya, Tomcat başlatılırken catalina.sh tarafından otomatik olarak okunur.
sudo nano /opt/tomcat/latest/bin/setenv.sh
Aşağıdaki satırları ekleyin (örnek değerlerdir, uygulamanızın ihtiyaçlarına göre ayarlayın):
#!/bin/sh
export JAVA_OPTS="-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Xms512m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC"
* Xms512m: JVM’nin başlangıçta 512 MB bellek kullanmasını sağlar.
* Xmx1024m: JVM’nin maksimum 1024 MB bellek kullanmasını sağlar.
* XX:MaxPermSize=256m (Java 8 öncesi): Kalıcı nesil boyutu. Java 8 ve sonrası için bu parametre kaldırılmıştır.
* XX:+UseConcMarkSweepGC: Eşzamanlı işaretleme ve süpürme çöp toplayıcısını etkinleştirir, bu da duraklama sürelerini azaltmaya yardımcı olabilir.
* -Djava.security.egd=file:/dev/./urandom: Güvenli rastgele sayı üretimi için daha hızlı bir kaynak kullanır, bu da başlangıç sürelerini hızlandırabilir.
Dosyayı kaydedin ve kapatın. Ardından, betiğe yürütme izni verin:
sudo chmod u+x /opt/tomcat/latest/bin/setenv.sh
Değişikliklerin uygulanması için Tomcat’i yeniden başlatın:
sudo systemctl restart tomcat
HTTPS (SSL/TLS) Yapılandırması
Üretim ortamlarında, web uygulamalarınızın güvenliğini sağlamak için HTTPS kullanmak zorunludur. Tomcat, server.xml dosyasındaki bir Connector etiketi aracılığıyla SSL/TLS’yi destekler.
server.xml dosyasını düzenleyin:
sudo nano /opt/tomcat/latest/conf/server.xml
Genellikle, varsayılan olarak yorum satırı yapılmış (commented out) bir SSL Connector bölümü bulunur. Bu bölümü bulup yorum satırından çıkarmanız ve kendi sertifika dosyalarınızın yolunu belirtmeniz gerekir:
* port="8443": HTTPS için standart porttur.
* keystoreFile: Java Keystore (JKS) formatındaki sertifika dosyanızın yolunu belirtir. Sertifikanızı ve özel anahtarınızı JKS formatına dönüştürmeniz gerekebilir.
* keystorePass: Keystore dosyanızın şifresidir.
HTTPS yapılandırması, bir sertifika yetkilisinden (CA) alınmış geçerli bir SSL sertifikası gerektirir. Let’s Encrypt gibi ücretsiz seçenekler de mevcuttur. Bu konu başlı başına ayrı bir rehber gerektirdiğinden, burada sadece temel bilgileri veriyoruz.
Nginx veya Apache ile Proxying
Üretim ortamlarında, Tomcat’i doğrudan internete açmak yerine, Nginx veya Apache HTTP Sunucusu gibi bir ters proxy’nin arkasına koymak yaygın bir uygulamadır. Bu, aşağıdaki avantajları sağlar:
* Güvenlik: Ters proxy, doğrudan Tomcat’e gelen istekleri filtreleyebilir ve kötü niyetli trafiği engelleyebilir.
* Performans: Ters proxy, statik içeriği (resimler, CSS, JavaScript dosyaları) daha verimli bir şekilde sunabilir ve Tomcat’in dinamik içerik sunumuna odaklanmasını sağlayabilir.
* Kolay SSL/TLS Yönetimi: SSL sertifikalarını ve HTTPS sonlandırmasını ters proxy üzerinde yönetmek daha kolaydır.
* Port Yönlendirme: HTTP (80) ve HTTPS (443) standart portlarından Tomcat’in 8080 veya 8443 portuna yönlendirme yapılabilir.
Örneğin, Nginx ile bir proxy yapılandırması şu şekilde görünebilir:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Bu yapılandırma, your_domain.com adresine gelen tüm istekleri localhost:8080 adresindeki Tomcat’e yönlendirir.
Log Dosyaları
Tomcat, uygulamalarınızın ve sunucunun durumu hakkında önemli bilgiler içeren log dosyaları oluşturur. Bu dosyalar, sorun giderme ve performans izleme için kritik öneme sahiptir. Tomcat’in log dosyaları /opt/tomcat/latest/logs dizininde bulunur.
Başlıca log dosyaları:
* catalina.out: Tomcat’in standart çıktı ve hata akışlarını içerir.
* localhost_access_log.YYYY-MM-DD.txt: Web sunucusuna yapılan tüm HTTP isteklerinin kaydını tutar.
* manager.YYYY-MM-DD.log, host-manager.YYYY-MM-DD.log: Yönetim uygulamalarına özel loglardır.
Bu log dosyalarını düzenli olarak kontrol etmek ve izlemek, uygulamanızın sağlığını anlamak için önemlidir. tail -f /opt/tomcat/latest/logs/catalina.out gibi komutlarla logları gerçek zamanlı olarak izleyebilirsiniz.
Güvenlik İpuçları
* Varsayılan Uygulamaları Kaldırma: Üretim ortamlarında, Tomcat’in varsayılan docs, examples, host-manager, manager ve ROOT (varsayılan karşılama sayfası) uygulamalarını kaldırmak veya erişimlerini kısıtlamak iyi bir güvenlik uygulamasıdır. Bu, potansiyel güvenlik açıklarını azaltır.
* Gereksiz Portları Kapatma: server.xml dosyasında tanımlı olan ve kullanılmayan tüm Connector etiketlerini veya diğer portları devre dışı bırakın. Özellikle AJP Connector (port 8009) genellikle bir ters proxy kullanılıyorsa gereksizdir.
* Sürüm Bilgilerini Gizleme: Sunucu yanıtlarında Tomcat sürüm bilgilerini gizlemek, saldırganların hedefli saldırılar düzenlemesini zorlaştırabilir. Bu, conf/server.xml dosyasındaki Connector etiketlerine server=" " ekleyerek yapılabilir.
* Güncel Kalmak: Java ve Tomcat’i her zaman en son güvenlik yamaları ve hata düzeltmeleriyle güncel tutun.
Sorun Giderme
Kurulum veya yapılandırma sırasında bazı sorunlarla karşılaşmanız olasıdır. İşte sık karşılaşılan sorunlar ve olası çözümleri:
Tomcat Başlamıyor
* Systemd Durumunu Kontrol Edin: sudo systemctl status tomcat komutuyla Tomcat servisinin durumunu kontrol edin. Hata mesajlarını ve logları dikkatlice okuyun.
* Journalctl Loglarını İnceleyin: Daha detaylı loglar için sudo journalctl -xeu tomcat komutunu kullanın. Bu komut, servisle ilgili tüm Systemd loglarını gösterecektir.
* catalina.out Log Dosyasını Kontrol Edin: /opt/tomcat/latest/logs/catalina.out dosyasında başlatma sırasında oluşan hataları arayın.
* JAVA_HOME Ortam Değişkeni: Systemd servis dosyasında JAVA_HOME yolunun doğru olduğundan emin olun. Yanlış bir yol, Tomcat’in Java’yı bulamamasına neden olabilir.
8080 Portuna Erişilemiyor
* Tomcat Çalışıyor mu?: sudo systemctl status tomcat ile Tomcat’in çalıştığından emin olun.
* Güvenlik Duvarı: UFW’nin 8080 portuna erişime izin verdiğinden emin olun (sudo ufw status). Eğer başka bir güvenlik duvarı kullanıyorsanız, onu da kontrol edin.
* Port Çakışması: Başka bir uygulamanın 8080 portunu kullanıp kullanmadığını kontrol edin: sudo netstat -tulnp | grep 8080. Eğer başka bir işlem bu portu kullanıyorsa, o işlemi durdurmanız veya Tomcat’in portunu değiştirmeniz gerekir (server.xml dosyasında).
* IP Adresi: Tarayıcınızda doğru IP adresini veya alan adını kullandığınızdan emin olun.
Yönetim Arayüzüne Giriş Yapılamıyor
* Kullanıcı Adı/Şifre: tomcat-users.xml dosyasındaki kullanıcı adı ve şifrenizin doğru olduğundan emin olun.
* Roller: Kullanıcınıza manager-gui ve admin-gui rollerinin atandığından emin olun.
* IP Kısıtlaması: context.xml dosyalarındaki RemoteAddrValve ayarlarını kontrol edin. Kendi IP adresinizin listede olduğundan veya kısıtlamanın geçici olarak kaldırıldığından emin olun.
* Tomcat Yeniden Başlatıldı mı?: tomcat-users.xml ve context.xml değişikliklerinden sonra Tomcat’i yeniden başlattığınızdan emin olun.
İzin Sorunları
* Tomcat’in çalıştırdığı tomcat kullanıcısının /opt/tomcat dizinindeki tüm dosyalara ve alt dizinlere okuma, yazma ve yürütme izinlerine sahip olduğundan emin olun (sudo chown -R tomcat:tomcat /opt/tomcat). Özellikle bin dizinindeki .sh betiklerinin yürütme izinleri olmalıdır (sudo chmod -R u+x /opt/tomcat/latest/bin).
Sonuç
Bu kapsamlı rehberde, Ubuntu 20.04 LTS üzerine Apache Tomcat 10’u adım adım nasıl kuracağınızı öğrendiniz. Sistem güncellemesinden başlayarak Java kurulumu, güvenli bir tomcat kullanıcısı oluşturma, Tomcat’i indirme ve kurma, Systemd servisi olarak yapılandırma, güvenlik duvarı ayarları ve web yönetim arayüzünü yapılandırma gibi tüm kritik adımları ele aldık. Ayrıca, bellek ayarları, HTTPS yapılandırması, ters proxy kullanımı ve güvenlik ipuçları gibi ek yapılandırmalar ve en iyi uygulamalar hakkında da bilgi edindiniz.
Artık Java tabanlı web uygulamalarınızı dağıtabileceğiniz ve yönetebileceğiniz güvenli ve kararlı bir Apache Tomcat ortamına sahipsiniz. Tomcat, geliştiricilere ve sistem yöneticilerine güçlü bir esneklik ve kontrol sunar. Uygulamalarınızı dağıtmaya başlamadan önce, üretim ortamları için önerilen güvenlik ve performans optimizasyonlarını uyguladığınızdan emin olun. Bu kurulum, web uygulamalarınız için sağlam bir temel oluşturacaktır.
