Java programlama dili ile geliştirilen web uygulamalarını çalıştırmak için kullanabileceğiniz Apache Tomcat sunucusunu Centos 7’ye kurmak oldukça kolay. Bu makalemizde manual olarak Apache Tomcat sunucunu kurarak nasıl 80’inci porttan çalıştıracağınızı anlatacağız.

Bu makale yazıldığında yum paket yöneticisi varsayılan olarak Tomcat 7 ve Java 1.8 versiyonlarını kurmaktadır.

Sunucuda update gerektiren paketleri güncellemek için kurulumdan önce aşağıdaki update komutunu çalıştırmanızı öneririz.

yum -y update

Apache Tomcat’i kurmak için aşağıdaki komutu çalıştırın.

yum -y install tomcat

Opsiyonel olarak Apache Tomcat’in yönetimsel araçlarını kurmak isterseniz  aşağıdaki komutu çalıştırın.

yum -y install tomcat-webapps tomcat-admin-webapps

Kurulum tamamlandıktan sonra Tomcat’in Java çalıştırırken hangi sınırlamalar ile çalıştıracağını belirten direktifimizi eklememiz gerekiyor. Aşağıdaki tomcat.conf dosaysını herhang bir text editor ile açın.

vi /usr/share/tomcat/conf/tomcat.conf

JAVA_OPTS satırını bulup aşağıdaki şekilde güncelleyin.

JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Xmx512m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC"

Tomcat’in admin kullanıcısının parolasını belirlemek için tomcat-users.xml dosyasını açın

vi /usr/share/tomcat/conf/tomcat-users.xml

user düğümünü aşağıdaki şekilde ayarlayın.

<tomcat-users> 
 <user username="admin" password="çokGüçlüBirParola" roles="manager-gui,admin-gui"/> 
</tomcat-users>

Apache Tomcat’in shutdown özelliğin için güçlü bir anahtar belirlememiz güvenlik için önemli. Aşağıdaki server.xml dosyasını açarak gerekli tanımlamaları yapın.

vi /usr/share/tomcat/conf/server.xml

Varsayılan olarak gelen shutdown anahtarını

<Server port="8005" shutdown="SHUTDOWN">

güçlü bir anahtar ile değiştirin.

<Server port="8005" shutdown="kCTA4D@#EJI5xG4VQSJ@I">

Apache Tomcat sunucusunun versiyonunu da gizlememiz ayrı bir güvenlik önlemidir. Yine server.xml dosyası içinde aşağıdaki satırı bulun.

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>

ve aşağıdaki şekilde değiştirin.

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="Apache" />

Konfigürasyon ile yapacaklarımız bu şekilde daha fazla bilgi için https://www.owasp.org/index.php/Securing_tomcat

Tomcat’in sistem yeniden başlatıldığında çalışması için aşağıdaki komutu çalıştırın.

systemctl enable tomcat

Tomcat’e 8080 portundan herkesin erişmesi için firewall’a aşağıdaki kuralı girin.

firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload

Authbind

Apache Tomcat herhangi bir web server olmadan tek başına çalışacak şekilde yapılandırılabilir lakin Tomcat, direkt root kullanıcısı ile çalışmadığından SELinux’ün bazı kurallarına takılarak 80 portta çalışması doğal yollarla mümkün olmuyor. Bunun için authbind aracını kullanmamız gerekiyor.

Tomcat’i 80 porttan çalıştırmanın bir kaç yolu daha var Apache web sunucu için mod_jk, Nginx ile standart bir reverse-proxy şeklinde veya ipstables kullanarak port redirect yöntemi ile 80 portuna gelen anonim isteği 8080 portuna göndermek gibi yollar da geçerlidir. Biz burada herhangi başka bir sunucu olmadan veya sisteme en az yükü getirecek şekilde bir tasarım yapalım istedik.

https://github.com/tootedom/authbind-centos-rpm adresinden authbind’in Centos 7 paketini indirebilirsiniz. İndirme işlemi bittikten sonra RPM’i aşağıdaki komut ile sisteme kurun

rpm -Uvh authbind-2.1.1-0.1.x86_64.rpm

Kurulum tamamlandıkta sonra aşağıdaki konfigürasyon niteliğindeki komutları çalıştırın.

sudo touch /etc/authbind/byport/80
 sudo chmod 500 /etc/authbind/byport/80
 sudo chown tomcat /etc/authbind/byport/80
 sudo touch /etc/authbind/byport/443
 sudo chmod 500 /etc/authbind/byport/443
 sudo chown tomcat /etc/authbind/byport/443

Bu aşamadan sonra server.xml’deki 8080 portunda çalışan Connector’ü 80 portuna alabiliriz.

vi /usr/share/tomcat/conf/server.xml

dosyasını açın ve aşağıdaki düzenlemeyi yapın.

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" server="Apache" />

Ardından tomcat’in servis direktif dosyasındaki ExecStart değerini authbind’de çalışacak şekilde yapılandırmamız gerkeiyor. Aşağıcaki komut ile tomcat.service dosyasını açın.

vi /etc/systemd/system/multi-user.target.wants/tomcat.service

ExecStart satırını bulup # ile yorum satırı haline getirin.

#ExecStart=/usr/libexec/tomcat/server start

ve arından aşağıdaki satırı ekleyin.

ExecStart=/usr/bin/authbind -–deep "/usr/libexec/tomcat/server" start

artık Tomcat çalıştığında authbind 80 portundan aktif edecektir.

Servis dosyasında değişiklik yaptığımız için reload yapmamız gerekiyor. Aşağıdaki komutu çalıştırarak bunu gerçekleştirebilirsiniz.

systemctl daemon-reload

ve değişikliklerin aktif olması içişn Tomcat servisini restart edelim.

systemctl restart tomcat

Dışarıdan 80 portuna erişmek için ise yine firewall kuralımızı girip aktif edelim.

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

Bu ayarladan sonra Tomcat 80 portu üzerinden çalışacaktır.

Vhosts

Tomcat üzerinde birden fazla domain host edebilirsiniz. Bunun için server.xml dosyasına ufak bir XML düğümü girmeniz yeterli.

vi /usr/share/tomcat/conf/server.xml

dosyasını açtıktan sonra <Engine/> düğümünün en altına <Host/> düğümünü ekleyin.

<Host name="domain.com" appBase="domain.com" unpackWARs="true" autoDeploy="true">
<Alias>www.domain.com</Alias>
</Host>

Bu işlem artından ayarların aktif olması için aşağıdaki komut ile servisi yeniden başlatmanız yeterli.

systemctl restart tomcat

 

Yazar