آنچه در این مقاله میخوانید
آموزش نصب Apache Tomcat در اوبونتو ۲۴.۰۴
۴ بهمن ۱۴۰۴
آپاچی تامکت (Apache Tomcat) یک وبسرور آزاد و یک کانتینر سِرولت است که توسط بنیاد نرم افزار Apache برای برنامههای جاوا طراحی شده است. اگرچه به اندازه وب سرورهای Apache2 یا Nginx HTTP محبوب نیست ولی Tomcat هنوز برای برخی پروژهها کابردی است. Tomcat موقع بارگذاری صفحات وب از جمله کدگذاری صفحات جاوا، بهترین عملکرد را دارد.
در این مقاله قصد داریم، نصب و پیکربندی Tomcat روی سرور مجازی اوبونتو را به شما آموزش دهیم، اگر شما نیز میخواهید سایتتان بهسریعترین شکل ممکن بارگذاری شود، تا پایان همراه ما باشید.
در ادامه بخوانید:
- پیشنیازهای نصب Apache Tomcat در اوبونتو
- مرحله اول: نصب Tomcat
- مرحله دوم: پیکربندی کاربران admin
- مرحله سوم: ساخت یک سرویس systemd
- مرحله چهارم: دسترسی به رابط کاربری وب
- جمعبندی
- سوالات متداول
پیشنیازهای نصب Apache Tomcat در اوبونتو
برای درک بهتر این آموزش، باید یک سرور مجازی Ubuntu با یک کاربر غیر روت (non-root) دارای دسترسی sudo و یک فایروال (Firewall) فعال داشته باشید. اگر هنوز این پیشنیازها را آماده نکردهاید، میتوانید راهنمای راهاندازی اولیه سرور مجازی با اوبونتو را مطالعه کنید.

مرحله اول: نصب Tomcat
برای راهاندازی Tomcat روی سرور مجازی اوبونتو، ابتدا باید آخرین نسخه را دانلود کرده و یک کاربر جداگانه با دسترسیهای مناسب برای اجرا بسازید. علاوه براین باید برنامه جاوا را نیز نصب کنید.
حالا برای امنیت بیشتر، بهتر است تامکت را تحت یک کاربر مجزا و بدون دسترسیهای root اجرا کنید.
برای اینکار دستور زیر را وارد کنید تا یک کاربر به نام tomcat بسازید:
sudo useradd -m -d /opt/tomcat -U -s /bin/false tomcat
سپس با تنظیم /bin/false به عنوان شل پیشفرض کاربر، مطمئن میشوید که ورود به سیستم با حساب کاربری tomcat وجود نداشته باشد.
حالا وقت آن است که JDK را نصب کنید، دستور زیر را برای آپدیت پکیجها وارد کنید:
sudo apt update
اکنون با دستور زیر JDK را نصب کنید:
sudo apt install default-jdk
برای ادامه نصب کلید y را بزنید، پس از اتمام نصب برای بررسی نسخه جاوا، دستور زیر را وارد کنید:
java -version
خروجی باید مشابه این باشد:
openjdk version "11.0.14" 2022-01-18
OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing)
پس از آن، برای نصب Tomcat، باید آخرین نسخه Core Linux build را از Apache Tomcat دانلود کنید. فایل مورد نظر باید با پسوند .tar.gz باشد.
اول از همه به دایرکتوری /tmp بروید:
cd /tmp
برای دانلود فایل فشرده با استفاده از wget، دستور زیر را وارد کنید:
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.20/bin/apache-tomcat-10.0.20.tar.gz
دستور wget برای دانلود منابع از اینترنت استفاده میشود. بعد از اینکه فایل فشرده را دانلود کردید، برای استخراج آن، دستور زیر را اجرا کنید:
sudo tar xzvf apache-tomcat-10*tar.gz -C /opt/tomcat --strip-components=1
از آنجایی که قبلا کاربر tomcat را ایجاد کردید، حالا میتوانید مالکیت فایلهای نصب شده را به tomcat بدهید. برای اینکار، دستور زیر را وارد کنید:
sudo chown -R tomcat:tomcat /opt/tomcat/
sudo chmod -R u+x /opt/tomcat/bin
هر دو دستور، تنظیمات نصب Tomcat را بهروزرسانی میکنند.
در این مرحله JDK و Tomcat را نصب کردید، در مرحله بعدی کاربران Tomcat را پیکربندی خواهیم کرد.
با سرور اوبونتو لیارا، سرور خود را با هزینه بهصرفه و بالاترین کارایی مدیریت کنید.
✅ استقرار سریع ✅ منابع بهینه ✅ امنیت پیشرفته
خرید سرور مجازی اوبونتو ساعتی لیارا
مرحله دوم: پیکربندی کاربران admin
حالا که Tomcat را نصب کردید، باید دسترسی به پنلهای مدیریتی مانند Manager App و Host Manager را فعال کنید. بهطور پیشفرض Tomcat، این صفحات را فقط برای IPهای لوکال باز میکند، و هیچ کاربری برای آن تعریف نشده است.
اگر بخواهید از راه دور به این پنلها متصل شوید، باید هم کاربر با دسترسی مدیریتی تعریف کنید و هم محدودیت IP را بردارید.
برای اینکار، باید فایل تنظیمات کاربرها به نام tomcat-users.xml را ویرایش کنید:
sudo nano /opt/tomcat/conf/tomcat-users.xml
پس از آن، کدهای زیر را قبل از تگ پایانی </tomcat-users> به فایل اضافه کنید:
<role rolename="manager-gui" />
<user username="manager" password="manager_password" roles="manager-gui" />
<role rolename="admin-gui" />
<user username="admin" password="admin_password" roles="manager-gui,admin-gui" />
در کد بالا، پسورد پیشفرض هایلایت شده را با پسورد قوی خودتان جایگزین کنید. پس از آن فایل را ذخیره کرده و ببندید.
در این مرحله، دو نقش با نامهای manager-gui و admin-gui تعریف میشوند که بهترتیب امکان دسترسی به صفحات Manager و Host Manager را فراهم میکنند. همچنین، دو کاربر با نامهای manager و admin ایجاد میشوند و نقشهای مرتبط به آنها اختصاص داده میشود.
بهطور پیشفرض، Tomcat دسترسی به این صفحات را فقط از طریق خود سرور (localhost) مجاز میداند. برای اینکه بتوانید با کاربرانی که تعریف کردهاید از سایر سیستمها به این صفحات دسترسی داشته باشید، باید تنظیمات مربوط به این صفحات را ویرایش کرده و محدودیت IP را حذف کنید.
برای باز کردن دسترسی به صفحه Manage، رفته و فایل پیکربندیاش را باز کرده و آن را ویرایش کنید:
sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml
تعریف Valve را همانطور که در کد زیر میبینید، کامنت کنید:
...
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.Csr>
</Context>
فایل را ذخیره کنید، پس از آن، همین کار را برای Host Manager هم انجام دهید:
sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
در صورتی که اینکارها را انجام دادید، دو کاربر با نامهای manager و admin را تعریف کردید که قرار است از آنها برای دسترسی به بخشهای مدیریتی استفاده کنید. در مرحله بعد باید یک سرویس systemd برای Tomcat ایجاد کنید.
اگر بهدنبال تفاوتهای وبسرور Apache و NGINX؛ هستید، مقاله زیر را بخوانید.
مقایسه وبسرور Apache و NGINX
مرحله سوم: ساخت یک سرویس systemd
سرویسی که در این مرحله قرار است ایجاد کنیم، Tomcat را بهطور خودکار و در پسزمینه اجرا میکند. این سرویس همچنین در صورت بروز خطا یا شکست، Tomcat را مجددا راهاندازی میکند.
به این علت که تامکت یک برنامه جاوا است و برای اجرا به محیط runtime جاوا نیاز دارد که قبلا با نصب JDK در مرحله اول این شرایط را فراهم کردیم.
قبل از اینکه این سرویس را بسازیم، باید آدرس محل نصب جاوا را با دستور زیر پیدا کنید:
sudo update-java-alternatives -l
مسیر مربوطه در خروجی نمایش داده میشود:
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
مسیر نصب جاوا را یادداشت کنید، موقع تعریف سرویس به این مسیر نیاز داریم.
حالا باید سرویس Tomcat را در فایلی بهنام tomcat.service nv در مسیر /etc/systemd/system ذخیره کنید. برای ویرایش این فایل، دستور زیر را اجرا کنید:
sudo nano /etc/systemd/system/tomcat.service
خطوط زیر را به فایل اضافه کنید:
[Unit]
Description=Tomcat
After=network.target
[Service]
Type=forking
User=tomcat
Group=tomcat
Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom"
Environment="CATALINA_BASE=/opt/tomcat"
Environment="CATALINA_HOME=/opt/tomcat"
Environment="CATALINA_PID=/opt/tomcat/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
اگر مسیر JAVA_HOME که در فایل نمایش داده شده با مسیری که قبلاً یادداشت کردید متفاوت بود، مقدار هایلایتشده را به مسیر صحیح تغییر دهید.
در اینجا، سرویس را طوری تعریف میکنیم که Tomcat با اجرای اسکریپتهای startup و shutdown که خودش فراهم میکند، اجرا شود. همچنین، چند متغیر محیطی تنظیم میکنید تا هوم دایرکتوری (همانطور که قبلاً گفتیم /opt/tomcat است) را تعریف کنید.
مقدار حافظهای که ماشین مجازی جاوا میتواند تخصیص بدهد را در CATALINA_OPTS محدود میکنید.
علاوه براین در صورتی که مشکلی وجود داشت، سرویس Tomcat بهصورت خودکار راهاندازی مجدد میشود.
وقتی کار تغییرات فایل تمام شد، آنرا ذخیره کرده و ببندید.
حالا باید دیمونsystemd را با دستور زیر reload کنید تا سرویس جدید شناسایی شود:
sudo systemctl daemon-reload
اکنون میتوانید سرویس Tomcat را با وارد کردن دستور زیر راهاندازی کنید:
sudo systemctl start tomcat
پس از آن، وضعیت سرویس را بررسی کنید تا مطمئن شوید که با موفقیت شروع شده است:
sudo systemctl status tomcat
خروجی دریافتی:
● tomcat.service - Tomcat
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2022-03-11 14:37:10 UTC; 2s ago
Process: 4845 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 4860 (java)
Tasks: 15 (limit: 1132)
Memory: 90.1M
CGroup: /system.slice/tomcat.service
└─4860 /usr/lib/jvm/java-1.11.0-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties ...
در آخر برای خروج از دستور، کلید q را بزنید.
برای فعال کردن شروع خودکار Tomcat با سرور، دستور زیر را وارد کنید:
sudo systemctl enable tomcat
در این مرحله، محل نصب جاوا را شناسایی کردید و سرورتان را برای اجرای Tomcat در پس زمینه فعال کردید. در بخش بعد، از طریق مرورگر به Tomcat دسترسی خواهیم داشت.
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راهاندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه بهصرفه
خرید سرور مجازی دبیان
مرحله چهارم: دسترسی به رابط کاربری وب
از آنجا که سرویس Tomcat در حال اجرا است، میتوانید فایروال را طوری تنظیم کنید که به Tomcat اجازه اتصال بدهد. با انجام اینکار، به رابط وب Tomcat دسترسی پیدا میکنید.
Tomcat از پورت 8080 برای دریافت درخواستهای HTTP استفاده میکند. برای اینکه ترافیک به این پورت اجازه ورود پیدا کند، دستور زیر را اجرا کنید:
sudo ufw allow 8080
حالا میتوانید از طریق مرورگر به Tomcat دسترسی داشته باشید. کافی است وارد آدرس IP سرورتان شوید:
http://your_server_ip:8080
با وارد کردن آدرس، صفحه خوشآمدگویی پیشفرض Tomcat را میبینید:

حالا که تایید کردید که سرویس Tomcat درست کار میکند. روی دکمه Manager App که در سمت راست صفحه است کلیک کنید، از شما میخواهد تا اطلاعات حساب کاربری که در مرحله قبل تعریف کردید را وارد کنید.
بعد از وارد کردن اطلاعات، باید صفحهای مشابه این را ببینید:

مدیر برنامه وب (Web Application Manager) برای مدیریت برنامههای جاوای شما استفاده میشود، از اینجا میتوانید برنامهها را شروع کنید، متوقف کنید، بارگذاری کنید، استقرار دهید و حتی حذف کنید.
حالا روی دکمه Host Manager که در صفحه اصلی (تصویر اول) است کلیک کنید تا وارد آن شوید:

در نهایت، اینجا میتوانید هاستهای مجازی را اضافه کنید تا برنامههایتان را اجرا کنید. فقط دقت کنید که این صفحه فقط برای کاربرانی که نقش admin-gui را دارند قابل دسترس است و کاربرانی که نقش manager دارند نمیتوانند به این صفحه دسترسی داشته باشند.
جمعبندی
در این آموزش از لیارا، شما Tomcatرا روی سرور مجازی اوبونتو نصب کرده و دسترسیهای مدیریتی را تنظیم کردید. با این کار، قادر به استقرار برنامههای جاوا هستید. برای افزایش امنیت، پیشنهاد میکنیم ترافیک Tomcat را با نصب یک گواهی TLS رمزگذاری کنید و دامنهای برای سرور اضافه کنید تا اطلاعات حساس از جمله رمزعبورها در برابر شنود محافظت شوند.
برای آشنایی کامل با نحوه راهاندازی Docker Compose از طریق Ansible در اوبونتو، مقاله زیر را از دست ندهید.
راهاندازی Docker Compose از طریق Ansible
سوالات متداول
Tomcat یک web server است یا یک سرور برنامه؟
تامکت، یک web server و کانتینر سرولت عمل میکند، اما میتوانید از آن به عنوان یک سرور برنامه نیز استفاده کنید.
مزیت آپاچی تامکت چیست؟
تامکت، که با نام آپاچی تامکت نیز شناخته میشود، یک وبسرور منبع باز و رایگان است که نصب آن آسان است. این وبسرور با عملکرد سبک و پشتیبانی عالی از سرورهای جاوا و JSP، محیطی مناسب برای اجرای برنامههای وب جاوا فراهم میکند.
چگونه میتوانم تامکت رابهطور خودکار با سیستم راهاندازی کنم؟
با استفاده از systemd میتوانید سرویس تامکت را راهاندازی کنید تا بهطور خودکار در هنگام بوت شدن سیستم اجرا شود.