{"id":16292,"date":"2025-10-24T18:33:24","date_gmt":"2025-10-24T13:03:24","guid":{"rendered":"https:\/\/www.skynats.com\/?p=16292"},"modified":"2025-10-24T18:33:29","modified_gmt":"2025-10-24T13:03:29","slug":"how-to-install-apache-tomcat-10-on-almalinux","status":"publish","type":"post","link":"https:\/\/www.skynats.com\/blog\/how-to-install-apache-tomcat-10-on-almalinux\/","title":{"rendered":"How to Install Apache Tomcat 10 on AlmaLinux"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Apache Tomcat 10 is an open-source Java servlet container developed by the Apache Software Foundation. It provides a powerful and reliable environment to deploy and run Java-based web applications.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this guide, we\u2019ll walk through installing and configuring Apache Tomcat 10 on AlmaLinux, a stable and secure RHEL-based distribution widely used for enterprise servers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The installation process on AlmaLinux is quite similar to that on <a href=\"https:\/\/www.skynats.com\/blog\/how-to-install-apache-tomcat-10-0-20-on-ubuntu\/\">Ubuntu<\/a>, with a few differences in package management and service configuration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-small-font-size\" id=\"h-steps-to-install-and-configure-apache-tomcat-10-on-almalinux\">Steps to Install and Configure Apache Tomcat 10 on AlmaLinux<\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-1-update-your-system\"><strong>Step 1<\/strong>: Update Your System<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First, update all system packages to ensure you\u2019re working with the latest versions.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#dnf update<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-2-install-java-jdk\"><strong>Step 2<\/strong>: Install Java (JDK)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tomcat requires <a href=\"https:\/\/www.java.com\/\" target=\"_blank\" rel=\"noopener\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-secondary-color\">Java<\/mark><\/a> to run. Install the default OpenJDK 17 package (recommended for Tomcat 10):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#dnf install java-17-openjdk java-17-openjdk-devel<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verify Java installation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#java -version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see an output similar to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#openjdk version \"17.x.x\" 2024-xx-xx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-3-create-a-tomcat-user-and-group\"><strong>Step 3<\/strong>: Create a Tomcat User and Group<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Create a dedicated user and group for running Tomcat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#groupadd tomcat\n#useradd -s \/bin\/false -g tomcat -d \/opt\/tomcat tomcat<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-4-download-and-extract-apache-tomcat-10\"><strong>Step 4<\/strong>: Download and Extract Apache Tomcat 10<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate to \/opt and download the latest ApacheTomcat 10 version:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#cd \/opt\n#wget https:\/\/archive.apache.org\/dist\/tomcat\/tomcat-10\/v10.1.48\/bin\/apache-tomcat-10.1.48.tar.gz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Extract it into \/opt\/tomcat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#mkdir \/opt\/tomcat\n#tar -xvzf apache-tomcat-10.1.48.tar.gz -C \/opt\/tomcat --strip-components=1<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then remove the downloaded archive:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#rm -rf apache-tomcat-10.1.48.tar.gz<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-5-set-permissions\"><strong>Step 5<\/strong>: Set Permissions<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Assign the correct ownership and execution permissions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#chown -R tomcat:tomcat \/opt\/tomcat\n#chmod -R u+x \/opt\/tomcat\/bin<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-6-configure-tomcat-users\"><strong>Step 6<\/strong>: Configure Tomcat Users<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Edit the Tomcat user configuration file to add roles and a management user:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#vim \/opt\/tomcat\/conf\/tomcat-users.xml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add the following between &lt;tomcat-users> tags:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;role rolename=\"manager-gui\" \/>\n&lt;user username=\"manager\" password=\"manager_password\" roles=\"manager-gui\" \/>\n\n&lt;role rolename=\"admin-gui\" \/>\n&lt;user username=\"admin\" password=\"admin_password\" roles=\"manager-gui,admin-gui\" \/><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Next, allow remote access to the Tomcat Manager and Host Manager (optional but useful for testing):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#vim \/opt\/tomcat\/webapps\/manager\/META-INF\/context.xml\n#vim \/opt\/tomcat\/webapps\/host-manager\/META-INF\/context.xml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Comment out or edit the following line in both files:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&lt;Valve className=&#8221;org.apache.catalina.valves.RemoteAddrValve&#8221;<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong>\u00a0allow=&#8221;127\\.\\d+\\.\\d+\\.\\d+|::1&#8243;\/><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Change to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!--  &lt;Valve className=\"org.apache.catalina.valves.RemoteCIDRValve\"\nallow=\"127.0.0.0\/8,::1\/128\" \/> --><\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-7-create-a-systemd-service-for-tomcat\"><strong>Step 7<\/strong>: Create a Systemd Service for Tomcat<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Create a new systemd service file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#vim \/etc\/systemd\/system\/tomcat.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Paste the following configuration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=Apache Tomcat Web Application Container\nAfter=network.target\n\n&#91;Service]\nType=forking\n\nUser=tomcat\nGroup=tomcat\n\nEnvironment=\"JAVA_HOME=\/usr\/lib\/jvm\/java-17-openjdk\"\nEnvironment=\"CATALINA_PID=\/opt\/tomcat\/temp\/tomcat.pid\"\nEnvironment=\"CATALINA_HOME=\/opt\/tomcat\"\nEnvironment=\"CATALINA_BASE=\/opt\/tomcat\"\nEnvironment=\"CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC\"\nEnvironment=\"JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:\/dev\/.\/urandom\"\n\nExecStart=\/opt\/tomcat\/bin\/startup.sh\nExecStop=\/opt\/tomcat\/bin\/shutdown.sh\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Save and exit the file.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then reload the daemon and enable Tomcat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#systemctl daemon-reload\n#systemctl enable tomcat\n#systemctl start tomcat<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong> If firewalld is enabled, open port 8080 (the default Tomcat port):<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-small-font-size\" id=\"h-step-8-access-tomcat-web-interface\"><strong>Step 8<\/strong>: Access Tomcat Web Interface<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now open your browser and visit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>http:\/\/&lt;your-server-ip>:8080<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see the Apache Tomcat 10 welcome page.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Login to Manager App or Host Manager using the credentials you created earlier.<\/p>\n\n\n\n<h4 class=\"wp-block-heading has-small-font-size\" id=\"h-conclusion\">Conclusion<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">This is how you can install and configure Apache Tomcat 10 on AlmaLinux.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your Java web server is now ready to host and manage applications efficiently. From here, you can deploy your .war files to \/opt\/tomcat\/webapps\/ or set up automated deployments via CI\/CD tools.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Need expert help setting up or managing Apache Tomcat 10 on your server? Skynats offers 24\/7 <a href=\"https:\/\/www.skynats.com\/linux-server-management\/\">Linux Server Management Services<\/a> to ensure smooth installation, configuration, and performance optimization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apache Tomcat 10 is an open-source Java servlet container developed by the Apache Software Foundation. It provides a powerful and reliable environment to deploy and run Java-based web applications. In this guide, we\u2019ll walk through installing and configuring Apache Tomcat 10 on AlmaLinux, a stable and secure RHEL-based distribution widely used for enterprise servers. The [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[1148,1147,1010],"class_list":["post-16292","post","type-post","status-publish","format-standard","hentry","category-blog","tag-almalinux","tag-apache-tomcat-10","tag-linux-server-management-services"],"_links":{"self":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts\/16292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/comments?post=16292"}],"version-history":[{"count":2,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts\/16292\/revisions"}],"predecessor-version":[{"id":16295,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/posts\/16292\/revisions\/16295"}],"wp:attachment":[{"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/media?parent=16292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/categories?post=16292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skynats.com\/blog\/wp-json\/wp\/v2\/tags?post=16292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}