Как установить Apache Tomcat 10 на CentOS 8/7 | Rocky Linux 8
Apache Tomcat — это сервлет Java с открытым исходным кодом и контейнер страницы сервера Java. Это позволило разработчикам создавать и развертывать динамические приложения на основе Java. Сервлеты Java — это небольшие программы Java, определяющие, как сервер обрабатывает запросы и ответы. Разработчики пишут сервлеты, а Tomcat берет на себя всю работу по бэкэнду и маршрутизации. Apache Tomcat с открытым исходным кодом вносят разработчики со всего мира.
Особенности Apache Tomcat 10
Apache Tomcat 10 — это последняя версия, и приложения, работающие с версией 9 и более ранней, должны быть изменены, чтобы работать в версии 10. Некоторые из изменений, внесенных в версию 10, включают:
- Переработайте защиту от накладных расходов HTTP / 2, чтобы снизить вероятность ложных срабатываний.
- Обновление до компилятора Eclipse JDT 4.20.
- Исправить ошибки при компиляции JSP в предыдущем выпуске
Установка Apache Tomcat 10 на CentOS 8 | 7 и Rocky Linux 8
Для установки Apache Tomcat необходимо выполнить несколько шагов, как описано ниже:
Шаг 1. Обновление системы
Как всегда, запустите обновление пакета на своем сервере, чтобы убедиться, что во время установки у вас установлены самые свежие пакеты.
sudo dnf update
sudo dnf upgrade
Шаг 2. Задайте имя хоста и файл хостов
Задайте имя хоста сервера и настройте файл хостов с помощью следующих команд
$ sudo hostnamectl set-hostname tomcat.example.com
$ sudo vim /etc/hosts
192.168.50.3tomcat.example.com
Затем вы можете перезагрузиться, чтобы изменения вступили в силу.
sudo reboot
Шаг 3: Установите OpenJDK на CentOS / Rocky
Нам нужно установить среду выполнения OpenJDK, как показано ниже. Я собираюсь установить версию 11, но вы также можете выбрать версию 8. Для разработчиков они могут выбрать среду разработки.
# OpenJDK 11
sudo dnf install java-11-openjdkjava-11-openjdk-devel
# OpenJDK 8
sudo dnf install java-1.8.0-openjdkjava-1.8.0-openjdk-devel
Шаг 4. Создайте пользователя без полномочий root и каталог для Tomcat
Нам нужно создать пользователя без полномочий root, который будет иметь доступ только к Tomcat и не будет использовать его для других целей. Нам также нужен каталог для размещения файлов tomcat.
# Add Tomcat group
sudo groupadd tomcat
# Create Tomcat directory
sudo mkdir /opt/tomcat
# Create tomcat user, disable login and give rights
sudo useradd -s /bin/nologin -g tomcat -d /opt/tomcat tomcat
Шаг 5: Загрузите Tomcat 10 на CentOS 8 | 7 / Rocky Linux 8
Теперь посетите официальный сайт Apache Tomcat, чтобы загрузить последнюю версию Tomcat. Оказавшись на странице, щелкните правой кнопкой мыши файл .tar.gz и скопируйте адрес ссылки.
Используйте wget для загрузки двоичных файлов Apache Tomcat, как показано ниже.
sudo dnf install wget
wget https://downloads.apache.org/tomcat/tomcat-10/v10.0.8/bin/apache-tomcat-10.0.8.tar.gz
Извлеките заархивированный файл и скопируйте извлеченные файлы в ранее созданный каталог tomcat.
sudo tar -xvf apache-tomcat-10.0.8.tar.gz -C /opt/tomcat --strip-components=1
Шаг 6. Установите разрешения для каталогов Tomcat
Нам нужно разрешить пользователю tomcat читать файлы в каталоге tomcat. Также разрешите выполнение сценариев в каталоге.
sudo chown -R tomcat: /opt/tomcat
sudo sh -c 'chmod +x /opt/tomcat/bin/*.sh'
Шаг 7. Создайте файл Apache Tomcat Systemd
Мы можем создать файл systemd для запуска и остановки Apache Tomcat. Это также очень полезно для автозапуска tomcat при перезагрузке системы. Нам необходимо передать место установки java в качестве переменной в файле systemd. Чтобы получить путь, выполните следующую команду:
$ sudo alternatives --list | grep ^java
java auto /usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64/bin/java
Приступите к созданию служебного файла apache tomcat
sudo vim /etc/systemd/system/tomcat.service
Вставьте следующий контент
[Unit]
Description=Apache Tomcat Web Application Container
Wants=network.target
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1G -Djava.net.preferIPv4Stack=true'
Environment='JAVA_OPTS=-Djava.awt.headless=true'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
SuccessExitStatus=143
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Шаг 8: Запустите и включите службу Tomcat
Теперь, когда у нас есть служебный файл, мы можем легко запустить Apache Tomcat и включить его автоматический запуск при перезагрузке системы.
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl enable tomcat
Подтвердите статус Tomcat, что он запущен
sudo systemctl status tomcat
Шаг 9: Настройте Tomcat Web Management
Apache Tomcat можно полностью управлять через веб-интерфейс. Нам нужно создать пользователя и пароль для доступа к управлению, как показано ниже:
sudo vim /opt/tomcat/conf/tomcat-users.xml
Добавьте выделенные строки между тегами <tomcat-users>, чтобы они выглядели, как показано:
<tomcat-users
...
<!--
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="must-be-changed" roles="tomcat"/>
<user username="both" password="must-be-changed" roles="tomcat,role1"/>
<user username="role1" password="must-be-changed" roles="role1"/>
-->
<role rolename="admin-gui"/>
<user username="admin" password="MyAdminPassword" roles="admin-gui"/>
<role rolename="manager-gui"/>
<user username="admin" password="MyManagerPassword" roles="manager-gui"/>
</tomcat-users>
Нам также необходимо разрешить удаленный доступ к Tomcat как для приложений-менеджеров, так и для приложений-менеджеров хоста. По умолчанию tomcat доступен только локально.
Для связи с менеджером:
sudo vim /opt/tomcat/webapps/manager/META-INF/context.xml
Введите удаленные IP-адреса для доступа к tomcat, разделенные вертикальной чертой. В моем случае 192.168.50.2 — это удаленный IP-адрес.
...
<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|192.168.50.2" />
...
</Context>
Для Host Manager;
sudo vim /opt/tomcat/webapps/host-manager/META-INF/context.xml
Добавить удаленный IP
...
<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|192.168.50.2" />
...
</Context>
Шаг 10. Разрешите Apache Tomcat через брандмауэр
Если вы используете активный брандмауэр, вам необходимо открыть порт Tomcat на брандмауэре.
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
На этом этапе вы успешно установили Apache Tomcat и можете протестировать его из браузера с http://<your-server-ip>:8080 . Вы должны увидеть открытую страницу ниже
Шаг 11. Настройте Nginx в качестве обратного прокси-сервера Apache Tomcat
В нашей установке мы собираемся использовать веб-сервер Nginx для доступа к нашему приложению Apache Tomcat.
Установите Nginx на CentOS 8 | Rocky Linux
Начнем с установки nginx
sudo dnf install -y nginx
Затем запустите и включите Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
Создайте виртуальный хост Nginx для Apache Tomcat
Создайте файл конфигурации виртуального хоста, как показано ниже:
sudo vim /etc/nginx/conf.d/tomcat.conf
Добавьте следующий контент
server {
listen 80;
server_name example.com;
root /opt/tomcat/webapps/;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}
Тестовая конфигурация nginx
sudo nginx -t
Перезагрузите nginx
sudo systemctl restart nginx
Теперь перейдите в свой браузер и Apache Tomcat, используя имя хоста сервера. В моем случае http://example.com
Если вы нажмете на Server Status или Manager App , вам будет предложено ввести имя пользователя и пароль для доступа.
Введите имя пользователя и пароль администратора или менеджера, которые вы настроили в tomcat-users.xml, и вы готовы использовать веб-интерфейс Apache Tomcat. Вот и все. Вы успешно установили Apache Tomcat на CentOS 8 | 7 и Rocky Linux.