Apache Tomcat، یک پیاده‌سازی منبع باز از تکنولوژی‌های Java Servlet ،JavaServer Pages ،Java Expression Language و Java WebSocket است که به عنوان یکی از رایج‌ترین برنامه‌ها و وب سرورها در جهان امروز بکار می‌رود. استفاده از Tomcat ساده است و دارای یک اکوسیستم قوی از افزونه‌ها است.

در این آموزش، نحوه نصب Tomcat 9.0 بر روی CentOS 8 شرح داده شده است.

 

 

این مطلب نیز ممکن است برای شما مفید باشد: تنظیم متغیرهای محیطی جاوا در لینوکس

 

نصب جاوا

Tomcat 9 به Java SE نسخه 8 یا نسخه جدیدتر نیاز دارد. در اینجا OpenJDK 11 (پیاده‌سازی منبع باز پلتفرم جاوا) را نصب خواهیم کرد.

به منظور نصب جاوا دستور زیر را به عنوان کاربر root یا کاربر با امتیازات sudo اجرا کنید:

sudo dnf install java-11-openjdk-devel

پس از اتمام نصب، با بررسی نسخه جاوا صحت نصب را تأیید نمایید:

java -version

خروجی دستور باید چیزی شبیه به زیر باشد:

output
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)

 

ایجاد کاربر سیستم

اجرای Tomcat تحت کاربر root یک خطر امنیتی است. به همین دلیل، در اینجا یک کاربر و گروه سیستم جدید با دایرکتوری اصلی /opt/tomcat ایجاد می‌کنیم که سرویس Tomcat را اجرا می‌نماید. بدین منظور کافیست دستور زیر را وارد کنید:

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

 

دانلود Tomcat

توزیع باینری Tomcat برای دانلود از صفحه دانلودهای Tomcat در دسترس است. در اینجا نسخه 9.0.30 نصب می‌شود، قبل از دنبال کردن مرحله بعدی، صفحه دانلود Tomcat 9 را بررسی نمایید تا جدیدترین نسخه را پیدا کنید.

فایل فشرده Tomcat را به صورت زیر با wget در پوشه /tmp دانلود نمایید:

wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp

پس از اتمام دانلود، فایل tar را در پوشه /opt/tomcat استخراج کنید:

sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/

Tomcat به طور منظم به روز می‌شود. به منظور کنترل بیشتر بر روی نسخه‌ها و به روز رسانی‌ها، با دستور زیر، یک لینک نمادین به نام latest ایجاد می‌نماییم که به دایرکتوری نصب Tomcat اشاره می‌کند:

sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

 

کاربر سیستمی که قبلا ایجاد شده است، باید به دایرکتوری نصب tomcat دسترسی داشته باشد. مالکیت دایرکتوری را با دستور زیر به کاربر و گروه tomcat تغییر دهید:

sudo chown -R tomcat: /opt/tomcat

با دستور زیر، اسکریپت‌های پوسته داخل پوشه bin را قابل اجرا نمایید:

sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

این اسکریپت‌ها برای راه‌اندازی و متوقف سازی tomcat استفاده می‌شوند.

 

این مطلب نیز ممکن است برای شما مفید باشد: ایجاد سرویس لینوکس با systemd

 

ایجاد یک فایل واحد Systemd

به‌جای راه‌اندازی و توقف دستی سرور Tomcat، بهتر است آن را به گونه‌ای تنظیم کنید که به‌عنوان یک سرویس اجرا شود. بدین منظور ویرایشگر متن خود را باز کرده و یک فایل tomcat.service در دایرکتوری /etc/systemd/system/ ایجاد نمایید:

sudo nano /etc/systemd/system/tomcat.service

سپس محتوای زیر را در آن قرار دهید:

             /etc/systemd/system/tomcat.service

[Unit]
Description=Tomcat 9 servlet container
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

[Install]
WantedBy=multi-user.target

فایل را ذخیره کرده و ببندید.

 

با اجرای دستور زیر، به systemd اطلاع دهید که یک فایل سرویس جدید وجود دارد:

sudo systemctl daemon-reload

سرویس Tomcat را با دستور زیر، فعال و راه‌اندازی کنید:

sudo systemctl enable --now tomcat

وضعیت سرویس را می توانید با استفاده از دستور زیر بررسی نمایید:

sudo systemctl status tomcat

خروجی باید نشان دهد که سرور Tomcat فعال و در حال اجرا است:

output
● tomcat.service - Tomcat 9 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-01-15 20:38:07 UTC; 30s ago
  Process: 3957 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
  ...

 

پیکربندی فایروال

اگر سرور شما توسط فایروال محافظت می‌شود و شما می‌خواهید از خارج از شبکه محلی به رابط tomcat دسترسی پیدا کنید، باید پورت 8080 را باز نمایید.

بدین منظور لازم از دستورات زیر استفاده کنید:

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

به طور معمول، هنگام اجرای Tomcat در یک محیط تولید، باید از متعادل کننده بار یا پروکسی معکوس استفاده کنید. این بهترین روش است برای اینکه اجازه دسترسی به پورت 8080 را تنها از شبکه داخلی خود بدهید.

 

این مطلب نیز ممکن است برای شما مفید باشد: نصب آپاچی tomcat 8 بر روی centos 7

 

پیکربندی رابط مدیریت وب tomcat

در این مرحله، باید بتوانید با یک مرورگر وب برروی پورت 8080 به tomcat دسترسی داشته باشید. در ابتدای کار، رابط مدیریت وب در دسترس نیست؛ زیرا ما هنوز کاربری ایجاد نکرده‌ایم. بنابراین باید قبل از هر کاری کاربر خود را تعریف نماییم.

کاربران و نقش‌های Tomcat در فایل tomcat-users.xml تعریف شده‌اند.

اگر آن فایل را باز کنید، متوجه خواهید شد که با خطوط کامنت شده و مثال‌هایی پر شده است که نحوه پیکربندی فایل را توضیح می‌دهد.

sudo nano /opt/tomcat/latest/conf/tomcat-users.xml

به منظور ایجاد یک کاربر جدید که می‌تواند به رابط وب tomcat (manager-gui و admin-gui) دسترسی داشته باشد، فایل را مطابق زیر ویرایش کنید. مطمئن شوید که نام کاربری و رمز عبور را به چیزی امن‌تر تغییر داده‌اید:

              /opt/tomcat/latest/conf/tomcat-users.xml

<tomcat-users>
<!--
    Comments
-->
   <role rolename="admin-gui"/>
   <role rolename="manager-gui"/>
   <user username="admin" password="admin_password" roles="admin-gui,manager-gui"/>
</tomcat-users>

 

به طور پیش فرض رابط مدیریت وب tomcat به گونه‌ای پیکربندی شده است که تنها اجازه دسترسی از میزبان محلی را می‌دهد.

اگر نیاز به دسترسی به رابط وب از هر جایی دارید، فایل‌های زیر را باز کرده و خطوط زیر را حذف و یا کامنت نمایید:

                  /opt/tomcat/latest/webapps/manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
                  /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >
<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>

لطفاً توجه داشته باشید، اجازه دسترسی از طرف همه جا توصیه نمی‌شود؛ زیرا این یک خطر امنیتی است.

 

اگر می‌خواهید تنها از یک IP خاص به رابط وب دسترسی داشته باشید، به جای کامنت کردن بلوک‌ها، IP عمومی خود را به لیست اضافه کنید.

فرض کنید IP عمومی شما 41.41.41.41 است و شما می‌خواهید تنها از آن IP دسترسی داشته باشید، کافیست به صورت زیر عمل نمایید:

              /opt/tomcat/latest/webapps/manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|41.41.41.41" />
</Context>
                    /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|41.41.41.41" />
</Context>

لیست آدرس‌های IP مجاز، لیستی است که با نوار عمودی | جدا شده است. شما می‌توانید آدرس‌های IP را به صورت جدا جدا اضافه کنید یا از regular expression استفاده نمایید.

پس از اتمام، سرویس Tomcat را مجدداً راه‌اندازی کنید تا تغییرات اعمال شوند:

sudo systemctl restart tomcat

 

این مطلب نیز ممکن است برای شما مفید باشد: ذخیره دائمی قوانین فایروال iptables در لینوکس

 

تست نصب

مرورگر خود را باز کرده و آدرس خود را بصورت http://<your_domain_or_IP_address>:8080 وارد نمایید.

پس از نصب موفقیت آمیز، صفحه‌ای مشابه تصویر زیر ظاهر می‌شود:

 

داشبورد مدیر برنامه وب tomcat به شما امکان می‌دهد برنامه‌های خود را استقرار، بازگشایی، راه‌اندازی، متوقف و بارگذاری مجدد کنید. این امکانات در آدرس http://<your_domain_or_IP_address>:8080/manager/html در دسترس است.

 

داشبورد مدیر میزبان مجازی Tomcat به شما امکان می‌دهد که میزبان مجازی Tomcat را ایجاد، حذف و مدیریت نمایید. این قابلیت در مسیر http://<your_domain_or_IP_address>:8080/host-manager/html در دسترس است.

 

 

منبع:

linuxize