Apache ve Tomcat arasındaki fark ve neden birlikte çalışmaları gerektiği.


Yayın Tarihi:1 Ocak 2021.



INFOMARTION > Apache ve Tomcat arasındaki fark ve neden birlikte çalışmaları gerektiği.

Genel bakış.

Apache ve Tomcat arasındaki farkları ve neden bağlanmaları gerektiğini anlatmak istiyorum, ki yeni başladığımda büyüklerime sorduğum ve internette araştırdığım halde tatmin edici bir cevap bulamamıştım. Bazen Apache'nin bir web sunucusu (statik işlem yapar) ve Tomcat'in bir servlet konteyneri (dinamik işlem yapar) olduğu söylenir (yeni olduğumda kıdemli bir meslektaşım tarafından bana söylendiği gibi), ancak dikkatlice incelendiğinde Tomcat'in web sunucusu işlevlerine de sahip olduğu görülür. O zaman tek ihtiyacınız olanın Tomcat olduğunu düşünürsünüz. Bu da sonunda Apache ve Tomcat'in neden birbirine bağlanması gerektiği sorusuna geri götürür. Bunu yapanlar için Apache ve Tomcat arasındaki farkları ve neden birlikte çalışmaları gerektiğini açıklamak istiyorum.

İçindekiler

  1. Apache ve Tomcat'i bağlama nedenleri
  2. Apache Özellikleri
  3. Tomcat özellikleri
  4. dikkate almak
  5. özet

1. Apache ve Tomcat'i bağlama nedenleri

Çıkarılacak ilk sonuç, rollerin uzmanlaşmasındaki farklılıktır. Apache web sunucusu işlevlerinde uzmanlaşırken, Tomcat Java kullanarak dinamik işleme konusunda uzmanlaşmıştır.

Uzmanlık farkı olduğunu yazmamın nedeni, Tomcat'in kendisinin de bir web sunucusu olarak işlevlere sahip olmasıdır. Bu biraz aşırı olabilir, ancak Apache ve Tomcat'in bağlantılı olduğu bir sistem varsa, sadece Apache ve sadece Tomcat kullanarak neredeyse aynı sistemi gerçekleştirmek imkansız değildir.

1-1. Uzmanlık alanındaki farklılıklar nelerdir?

Rol uzmanlaşmasındaki farklılıklar göz önüne alındığında, bunun anlaşılmasının zor olduğunu düşünüyoruz çünkü karşılaştırma aniden Apache ve Tomcat arasında yapılıyor. Tomcat ve DB sunucuları açısından düşünürseniz anlaması daha kolay olur. Bu kulağa aşırı gelebilir, ancak bir DB sunucusu kurmadan yalnızca Tomcat kullanarak bir uygulama oluşturmak mümkündür. Örneğin, kullanıcı bilgilerini xml veya özellik olarak yönetebilir ve bu bilgilere dayanarak oturum açma kimliğini doğrulayan bir uygulama oluşturabilirsiniz. Ancak gerçekte, genel web sistemlerine bakarsanız, çoğu sistem kullanıcı bilgilerini bir DB'de yönetir ve verileri Tomcat'ten DB sunucusuna yönlendirir. Nedenini düşünecek olursanız, bu şekilde uygulamaları daha verimli bir şekilde geliştirebilirsiniz.

Bazen insanlar Apache ve Tomcat arasındaki işbirliğine ilişkin "avantajlar" ve "dezavantajlar" açıklarlar, ancak bu avantajlar ve dezavantajlarla ilgili değildir. Tomcat ve DB sunucularını birbirine bağlamanın "avantajları" ve "dezavantajları" sorulduğunda, başlangıçta rollerin farklı olduğu yanıtını verirler. Aynı durum, başlangıçta farklı rollere sahip olan Apache ve Tomcat için de geçerlidir.

1-2. Apache nedir?

Rollerin farklı olduğundan bahsettikten sonra, şimdi Apache ve Tomcat'in rollerinin ne olduğunu açıklamak istiyorum.

Bir kez daha, Apache resmi olarak Apache HTTP Sunucusu olarak bilinir. Apache bir web sunucusudur, ancak özetle görevi istekleri analiz etmektir.

Bunlar özellikle şunlardır.

  • Belirli IP adresleri için filtreleme (isteklere izin verme/reddetme)
  • Belirli URL'ler için yönlendirme.
  • Belirli URL'lerin reddedilmesi
  • İletişimin SSL ile şifrelenmesi
  • Süreçlerin istek üzerine belirli sunuculara tahsis edilmesi

Yukarıdaki sadece bir örnektir ve daha fazla işlev vardır, ancak kısaca Apache'nin (web sunucusu) rolü, kullanıcılardan gelen isteklerin nasıl ele alınacağıdır.

Belirli bir talebe göre ne tür bir yanıt verileceğine karar vermek Tomcat'in görevidir. Yanlış anlaşılmaması gereken nokta, Apache'nin yanıtların oluşturulmasını yasaklamadığıdır. Tomcat'in bir DB sunucusu ile çalışması ve basit verileri (örneğin mesaj listeleri) Tomcat tarafında tutması gibi, Apache de basit yanıtlar olduğu sürece dinamik sayfalar uygulamakta sorun yaşamaz. Önemli olan, neyin en verimli şekilde ele alınabileceği ve düzgün bir şekilde yönetilebileceğidir.

1-3. Tomcat nedir?

Tomcat'in resmi adı 'Apache Tomcat'tir. Tomcat bir servlet konteyneridir, ancak rolünü kısaca açıklamak gerekirse, isteklere dayalı dinamik işlemlerden sorumludur.

Bunlar özellikle şunlardır.

  • Talep bilgilerine göre verileri kaydedin.
  • İstek bilgilerine göre dinamik sayfalar ve yanıtlar oluşturun.
  • İstek bilgilerine göre kullanıcıyı belirleyin ve her kullanıcı için farklı bir yanıt oluşturun.

Temel olarak, sabit olmayan sayfaları kullanıcıya döndürmek Tomcat'in görevidir.

Yanlış anlaşılmaması gereken bir diğer nokta da şudur: Bu, statik sayfaların (örneğin html) Tomcat'e yerleştirilmemesi gerektiği anlamına gelmez. Ekibin tasarım felsefesi tüm html'leri Tomcat tarafında yönetmekse, statik sayfaları Tomcat'e yerleştirmekte bir sorun yoktur. Bu durumda da kilit nokta, neyin en verimli şekilde ele alınabileceği ve düzgün bir şekilde yönetilebileceğidir.

2. Apache Özellikleri

Apache'nin bazı özelliklerini tanıtmak istiyorum. Apache bir dizi modül (işlemlerin paketlendiği dosyalar) sağlar. Modülü yükleyin ve işlevlerini kullanmak için gerekli yapılandırma değerlerini açıklayın. Hangi modüllerin mevcut olduğunu açıklamak istiyorum.

2-1. Talepleri eş zamanlı olarak işleme yeteneği.

"mpm_prefork_module" modülü ilgili modüldür. İşlevsellik neredeyse aynı olmasına rağmen "mpm_worker_module" ve "mpm_event_module" de vardır.

Değerleri aşağıdaki gibi ayarlayın.

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>

Bu şekilde tarif edildiğinde sunucu başlatıldığında aynı anda "5" işlem başlatılıp "5" işlem paralel olarak işlenebileceği gibi çok sayıda istek geldiğinde "250" adede kadar işlem paralel olarak işlenebilir.

2-2. İstek URL'sini yeniden yazma

'rewrite_module' modülü ilgili modüldür.

Değerleri aşağıdaki gibi ayarlayın.

<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Bu şekilde belirtilirse, http'de bir istek gelirse, kullanıcıya https'de tekrar istekte bulunması için geri dönülecektir.

2-3. IP adresine göre erişim kontrolü

Bu modülden biraz farklıdır, ancak IP adresine göre erişimi kontrol eder.

Aşağıdaki açıklama "1.0.16.0/20", "1.0.64.0/18" ve "1.1.64.0/18" dışındaki IP'lerden erişimi engelleyecektir.

<Directory />
    order deny,allow
    deny from all
    allow from 1.0.16.0/20
    allow from 1.0.64.0/18
    allow from 1.1.64.0/18
</Directory>

3. Tomcat özellikleri

Tomcat'in işlevselliğini açıklamak istiyorum.

3-1. Java kullanarak web sayfalarını dinamik olarak döndürebilme.

Tomcat'in uzmanlığı "Java kullanarak web sayfalarını dinamik olarak döndürme yeteneğinde" yatmaktadır. Genel olarak, tüm Java işlemlerini kendiniz oluşturmazsınız, ancak çeşitli kuruluşlar tarafından hazırlanan Java kütüphaneleri (Apache'deki modüller) ile birlikte kullanırsınız.

  • Kullanıcı istek parametrelerine göre dinamik olarak yanıtlar oluşturun.
  • Günlük dosyalarını belirli bir formatta çıktı olarak alın.
  • Excel dosyaları oluşturma ve düzenleme
  • Zip dosyasının bir parolası olup olmadığını belirleyin.

Yukarıda açıklananlar gibi karmaşık işlemler, sadece bir kütüphane ekleyerek ve kütüphaneyi çağırarak gerçekleştirilebilir. Tomcat'in rolü, bu karmaşık süreçlerin uygulanmasını kolaylaştırmaktır.

4. dikkate almak

Apache ve Tomcat arasındaki farkın "rol uzmanlaşması" olduğunu açıklamıştık, ancak hem Apache (Apache HTTP Sunucusu) hem de Tomcat (Apache Tomcat) aynı Apache Yazılım Vakfı tarafından oluşturulmuştur. Bunun nedeni Apache'nin C dilinde, Tomcat'in ise Java dilinde yazılmış olması olabilir, ki bunlar farklı dillerdir, ancak bunların bir araya getirilmemesinin nedeni farklı roller oynamaları olabilir."

Tomcat'in ana sayfası oldukça kapsamlıydı ve aynı zamanda bir web sunucusu olarak da işlev görüyordu.

http://tomcat.apache.org/

  • SSL/TLS (iletişimin şifrelenmesi)
  • SSI (HTML içine farklı HTML yerleştirme yeteneği)
  • Rewrite (URL yeniden yazma işlevi)

Apache yüksek performanslı bir web sunucusudur, ancak kullanılmayan birçok özelliği vardır, bu nedenle Apache Yazılım Vakfı Tomcat'in Apache olmadan bağımsız olarak çalışabilmesi için bunu yapmış olabilir. Ancak, ayrıntılı istek kontrolüne ihtiyacınız varsa Apache'yi dahil etmek yine de daha iyidir.

5. özet

Apache ve Tomcat arasındaki farklar ve neden birlikte çalışmaları gerektiği açıklanmaktadır.

Tomcat tam özellikli bir web sunucusu olduğu için bu sorunun cevabını anlamanın zor olduğunu düşündüm. Tomcat'in web sunucusu olarak işlevinin ana işlevi olmadığını (web sunucusu olarak uzmanlaşmadığını) akılda tutarak Apache ve Tomcat arasındaki işbirliği hakkında düşünmek iyidir.

Sonuna kadar izlediğiniz için teşekkür ederiz.