{"id":34478,"date":"2025-11-17T05:40:55","date_gmt":"2025-11-17T02:40:55","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34478"},"modified":"2025-11-17T05:40:55","modified_gmt":"2025-11-17T02:40:55","slug":"ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/","title":{"rendered":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Apache Tomcat, Java tabanl\u0131 web uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in yayg\u0131n olarak kullan\u0131lan a\u00e7\u0131k kaynakl\u0131 bir web sunucusu ve servlet konteyneridir. Java Servlet, JavaServer Pages (JSP), Java Expression Language ve Java WebSocket gibi teknolojileri uygulayarak Java kodunun web \u00fczerinde y\u00fcr\u00fct\u00fclmesini sa\u011flar. \u00d6zellikle kurumsal d\u00fczeyde ve geli\u015ftirme ortamlar\u0131nda Java tabanl\u0131 uygulamalar\u0131n da\u011f\u0131t\u0131m\u0131 i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Bu makalede, pop\u00fcler ve g\u00fcvenilir bir i\u015fletim sistemi olan Ubuntu 20.04 LTS (Long Term Support) \u00fczerine Apache Tomcat 10&#8217;un ad\u0131m ad\u0131m, kapsaml\u0131 bir \u015fekilde nas\u0131l kurulaca\u011f\u0131n\u0131 detayland\u0131raca\u011f\u0131z.<\/p>\n<p>Ubuntu 20.04, uzun s\u00fcreli deste\u011fi ve kararl\u0131l\u0131\u011f\u0131 ile sunucu ortamlar\u0131 i\u00e7in ideal bir se\u00e7imdir. Tomcat 10 ise, Jakarta EE 9 (veya daha yeni) spesifikasyonlar\u0131n\u0131 destekleyen en son kararl\u0131 s\u00fcr\u00fcmlerden biridir. Bu s\u00fcr\u00fcm, eski Java EE isim alanlar\u0131ndan Jakarta EE isim alanlar\u0131na ge\u00e7i\u015fi temsil eder, bu da modern Java tabanl\u0131 web uygulamalar\u0131 geli\u015ftirenler i\u00e7in \u00f6nemli bir ad\u0131md\u0131r. Bu rehber, Tomcat&#8217;i g\u00fcvenli, y\u00f6netilebilir ve sisteminize entegre edilmi\u015f bir \u015fekilde kurman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Apache Tomcat 10 kurulumuna ba\u015flamadan \u00f6nce, baz\u0131 temel gereksinimleri kar\u015f\u0131lad\u0131\u011f\u0131n\u0131zdan emin olmal\u0131s\u0131n\u0131z. Bu gereksinimler, sorunsuz bir kurulum s\u00fcreci i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4>Ubuntu 20.04 Sunucusu<\/h4>\n<p>*   Bir Ubuntu 20.04 LTS kurulu sunucuya veya sanal makineye eri\u015fiminiz olmal\u0131d\u0131r.<br \/>\n*   SSH (Secure Shell) arac\u0131l\u0131\u011f\u0131yla sunucuya eri\u015febilmelisiniz. Genellikle, bir terminal veya PuTTY gibi bir SSH istemcisi kullan\u0131l\u0131r.<\/p>\n<h4>Sudo Yetkileri<\/h4>\n<p>*   Kurulum ad\u0131mlar\u0131n\u0131n \u00e7o\u011fu i\u00e7in k\u00f6k (root) yetkilerine ihtiyac\u0131n\u0131z olacakt\u0131r. Bu nedenle, <code>sudo<\/code> komutunu kullanabilen bir kullan\u0131c\u0131 hesab\u0131na sahip olman\u0131z gerekmektedir. G\u00fcvenlik a\u00e7\u0131s\u0131ndan, do\u011frudan root kullan\u0131c\u0131s\u0131 olarak i\u015flem yapmak yerine, <code>sudo<\/code> yetkisi olan standart bir kullan\u0131c\u0131 hesab\u0131 kullan\u0131lmas\u0131 \u00f6nerilir.<\/p>\n<h4>Java Development Kit (JDK)<\/h4>\n<p>*   Apache Tomcat, Java tabanl\u0131 bir uygulama oldu\u011fu i\u00e7in \u00e7al\u0131\u015fmak \u00fczere bir Java Runtime Environment (JRE) veya daha iyisi bir Java Development Kit (JDK) gerektirir. Tomcat 10, Java SE 8 veya daha yeni bir s\u00fcr\u00fcm\u00fcn\u00fc gerektirir. Bu rehberde, Ubuntu 20.04 i\u00e7in varsay\u0131lan olarak sunulan OpenJDK 11 veya OpenJDK 17&#8217;yi kullanaca\u011f\u0131z. OpenJDK, \u00fccretsiz ve a\u00e7\u0131k kaynakl\u0131 bir Java uygulamas\u0131d\u0131r ve \u00e7o\u011fu Linux da\u011f\u0131t\u0131m\u0131nda tercih edilen se\u00e7enektir.<\/p>\n<p>Bu \u00f6n gereksinimleri kontrol ettikten sonra, kurulum ad\u0131mlar\u0131na ge\u00e7meye haz\u0131r\u0131z.<\/p>\n<h3>Ad\u0131m 1: Sistem G\u00fcncelleme ve Java Kurulumu<\/h3>\n<p>Kurulum s\u00fcrecine ba\u015flamadan \u00f6nce, sisteminizin paket listesini g\u00fcncellemek ve mevcut paketleri y\u00fckseltmek her zaman iyi bir uygulamad\u0131r. Bu, en son g\u00fcvenlik yamalar\u0131na ve yaz\u0131l\u0131m s\u00fcr\u00fcmlerine sahip olman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>Sistem G\u00fcncelleme<\/h4>\n<p>Terminalinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y<\/code><\/pre>\n<p>*   <code>sudo apt update<\/code>: Bu komut, yerel paket indeksinizi Ubuntu depolar\u0131ndaki en son bilgilerle g\u00fcnceller. Bu sayede, sisteminiz hangi paketlerin g\u00fcncellenmesi gerekti\u011fini veya yeni paketlerin mevcut oldu\u011funu \u00f6\u011frenir.<br \/>\n*   <code>sudo apt upgrade -y<\/code>: Bu komut, sisteminizdeki y\u00fckl\u00fc paketleri en son s\u00fcr\u00fcmlerine y\u00fckseltir. <code>-y<\/code> bayra\u011f\u0131, t\u00fcm sorulara otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131 verilmesini sa\u011flar, b\u00f6ylece y\u00fckseltme i\u015flemi kesintiye u\u011framaz.<\/p>\n<h4>Java (OpenJDK) Kurulumu<\/h4>\n<p>Tomcat 10 i\u00e7in Java SE 8 veya daha yeni bir s\u00fcr\u00fcm\u00fc gereklidir. Ubuntu 20.04 depolar\u0131nda OpenJDK 11 ve OpenJDK 17 mevcuttur. Performans ve g\u00fcvenlik iyile\u015ftirmeleri nedeniyle daha yeni bir s\u00fcr\u00fcm olan OpenJDK 11 veya 17&#8217;yi tercih etmek genellikle daha iyidir. Bu rehberde OpenJDK 11&#8217;i kuraca\u011f\u0131z, ancak ayn\u0131 ad\u0131mlar\u0131 OpenJDK 17 i\u00e7in de uygulayabilirsiniz (<code>openjdk-17-jdk<\/code> paketini kullanarak).<\/p>\n<p>A\u015fa\u011f\u0131daki komutla OpenJDK 11&#8217;i kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install openjdk-11-jdk -y<\/code><\/pre>\n<p>Kurulum tamamland\u0131ktan sonra, Java&#8217;n\u0131n do\u011fru \u015fekilde y\u00fcklendi\u011fini do\u011frulamak i\u00e7in s\u00fcr\u00fcm\u00fcn\u00fc kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">java -version<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131, y\u00fckl\u00fc Java s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir, \u00f6rne\u011fin:<\/p>\n<pre><code class=\"language-\">openjdk version \"11.0.11\" 2021-04-20\nOpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)\nOpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)<\/code><\/pre>\n<p>Java&#8217;n\u0131n kurulum dizinini (JAVA_HOME) bilmek, Tomcat servis dosyas\u0131n\u0131 yap\u0131land\u0131r\u0131rken faydal\u0131 olacakt\u0131r. Genellikle OpenJDK i\u00e7in bu yol <code>\/usr\/lib\/jvm\/java-11-openjdk-amd64<\/code> \u015feklindedir.<\/p>\n<h3>Ad\u0131m 2: Tomcat Kullan\u0131c\u0131s\u0131 Olu\u015fturma<\/h3>\n<p>G\u00fcvenlik en iyi uygulamalar\u0131ndan biri olarak, Apache Tomcat&#8217;i sistemde ayr\u0131, yetkisiz bir kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131rmak \u015fiddetle tavsiye edilir. Bu, Tomcat&#8217;in veya da\u011f\u0131t\u0131lan uygulamalar\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131 nedeniyle t\u00fcm sistemin tehlikeye at\u0131lma riskini azalt\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki komutu kullanarak <code>tomcat<\/code> ad\u0131nda yeni bir kullan\u0131c\u0131 ve grup olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo groupadd tomcat\nsudo useradd -s \/bin\/false -g tomcat -d \/opt\/tomcat tomcat<\/code><\/pre>\n<p>*   <code>sudo groupadd tomcat<\/code>: Bu komut, <code>tomcat<\/code> ad\u0131nda yeni bir sistem grubu olu\u015fturur.<br \/>\n*   <code>sudo useradd -s \/bin\/false -g tomcat -d \/opt\/tomcat tomcat<\/code>: Bu komut, <code>tomcat<\/code> ad\u0131nda yeni bir sistem kullan\u0131c\u0131s\u0131 olu\u015fturur.<br \/>\n    *   <code>-s \/bin\/false<\/code>: Bu kullan\u0131c\u0131ya kabuk eri\u015fimi verilmedi\u011fini belirtir. Bu, kullan\u0131c\u0131n\u0131n sisteme do\u011frudan giri\u015f yapmas\u0131n\u0131 engeller, bu da g\u00fcvenlik i\u00e7in \u00f6nemlidir.<br \/>\n    *   <code>-g tomcat<\/code>: Bu kullan\u0131c\u0131y\u0131 <code>tomcat<\/code> grubuna atar.<br \/>\n    *   <code>-d \/opt\/tomcat<\/code>: Bu kullan\u0131c\u0131n\u0131n ana dizinini <code>\/opt\/tomcat<\/code> olarak ayarlar. Tomcat&#8217;i buraya kuraca\u011f\u0131z.<\/p>\n<p>Bu ad\u0131mla, Tomcat&#8217;i \u00e7al\u0131\u015ft\u0131rmak i\u00e7in g\u00fcvenli bir kullan\u0131c\u0131 ortam\u0131 olu\u015fturmu\u015f olduk.<\/p>\n<h3>Ad\u0131m 3: Apache Tomcat 10 \u0130ndirme ve Kurulumu<\/h3>\n<p>\u015eimdi Apache Tomcat 10&#8217;un en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc resmi web sitesinden indirece\u011fiz ve uygun dizine kuraca\u011f\u0131z.<\/p>\n<h4>Tomcat&#8217;i \u0130ndirme<\/h4>\n<p>\u00d6ncelikle, Apache Tomcat&#8217;in resmi indirme sayfas\u0131n\u0131 ziyaret ederek Tomcat 10&#8217;un en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fcn URL&#8217;sini bulman\u0131z gerekir. Genellikle &#8220;Core&#8221; alt\u0131nda <code>tar.gz<\/code> uzant\u0131l\u0131 dosyay\u0131 aray\u0131n. Bu makalenin yaz\u0131ld\u0131\u011f\u0131 tarihte, Tomcat 10.1.x serisi g\u00fcnceldir.<\/p>\n<p>A\u015fa\u011f\u0131daki komutlar\u0131 kullanarak Tomcat&#8217;i <code>\/tmp<\/code> dizinine indirin:<\/p>\n<pre><code class=\"language-bash\">cd \/tmp\nwget https:\/\/dlcdn.apache.org\/tomcat\/tomcat-10\/v10.1.20\/bin\/apache-tomcat-10.1.20.tar.gz<\/code><\/pre>\n<p>*   URL&#8217;yi en son kararl\u0131 s\u00fcr\u00fcme g\u00f6re g\u00fcncelledi\u011finizden emin olun.<\/p>\n<h4>Tomcat&#8217;i \u00c7\u0131kartma ve Ta\u015f\u0131ma<\/h4>\n<p>\u0130ndirdi\u011finiz s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyay\u0131 <code>\/opt\/tomcat<\/code> dizinine \u00e7\u0131karaca\u011f\u0131z. Bu dizini daha \u00f6nce <code>tomcat<\/code> kullan\u0131c\u0131s\u0131n\u0131n ana dizini olarak belirlemi\u015ftik.<\/p>\n<p>\u00d6nce, <code>\/opt\/tomcat<\/code> dizinini olu\u015ftural\u0131m (e\u011fer otomatik olu\u015fmad\u0131ysa):<\/p>\n<pre><code class=\"language-bash\">sudo mkdir \/opt\/tomcat<\/code><\/pre>\n<p>\u015eimdi indirdi\u011finiz dosyay\u0131 <code>\/opt\/tomcat<\/code> dizinine \u00e7\u0131kart\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo tar -xf apache-tomcat-10.1.20.tar.gz -C \/opt\/tomcat<\/code><\/pre>\n<p>*   <code>-C \/opt\/tomcat<\/code>: S\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f dosyan\u0131n i\u00e7eri\u011fini belirtilen dizine \u00e7\u0131kart\u0131r.<\/p>\n<p>\u00c7\u0131kar\u0131lan dizin genellikle <code>apache-tomcat-10.1.20<\/code> gibi bir isme sahip olacakt\u0131r. Y\u00f6netimi kolayla\u015ft\u0131rmak ve gelecekteki y\u00fckseltmeleri basitle\u015ftirmek i\u00e7in, bu dizine sembolik bir ba\u011flant\u0131 (symlink) olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/opt\/tomcat\/apache-tomcat-10.1.20 \/opt\/tomcat\/latest<\/code><\/pre>\n<p>Bu, <code>latest<\/code> sembolik ba\u011flant\u0131s\u0131n\u0131n her zaman mevcut Tomcat s\u00fcr\u00fcm\u00fcn\u00fc i\u015faret etmesini sa\u011flar. Gelecekte yeni bir s\u00fcr\u00fcm kurdu\u011funuzda, sadece sembolik ba\u011flant\u0131y\u0131 yeni dizini i\u015faret edecek \u015fekilde g\u00fcncelleyebilirsiniz.<\/p>\n<h4>\u0130zinleri Ayarlama<\/h4>\n<p>Tomcat&#8217;i <code>tomcat<\/code> kullan\u0131c\u0131s\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z i\u00e7in, bu kullan\u0131c\u0131n\u0131n Tomcat kurulum dizini \u00fczerinde do\u011fru izinlere sahip olmas\u0131 gerekir.<\/p>\n<p>T\u00fcm <code>\/opt\/tomcat<\/code> dizininin sahipli\u011fini <code>tomcat<\/code> kullan\u0131c\u0131s\u0131na ve grubuna verin:<\/p>\n<pre><code class=\"language-bash\">sudo chown -R tomcat:tomcat \/opt\/tomcat<\/code><\/pre>\n<p>Ayr\u0131ca, <code>conf<\/code> dizinindeki yap\u0131land\u0131rma dosyalar\u0131na ve <code>bin<\/code> dizinindeki y\u00fcr\u00fct\u00fclebilir betiklere do\u011fru okuma ve y\u00fcr\u00fctme izinleri ayarlamam\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo chmod -R u+rwx \/opt\/tomcat\/latest\/conf\nsudo chmod -R u+x \/opt\/tomcat\/latest\/bin<\/code><\/pre>\n<p>*   <code>u+rwx<\/code>: Kullan\u0131c\u0131ya okuma, yazma ve y\u00fcr\u00fctme izinleri verir.<br \/>\n*   <code>u+x<\/code>: Kullan\u0131c\u0131ya y\u00fcr\u00fctme izinleri verir.<\/p>\n<p>Bu izin ayarlar\u0131, Tomcat&#8217;in do\u011fru \u015fekilde ba\u015flamas\u0131 ve \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereklidir.<\/p>\n<h3>Ad\u0131m 4: Systemd Servisi Olu\u015fturma<\/h3>\n<p>Tomcat&#8217;i bir Systemd servisi olarak yap\u0131land\u0131rmak, sunucu ba\u015flat\u0131ld\u0131\u011f\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flaman\u0131n, kolayca durdurup ba\u015flatman\u0131n ve sistem kaynaklar\u0131n\u0131 daha iyi y\u00f6netmenin en iyi yoludur.<\/p>\n<p>Yeni bir Systemd servis dosyas\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/systemd\/system\/tomcat.service<\/code><\/pre>\n<p>A\u00e7\u0131lan edit\u00f6re a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-ini\">[Unit]\nDescription=Apache Tomcat Web Application Container\nAfter=network.target\n\n[Service]\nType=forking\nUser=tomcat\nGroup=tomcat\nEnvironment=\"JAVA_HOME=\/usr\/lib\/jvm\/java-11-openjdk-amd64\"\nEnvironment=\"CATALINA_PID=\/opt\/tomcat\/latest\/tomcat.pid\"\nEnvironment=\"CATALINA_HOME=\/opt\/tomcat\/latest\"\nEnvironment=\"CATALINA_BASE=\/opt\/tomcat\/latest\"\nExecStart=\/opt\/tomcat\/latest\/bin\/startup.sh\nExecStop=\/opt\/tomcat\/latest\/bin\/shutdown.sh\nRestartSec=10\nRestart=on-failure\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<p>*   <strong>[Unit]<\/strong><br \/>\n    *   <code>Description<\/code>: Servisin k\u0131sa bir a\u00e7\u0131klamas\u0131n\u0131 sa\u011flar.<br \/>\n    *   <code>After=network.target<\/code>: Bu servisin a\u011f servisi ba\u015flad\u0131ktan sonra ba\u015flat\u0131lmas\u0131 gerekti\u011fini belirtir.<br \/>\n*   <strong>[Service]<\/strong><br \/>\n    *   <code>Type=forking<\/code>: Servisin ana i\u015fleminin bir alt i\u015flem ba\u015flatt\u0131\u011f\u0131n\u0131 ve ana i\u015flemin \u00e7\u0131kt\u0131\u011f\u0131n\u0131 belirtir. Tomcat i\u00e7in bu tip uygundur.<br \/>\n    *   <code>User=tomcat<\/code>, <code>Group=tomcat<\/code>: Servisin hangi kullan\u0131c\u0131 ve grup alt\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir. Daha \u00f6nce olu\u015fturdu\u011fumuz <code>tomcat<\/code> kullan\u0131c\u0131s\u0131n\u0131 kullan\u0131yoruz.<br \/>\n    *   <code>Environment=\"JAVA_HOME=...\"<\/code>: Java kurulum dizininin yolunu belirtir. Bu yolu, sisteminizdeki Java s\u00fcr\u00fcm\u00fcne g\u00f6re g\u00fcncelledi\u011finizden emin olun (\u00f6rn. OpenJDK 17 i\u00e7in <code>\/usr\/lib\/jvm\/java-17-openjdk-amd64<\/code>).<br \/>\n    *   <code>Environment=\"CATALINA_PID=...\"<\/code>: Tomcat&#8217;in i\u015flem kimli\u011fi (PID) dosyas\u0131n\u0131 nerede saklayaca\u011f\u0131n\u0131 belirtir.<br \/>\n    *   <code>Environment=\"CATALINA_HOME=...\"<\/code>: Tomcat&#8217;in k\u00f6k dizinini belirtir.<br \/>\n    *   <code>Environment=\"CATALINA_BASE=...\"<\/code>: Tomcat&#8217;in yap\u0131land\u0131rma dosyalar\u0131n\u0131n ve di\u011fer kaynaklar\u0131n\u0131n bulundu\u011fu dizini belirtir. Genellikle <code>CATALINA_HOME<\/code> ile ayn\u0131d\u0131r.<br \/>\n    *   <code>ExecStart<\/code>: Servis ba\u015flat\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak komutu belirtir. Tomcat&#8217;in <code>startup.sh<\/code> beti\u011fini kullan\u0131r\u0131z.<br \/>\n    *   <code>ExecStop<\/code>: Servis durduruldu\u011funda \u00e7al\u0131\u015ft\u0131r\u0131lacak komutu belirtir. Tomcat&#8217;in <code>shutdown.sh<\/code> beti\u011fini kullan\u0131r\u0131z.<br \/>\n    *   <code>RestartSec=10<\/code>: Servis ba\u015far\u0131s\u0131z olursa, yeniden ba\u015flatmadan \u00f6nce 10 saniye bekler.<br \/>\n    *   <code>Restart=on-failure<\/code>: Servis beklenmedik bir \u015fekilde durursa otomatik olarak yeniden ba\u015flat\u0131l\u0131r.<br \/>\n*   <strong>[Install]<\/strong><br \/>\n    *   <code>WantedBy=multi-user.target<\/code>: Bu servisin \u00e7ok kullan\u0131c\u0131l\u0131 sistem durumunda (normal \u00e7al\u0131\u015fma modu) etkinle\u015ftirilmesi gerekti\u011fini belirtir.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n (nano&#8217;da <code>Ctrl+O<\/code>, <code>Enter<\/code>, <code>Ctrl+X<\/code>).<\/p>\n<h4>Systemd Servisini Yeniden Y\u00fckleme ve Ba\u015flatma<\/h4>\n<p>Systemd&#8217;ye yeni servis dosyas\u0131n\u0131 bildirmek i\u00e7in daemon&#8217;\u0131 yeniden y\u00fcklemeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl daemon-reload<\/code><\/pre>\n<p>\u015eimdi Tomcat servisini ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start tomcat<\/code><\/pre>\n<p>Tomcat&#8217;in sistem ba\u015flang\u0131c\u0131nda otomatik olarak ba\u015flamas\u0131n\u0131 sa\u011flamak i\u00e7in etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl enable tomcat<\/code><\/pre>\n<p>Servisin durumunu kontrol ederek \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status tomcat<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131, servisin &#8220;active (running)&#8221; durumunda oldu\u011funu g\u00f6stermelidir.<\/p>\n<h3>Ad\u0131m 5: G\u00fcvenlik Duvar\u0131n\u0131 Yap\u0131land\u0131rma (UFW)<\/h3>\n<p>Ubuntu&#8217;da varsay\u0131lan g\u00fcvenlik duvar\u0131 olan UFW (Uncomplicated Firewall), sunucunuzu d\u0131\u015f tehditlerden korumak i\u00e7in \u00f6nemlidir. Tomcat varsay\u0131lan olarak 8080 portunu kullan\u0131r, bu nedenle bu porta d\u0131\u015far\u0131dan eri\u015fime izin vermeniz gerekir.<\/p>\n<p>\u00d6ncelikle, UFW&#8217;nin durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>E\u011fer UFW etkin de\u011filse, a\u015fa\u011f\u0131daki komutlarla etkinle\u015ftirebilirsiniz (SSH ba\u011flant\u0131n\u0131z\u0131n kesilmemesi i\u00e7in \u00f6nce SSH portuna izin vermeyi unutmay\u0131n):<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow OpenSSH\nsudo ufw enable<\/code><\/pre>\n<p>\u015eimdi 8080 portuna TCP ba\u011flant\u0131lar\u0131na izin verin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 8080\/tcp<\/code><\/pre>\n<p>G\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131n uyguland\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in tekrar durumu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo ufw status<\/code><\/pre>\n<p>8080 portunun &#8220;ALLOW&#8221; durumunda oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<h3>Tomcat Kurulumunu Do\u011frulama<\/h3>\n<p>T\u00fcm ad\u0131mlar\u0131 ba\u015far\u0131yla tamamlad\u0131ysan\u0131z, Tomcat&#8217;in web aray\u00fcz\u00fcne eri\u015febilmelisiniz. Bir web taray\u0131c\u0131s\u0131 a\u00e7\u0131n ve sunucunuzun IP adresini veya alan ad\u0131n\u0131 8080 portuyla birlikte girin:<\/p>\n<pre><code class=\"language-\">http:\/\/SERVER_IP_ADRES\u0130N\u0130Z:8080<\/code><\/pre>\n<p>E\u011fer her \u015fey do\u011fru kurulduysa, Apache Tomcat&#8217;in varsay\u0131lan kar\u015f\u0131lama sayfas\u0131n\u0131 g\u00f6rmelisiniz. Bu sayfa, Tomcat&#8217;in ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<h3>Ad\u0131m 6: Tomcat Web Y\u00f6netim Aray\u00fcz\u00fcn\u00fc Yap\u0131land\u0131rma<\/h3>\n<p>Tomcat, uygulamalar\u0131 da\u011f\u0131tmak, sunucu durumunu izlemek ve di\u011fer y\u00f6netim g\u00f6revlerini ger\u00e7ekle\u015ftirmek i\u00e7in bir web y\u00f6netim aray\u00fcz\u00fc (Manager App ve Host Manager App) sunar. Bu aray\u00fczlere eri\u015fmek i\u00e7in kullan\u0131c\u0131 kimlik bilgileri tan\u0131mlaman\u0131z gerekir.<\/p>\n<h4>Kullan\u0131c\u0131 Kimlik Bilgilerini Ayarlama<\/h4>\n<p><code>conf\/tomcat-users.xml<\/code> dosyas\u0131, Tomcat&#8217;in kullan\u0131c\u0131lar\u0131n\u0131 ve rollerini tan\u0131mlar. Bu dosyay\u0131 d\u00fczenleyerek y\u00f6netici kullan\u0131c\u0131lar\u0131 olu\u015fturaca\u011f\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/latest\/conf\/tomcat-users.xml<\/code><\/pre>\n<p><code><tomcat-users><\/code> etiketinin i\u00e7ine, mevcut \u00f6rneklerin alt\u0131na veya \u00fczerine a\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin. <code>YOUR_ADMIN_USERNAME<\/code> ve <code>YOUR_ADMIN_PASSWORD<\/code> k\u0131s\u0131mlar\u0131n\u0131 kendi g\u00fcvenli kullan\u0131c\u0131 ad\u0131n\u0131z ve \u015fifrenizle de\u011fi\u015ftirin:<\/p>\n<pre><code class=\"language-xml\"><role rolename=\"manager-gui\"\/>\n<role rolename=\"admin-gui\"\/>\n<user username=\"YOUR_ADMIN_USERNAME\" password=\"YOUR_ADMIN_PASSWORD\" roles=\"manager-gui,admin-gui\"\/><\/code><\/pre>\n<p>*   <code>manager-gui<\/code>: Bu rol, Tomcat Manager uygulamas\u0131n\u0131n web aray\u00fcz\u00fcne eri\u015fim sa\u011flar. Bu aray\u00fczden uygulamalar\u0131 da\u011f\u0131tabilir, ba\u015flatabilir, durdurabilir ve kald\u0131rabilirsiniz.<br \/>\n*   <code>admin-gui<\/code>: Bu rol, Host Manager uygulamas\u0131n\u0131n web aray\u00fcz\u00fcne eri\u015fim sa\u011flar. Bu aray\u00fczden sanal ana bilgisayarlar\u0131 y\u00f6netebilirsiniz.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n. De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in Tomcat servisini yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart tomcat<\/code><\/pre>\n<h4>Y\u00f6netim Aray\u00fczlerine Eri\u015fim K\u0131s\u0131tlamas\u0131 (G\u00fcvenlik)<\/h4>\n<p>Varsay\u0131lan olarak, Tomcat Manager ve Host Manager uygulamalar\u0131na herhangi bir IP adresinden eri\u015filebilir. G\u00fcvenlik nedeniyle, bu aray\u00fczlere yaln\u0131zca belirli IP adreslerinden (\u00f6rne\u011fin, kendi geli\u015ftirme makinenizin IP adresi) eri\u015fime izin vermek iyi bir uygulamad\u0131r.<\/p>\n<p>Bunu yapmak i\u00e7in, ilgili <code>context.xml<\/code> dosyalar\u0131n\u0131 d\u00fczenlemeniz gerekir.<\/p>\n<p><strong>Manager Uygulamas\u0131 i\u00e7in:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/latest\/webapps\/manager\/META-INF\/context.xml<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki sat\u0131rlar\u0131 bulun:<\/p>\n<pre><code class=\"language-xml\"><Valve className=\"org.apache.catalina.valves.RemoteAddrValve\"\n       allow=\"127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1\" \/><\/code><\/pre>\n<p>Bu sat\u0131rlar varsay\u0131lan olarak yaln\u0131zca localhost&#8217;tan eri\u015fime izin verir. Kendi IP adresinizi (\u00f6rn. <code>192\\.168\\.1\\.100<\/code>) veya birden fazla IP adresini eklemek i\u00e7in <code>|<\/code> sembol\u00fcn\u00fc kullan\u0131n:<\/p>\n<pre><code class=\"language-xml\"><Valve className=\"org.apache.catalina.valves.RemoteAddrValve\"\n       allow=\"127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1|192\\.168\\.1\\.100\" \/><\/code><\/pre>\n<p><strong>Host Manager Uygulamas\u0131 i\u00e7in:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/latest\/webapps\/host-manager\/META-INF\/context.xml<\/code><\/pre>\n<p>Ayn\u0131 \u015fekilde <code>allow<\/code> \u00f6zelli\u011fini d\u00fczenleyin:<\/p>\n<pre><code class=\"language-xml\"><Valve className=\"org.apache.catalina.valves.RemoteAddrValve\"\n       allow=\"127\\.\\d+\\.\\d+\\.\\d+|::1|0:0:0:0:0:0:0:1|192\\.168\\.1\\.100\" \/><\/code><\/pre>\n<p>Dosyalar\u0131 kaydedip kapatt\u0131ktan sonra, Tomcat&#8217;i tekrar yeniden ba\u015flatman\u0131z gerekebilir, ancak genellikle bu de\u011fi\u015fiklikler otomatik olarak alg\u0131lan\u0131r.<\/p>\n<p>\u015eimdi web taray\u0131c\u0131n\u0131zdan y\u00f6netim aray\u00fczlerine eri\u015febilirsiniz:<\/p>\n<p>*   <strong>Tomcat Manager:<\/strong> <code>http:\/\/SERVER_IP_ADRES\u0130N\u0130Z:8080\/manager\/html<\/code><br \/>\n*   <strong>Host Manager:<\/strong> <code>http:\/\/SERVER_IP_ADRES\u0130N\u0130Z:8080\/host-manager\/html<\/code><\/p>\n<p>Olu\u015fturdu\u011funuz kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile giri\u015f yapmal\u0131s\u0131n\u0131z.<\/p>\n<h3>Ek Yap\u0131land\u0131rmalar ve En \u0130yi Uygulamalar<\/h3>\n<p>Apache Tomcat kurulumunuzu tamamlad\u0131ktan sonra, performans\u0131, g\u00fcvenli\u011fi ve y\u00f6netilebilirli\u011fi art\u0131rmak i\u00e7in baz\u0131 ek yap\u0131land\u0131rmalar ve en iyi uygulamalar d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h4>Bellek Ayarlar\u0131 (JVM Options)<\/h4>\n<p>Tomcat&#8217;in performans\u0131n\u0131 do\u011frudan etkileyen \u00f6nemli bir fakt\u00f6r, Java Sanal Makinesi (JVM) i\u00e7in ayr\u0131lan bellek miktar\u0131d\u0131r. Varsay\u0131lan ayarlar \u00e7o\u011fu zaman k\u00fc\u00e7\u00fck uygulamalar i\u00e7in yeterli olsa da, daha b\u00fcy\u00fck veya yo\u011fun kaynak kullanan uygulamalar i\u00e7in bellek ayarlar\u0131n\u0131 optimize etmek gerekebilir.<\/p>\n<p>Tomcat&#8217;in JVM se\u00e7eneklerini ayarlamak i\u00e7in genellikle <code>\/opt\/tomcat\/latest\/bin\/setenv.sh<\/code> ad\u0131nda bir dosya olu\u015fturulur. Bu dosya, Tomcat ba\u015flat\u0131l\u0131rken <code>catalina.sh<\/code> taraf\u0131ndan otomatik olarak okunur.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/latest\/bin\/setenv.sh<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki sat\u0131rlar\u0131 ekleyin (\u00f6rnek de\u011ferlerdir, uygulaman\u0131z\u0131n ihtiya\u00e7lar\u0131na g\u00f6re ayarlay\u0131n):<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/sh\nexport JAVA_OPTS=\"-Djava.awt.headless=true -Djava.security.egd=file:\/dev\/.\/urandom -Xms512m -Xmx1024m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC\"<\/code><\/pre>\n<p>*   <code>Xms512m<\/code>: JVM&#8217;nin ba\u015flang\u0131\u00e7ta 512 MB bellek kullanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>Xmx1024m<\/code>: JVM&#8217;nin maksimum 1024 MB bellek kullanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>XX:MaxPermSize=256m<\/code> (Java 8 \u00f6ncesi): Kal\u0131c\u0131 nesil boyutu. Java 8 ve sonras\u0131 i\u00e7in bu parametre kald\u0131r\u0131lm\u0131\u015ft\u0131r.<br \/>\n*   <code>XX:+UseConcMarkSweepGC<\/code>: E\u015fzamanl\u0131 i\u015faretleme ve s\u00fcp\u00fcrme \u00e7\u00f6p toplay\u0131c\u0131s\u0131n\u0131 etkinle\u015ftirir, bu da duraklama s\u00fcrelerini azaltmaya yard\u0131mc\u0131 olabilir.<br \/>\n*   <code>-Djava.security.egd=file:\/dev\/.\/urandom<\/code>: G\u00fcvenli rastgele say\u0131 \u00fcretimi i\u00e7in daha h\u0131zl\u0131 bir kaynak kullan\u0131r, bu da ba\u015flang\u0131\u00e7 s\u00fcrelerini h\u0131zland\u0131rabilir.<\/p>\n<p>Dosyay\u0131 kaydedin ve kapat\u0131n. Ard\u0131ndan, beti\u011fe y\u00fcr\u00fctme izni verin:<\/p>\n<pre><code class=\"language-bash\">sudo chmod u+x \/opt\/tomcat\/latest\/bin\/setenv.sh<\/code><\/pre>\n<p>De\u011fi\u015fikliklerin uygulanmas\u0131 i\u00e7in Tomcat&#8217;i yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart tomcat<\/code><\/pre>\n<h4>HTTPS (SSL\/TLS) Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>\u00dcretim ortamlar\u0131nda, web uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flamak i\u00e7in HTTPS kullanmak zorunludur. Tomcat, <code>server.xml<\/code> dosyas\u0131ndaki bir <code>Connector<\/code> etiketi arac\u0131l\u0131\u011f\u0131yla SSL\/TLS&#8217;yi destekler.<\/p>\n<p><code>server.xml<\/code> dosyas\u0131n\u0131 d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/opt\/tomcat\/latest\/conf\/server.xml<\/code><\/pre>\n<p>Genellikle, varsay\u0131lan olarak yorum sat\u0131r\u0131 yap\u0131lm\u0131\u015f (commented out) bir SSL Connector b\u00f6l\u00fcm\u00fc bulunur. Bu b\u00f6l\u00fcm\u00fc bulup yorum sat\u0131r\u0131ndan \u00e7\u0131karman\u0131z ve kendi sertifika dosyalar\u0131n\u0131z\u0131n yolunu belirtmeniz gerekir:<\/p>\n<pre><code class=\"language-xml\"><Connector port=\"8443\" protocol=\"org.apache.coyote.http11.Http11NioProtocol\"\n           maxThreads=\"150\" SSLEnabled=\"true\" scheme=\"https\" secure=\"true\"\n           clientAuth=\"false\" sslProtocol=\"TLS\"\n           keystoreFile=\"\/path\/to\/your\/certificate.jks\" keystorePass=\"your_keystore_password\" \/><\/code><\/pre>\n<p>*   <code>port=\"8443\"<\/code>: HTTPS i\u00e7in standart porttur.<br \/>\n*   <code>keystoreFile<\/code>: Java Keystore (JKS) format\u0131ndaki sertifika dosyan\u0131z\u0131n yolunu belirtir. Sertifikan\u0131z\u0131 ve \u00f6zel anahtar\u0131n\u0131z\u0131 JKS format\u0131na d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekebilir.<br \/>\n*   <code>keystorePass<\/code>: Keystore dosyan\u0131z\u0131n \u015fifresidir.<\/p>\n<p>HTTPS yap\u0131land\u0131rmas\u0131, bir sertifika yetkilisinden (CA) al\u0131nm\u0131\u015f ge\u00e7erli bir SSL sertifikas\u0131 gerektirir. Let&#8217;s Encrypt gibi \u00fccretsiz se\u00e7enekler de mevcuttur. Bu konu ba\u015fl\u0131 ba\u015f\u0131na ayr\u0131 bir rehber gerektirdi\u011finden, burada sadece temel bilgileri veriyoruz.<\/p>\n<h4>Nginx veya Apache ile Proxying<\/h4>\n<p>\u00dcretim ortamlar\u0131nda, Tomcat&#8217;i do\u011frudan internete a\u00e7mak yerine, Nginx veya Apache HTTP Sunucusu gibi bir ters proxy&#8217;nin arkas\u0131na koymak yayg\u0131n bir uygulamad\u0131r. Bu, a\u015fa\u011f\u0131daki avantajlar\u0131 sa\u011flar:<\/p>\n<p>*   <strong>G\u00fcvenlik<\/strong>: Ters proxy, do\u011frudan Tomcat&#8217;e gelen istekleri filtreleyebilir ve k\u00f6t\u00fc niyetli trafi\u011fi engelleyebilir.<br \/>\n*   <strong>Performans<\/strong>: Ters proxy, statik i\u00e7eri\u011fi (resimler, CSS, JavaScript dosyalar\u0131) daha verimli bir \u015fekilde sunabilir ve Tomcat&#8217;in dinamik i\u00e7erik sunumuna odaklanmas\u0131n\u0131 sa\u011flayabilir.<br \/>\n*   <strong>Kolay SSL\/TLS Y\u00f6netimi<\/strong>: SSL sertifikalar\u0131n\u0131 ve HTTPS sonland\u0131rmas\u0131n\u0131 ters proxy \u00fczerinde y\u00f6netmek daha kolayd\u0131r.<br \/>\n*   <strong>Port Y\u00f6nlendirme<\/strong>: HTTP (80) ve HTTPS (443) standart portlar\u0131ndan Tomcat&#8217;in 8080 veya 8443 portuna y\u00f6nlendirme yap\u0131labilir.<\/p>\n<p>\u00d6rne\u011fin, Nginx ile bir proxy yap\u0131land\u0131rmas\u0131 \u015fu \u015fekilde g\u00f6r\u00fcnebilir:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name your_domain.com;\n\n    location \/ {\n        proxy_pass http:\/\/localhost:8080;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rma, <code>your_domain.com<\/code> adresine gelen t\u00fcm istekleri <code>localhost:8080<\/code> adresindeki Tomcat&#8217;e y\u00f6nlendirir.<\/p>\n<h4>Log Dosyalar\u0131<\/h4>\n<p>Tomcat, uygulamalar\u0131n\u0131z\u0131n ve sunucunun durumu hakk\u0131nda \u00f6nemli bilgiler i\u00e7eren log dosyalar\u0131 olu\u015fturur. Bu dosyalar, sorun giderme ve performans izleme i\u00e7in kritik \u00f6neme sahiptir. Tomcat&#8217;in log dosyalar\u0131 <code>\/opt\/tomcat\/latest\/logs<\/code> dizininde bulunur.<\/p>\n<p>Ba\u015fl\u0131ca log dosyalar\u0131:<\/p>\n<p>*   <code>catalina.out<\/code>: Tomcat&#8217;in standart \u00e7\u0131kt\u0131 ve hata ak\u0131\u015flar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>localhost_access_log.YYYY-MM-DD.txt<\/code>: Web sunucusuna yap\u0131lan t\u00fcm HTTP isteklerinin kayd\u0131n\u0131 tutar.<br \/>\n*   <code>manager.YYYY-MM-DD.log<\/code>, <code>host-manager.YYYY-MM-DD.log<\/code>: Y\u00f6netim uygulamalar\u0131na \u00f6zel loglard\u0131r.<\/p>\n<p>Bu log dosyalar\u0131n\u0131 d\u00fczenli olarak kontrol etmek ve izlemek, uygulaman\u0131z\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 anlamak i\u00e7in \u00f6nemlidir. <code>tail -f \/opt\/tomcat\/latest\/logs\/catalina.out<\/code> gibi komutlarla loglar\u0131 ger\u00e7ek zamanl\u0131 olarak izleyebilirsiniz.<\/p>\n<h4>G\u00fcvenlik \u0130pu\u00e7lar\u0131<\/h4>\n<p>*   <strong>Varsay\u0131lan Uygulamalar\u0131 Kald\u0131rma<\/strong>: \u00dcretim ortamlar\u0131nda, Tomcat&#8217;in varsay\u0131lan <code>docs<\/code>, <code>examples<\/code>, <code>host-manager<\/code>, <code>manager<\/code> ve <code>ROOT<\/code> (varsay\u0131lan kar\u015f\u0131lama sayfas\u0131) uygulamalar\u0131n\u0131 kald\u0131rmak veya eri\u015fimlerini k\u0131s\u0131tlamak iyi bir g\u00fcvenlik uygulamas\u0131d\u0131r. Bu, potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 azalt\u0131r.<br \/>\n*   <strong>Gereksiz Portlar\u0131 Kapatma<\/strong>: <code>server.xml<\/code> dosyas\u0131nda tan\u0131ml\u0131 olan ve kullan\u0131lmayan t\u00fcm <code>Connector<\/code> etiketlerini veya di\u011fer portlar\u0131 devre d\u0131\u015f\u0131 b\u0131rak\u0131n. \u00d6zellikle AJP Connector (port 8009) genellikle bir ters proxy kullan\u0131l\u0131yorsa gereksizdir.<br \/>\n*   <strong>S\u00fcr\u00fcm Bilgilerini Gizleme<\/strong>: Sunucu yan\u0131tlar\u0131nda Tomcat s\u00fcr\u00fcm bilgilerini gizlemek, sald\u0131rganlar\u0131n hedefli sald\u0131r\u0131lar d\u00fczenlemesini zorla\u015ft\u0131rabilir. Bu, <code>conf\/server.xml<\/code> dosyas\u0131ndaki <code>Connector<\/code> etiketlerine <code>server=\" \"<\/code> ekleyerek yap\u0131labilir.<br \/>\n*   <strong>G\u00fcncel Kalmak<\/strong>: Java ve Tomcat&#8217;i her zaman en son g\u00fcvenlik yamalar\u0131 ve hata d\u00fczeltmeleriyle g\u00fcncel tutun.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum veya yap\u0131land\u0131rma s\u0131ras\u0131nda baz\u0131 sorunlarla kar\u015f\u0131la\u015fman\u0131z olas\u0131d\u0131r. \u0130\u015fte s\u0131k kar\u015f\u0131la\u015f\u0131lan sorunlar ve olas\u0131 \u00e7\u00f6z\u00fcmleri:<\/p>\n<h4>Tomcat Ba\u015flam\u0131yor<\/h4>\n<p>*   <strong>Systemd Durumunu Kontrol Edin<\/strong>: <code>sudo systemctl status tomcat<\/code> komutuyla Tomcat servisinin durumunu kontrol edin. Hata mesajlar\u0131n\u0131 ve loglar\u0131 dikkatlice okuyun.<br \/>\n*   <strong>Journalctl Loglar\u0131n\u0131 \u0130nceleyin<\/strong>: Daha detayl\u0131 loglar i\u00e7in <code>sudo journalctl -xeu tomcat<\/code> komutunu kullan\u0131n. Bu komut, servisle ilgili t\u00fcm Systemd loglar\u0131n\u0131 g\u00f6sterecektir.<br \/>\n*   <strong><code>catalina.out<\/code> Log Dosyas\u0131n\u0131 Kontrol Edin<\/strong>: <code>\/opt\/tomcat\/latest\/logs\/catalina.out<\/code> dosyas\u0131nda ba\u015flatma s\u0131ras\u0131nda olu\u015fan hatalar\u0131 aray\u0131n.<br \/>\n*   <strong><code>JAVA_HOME<\/code> Ortam De\u011fi\u015fkeni<\/strong>: Systemd servis dosyas\u0131nda <code>JAVA_HOME<\/code> yolunun do\u011fru oldu\u011fundan emin olun. Yanl\u0131\u015f bir yol, Tomcat&#8217;in Java&#8217;y\u0131 bulamamas\u0131na neden olabilir.<\/p>\n<h4>8080 Portuna Eri\u015filemiyor<\/h4>\n<p>*   <strong>Tomcat \u00c7al\u0131\u015f\u0131yor mu?<\/strong>: <code>sudo systemctl status tomcat<\/code> ile Tomcat&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131<\/strong>: UFW&#8217;nin 8080 portuna eri\u015fime izin verdi\u011finden emin olun (<code>sudo ufw status<\/code>). E\u011fer ba\u015fka bir g\u00fcvenlik duvar\u0131 kullan\u0131yorsan\u0131z, onu da kontrol edin.<br \/>\n*   <strong>Port \u00c7ak\u0131\u015fmas\u0131<\/strong>: Ba\u015fka bir uygulaman\u0131n 8080 portunu kullan\u0131p kullanmad\u0131\u011f\u0131n\u0131 kontrol edin: <code>sudo netstat -tulnp | grep 8080<\/code>. E\u011fer ba\u015fka bir i\u015flem bu portu kullan\u0131yorsa, o i\u015flemi durdurman\u0131z veya Tomcat&#8217;in portunu de\u011fi\u015ftirmeniz gerekir (<code>server.xml<\/code> dosyas\u0131nda).<br \/>\n*   <strong>IP Adresi<\/strong>: Taray\u0131c\u0131n\u0131zda do\u011fru IP adresini veya alan ad\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<h4>Y\u00f6netim Aray\u00fcz\u00fcne Giri\u015f Yap\u0131lam\u0131yor<\/h4>\n<p>*   <strong>Kullan\u0131c\u0131 Ad\u0131\/\u015eifre<\/strong>: <code>tomcat-users.xml<\/code> dosyas\u0131ndaki kullan\u0131c\u0131 ad\u0131 ve \u015fifrenizin do\u011fru oldu\u011fundan emin olun.<br \/>\n*   <strong>Roller<\/strong>: Kullan\u0131c\u0131n\u0131za <code>manager-gui<\/code> ve <code>admin-gui<\/code> rollerinin atand\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>IP K\u0131s\u0131tlamas\u0131<\/strong>: <code>context.xml<\/code> dosyalar\u0131ndaki <code>RemoteAddrValve<\/code> ayarlar\u0131n\u0131 kontrol edin. Kendi IP adresinizin listede oldu\u011fundan veya k\u0131s\u0131tlaman\u0131n ge\u00e7ici olarak kald\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>Tomcat Yeniden Ba\u015flat\u0131ld\u0131 m\u0131?<\/strong>: <code>tomcat-users.xml<\/code> ve <code>context.xml<\/code> de\u011fi\u015fikliklerinden sonra Tomcat&#8217;i yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<h4>\u0130zin Sorunlar\u0131<\/h4>\n<p>*   Tomcat&#8217;in \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131 <code>tomcat<\/code> kullan\u0131c\u0131s\u0131n\u0131n <code>\/opt\/tomcat<\/code> dizinindeki t\u00fcm dosyalara ve alt dizinlere okuma, yazma ve y\u00fcr\u00fctme izinlerine sahip oldu\u011fundan emin olun (<code>sudo chown -R tomcat:tomcat \/opt\/tomcat<\/code>). \u00d6zellikle <code>bin<\/code> dizinindeki <code>.sh<\/code> betiklerinin y\u00fcr\u00fctme izinleri olmal\u0131d\u0131r (<code>sudo chmod -R u+x \/opt\/tomcat\/latest\/bin<\/code>).<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, Ubuntu 20.04 LTS \u00fczerine Apache Tomcat 10&#8217;u ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frendiniz. Sistem g\u00fcncellemesinden ba\u015flayarak Java kurulumu, g\u00fcvenli bir <code>tomcat<\/code> kullan\u0131c\u0131s\u0131 olu\u015fturma, Tomcat&#8217;i indirme ve kurma, Systemd servisi olarak yap\u0131land\u0131rma, g\u00fcvenlik duvar\u0131 ayarlar\u0131 ve web y\u00f6netim aray\u00fcz\u00fcn\u00fc yap\u0131land\u0131rma gibi t\u00fcm kritik ad\u0131mlar\u0131 ele ald\u0131k. Ayr\u0131ca, bellek ayarlar\u0131, HTTPS yap\u0131land\u0131rmas\u0131, ters proxy kullan\u0131m\u0131 ve g\u00fcvenlik ipu\u00e7lar\u0131 gibi ek yap\u0131land\u0131rmalar ve en iyi uygulamalar hakk\u0131nda da bilgi edindiniz.<\/p>\n<p>Art\u0131k Java tabanl\u0131 web uygulamalar\u0131n\u0131z\u0131 da\u011f\u0131tabilece\u011finiz ve y\u00f6netebilece\u011finiz g\u00fcvenli ve kararl\u0131 bir Apache Tomcat ortam\u0131na sahipsiniz. Tomcat, geli\u015ftiricilere ve sistem y\u00f6neticilerine g\u00fc\u00e7l\u00fc bir esneklik ve kontrol sunar. Uygulamalar\u0131n\u0131z\u0131 da\u011f\u0131tmaya ba\u015flamadan \u00f6nce, \u00fcretim ortamlar\u0131 i\u00e7in \u00f6nerilen g\u00fcvenlik ve performans optimizasyonlar\u0131n\u0131 uygulad\u0131\u011f\u0131n\u0131zdan emin olun. Bu kurulum, web uygulamalar\u0131n\u0131z i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber\nApache Tomcat, Java tabanl\u0131 web uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in yayg\u0131n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-34478","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber Apache Tomcat, Java tabanl\u0131 web uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in yayg\u0131n\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-17T02:40:55+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-11-17T02:40:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/\"},\"wordCount\":3359,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/\",\"name\":\"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-17T02:40:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber","og_description":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber Apache Tomcat, Java tabanl\u0131 web uygulamalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in yayg\u0131n","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-17T02:40:55+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber","datePublished":"2025-11-17T02:40:55+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/"},"wordCount":3359,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/","name":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-17T02:40:55+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-20-04-uzerine-apache-tomcat-10-kurulumu-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 20.04 \u00dczerine Apache Tomcat 10 Kurulumu: Kapsaml\u0131 Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34478","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34478"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34478\/revisions"}],"predecessor-version":[{"id":34479,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34478\/revisions\/34479"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}