Как установить Apache Tomcat 10 с Nginx на Rocky Linux 8
На этой странице
- Предпосылки
- Шаг 1. Установите Java
- Шаг 2. Создание системного пользователя
- Шаг 3. Загрузите Tomcat
- Шаг 4. Создайте файл модуля Systemd
- Шаг 5. Запустите и включите службу Tomcat
- Шаг 6. Настройка брандмауэра
- Шаг 7. Настройка веб-интерфейса управления Tomcat
- Шаг 8. Установите SSL
- Шаг 9. Установите Nginx
- Шаг 10. Запустите TomCat
- Заключение
Tomcat — это веб-сервер с открытым исходным кодом для приложений на основе Java. Он используется для развертывания приложений Java Servlet и JSP. Сервлеты Java — это небольшие программы, определяющие, как сервер обрабатывает запросы и ответы. Tomcat выступает в качестве открытой реализации технологий Java Servlet, JavaServer Pages, Java Expression Language и Java WebSocket.
Доступно несколько версий Tomcat. Мы обсудим установку Tomcat 10 в нашем руководстве. Если вы хотите установить Tomcat 9, инструкции будут такими же. Если есть какие-либо изменения, они будут указаны в туториале.
В нашем руководстве мы установим Tomcat 10 вместе с сервером Nginx, чтобы действовать как обратный прокси-сервер и защищать его с помощью SSL. Существует версия Tomcat 10.1.x, которая является последней альфа-версией Tomcat, но мы не будем ее устанавливать.
Предпосылки
-
A server running Rocky Linux 8.5
-
A non-sudo user with superuser privileges.
-
Make sure everything is updated.
$ sudo dnf update
-
Packages required for the installation.
$ sudo dnf install wget tar
Шаг 1 — Установите Java
Для Tomcat 9 и 10 требуется Java 8 и более поздние версии. Мы установим OpenJDK 11, реализацию платформы Java с открытым исходным кодом.
Выполните следующую команду, чтобы установить OpenJDK.
$ sudo dnf install java-11-openjdk-devel
Проверьте установку.
$ java -version openjdk version "11.0.13" 2021-10-19 LTS OpenJDK Runtime Environment 18.9 (build 11.0.13+8-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.13+8-LTS, mixed mode, sharing)
Шаг 2 — Создайте системного пользователя
Мы создадим нового системного пользователя, чтобы свести к минимуму любую угрозу безопасности, запустив Tomcat в качестве пользователя root. Для нового пользователя мы установим /opt/tomcat
в качестве домашнего каталога.
Выполните следующую команду, чтобы создать нового системного пользователя для Tomcat.
$ sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat
Шаг 3 — Загрузите Tomcat
Последнюю версию Tomcat v10 можно загрузить со страницы загрузки. На момент написания этого руководства последней доступной версией была версия 10.0.14. Перед загрузкой Tomcat проверьте последнюю версию.
Используйте wget
для загрузки Tomcat.
$ VERSION=10.0.14 $ wget https://dlcdn.apache.org/tomcat/tomcat-10/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz
Извлеките файл в каталог /opt/tomcat
.
$ sudo tar -xf apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
Создайте символическую ссылку на последнюю версию Tomcat, указывающую на каталог установки Tomcats.
$ sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest
Измените владельца каталога на пользователя, созданного ранее.
$ sudo chown -R tomcat:tomcat /opt/tomcat
Шаг 4 — Создайте файл модуля Systemd
Следующим шагом является создание служебного файла для сервера Tomcat, чтобы его можно было запускать автоматически.
Создайте и откройте файл /etc/systemd/system/tomcat.service
для редактирования.
$ sudo nano /etc/systemd/system/tomcat.service
Вставьте следующий код.
[Unit] Description=Apache Tomcat 10 Servlet container Wants=network.target 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 Restart=always [Install] WantedBy=multi-user.target
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.
Шаг 5. Запустите и включите службу Tomcat.
Перезагрузите демон службы, чтобы включить службу Tomcat.
$ sudo systemctl daemon-reload
Включите и запустите службу Tomcat.
$ sudo systemctl enable tomcat --now
Проверьте статус службы.
$ sudo systemctl status tomcat ? tomcat.service - Apache Tomcat 10 Servlet container Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2021-12-17 15:54:28 UTC; 24s ago Process: 86219 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 86226 (java) Tasks: 19 (limit: 11411) Memory: 132.7M CGroup: /system.slice/tomcat.service ??86226 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties> Dec 17 15:54:27 howtoforge systemd[1]: Starting Apache Tomcat 10 Servlet container... Dec 17 15:54:28 howtoforge systemd[1]: Started Apache Tomcat 10 Servlet container.
Шаг 6 — Настройте брандмауэр
Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.
$ sudo firewall-cmd --state running
Разрешить порты HTTP и HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Перезагрузите брандмауэр, чтобы изменения вступили в силу.
$ sudo firewall-cmd --reload
Шаг 7. Настройка интерфейса веб-управления Tomcat
Веб-интерфейс управления будет доступен только после того, как мы создадим для него учетные данные пользователя.
Пользователи и роли Tomcat определяются в файле /opt/tomcat/latest/conf/tomcat-users.xml
. Откройте файл для редактирования.
$ sudo nano /opt/tomcat/latest/conf/tomcat-users.xml
Добавьте следующие строки перед строкой . Замените имя пользователя и пароль своими учетными данными.
Выберите разные учетные данные для порталов менеджера и администратора Tomcat.
<tomcat-users> <!-- Comments --> <role rolename="manager-gui"/> <user username="manager" password="managerpassword" roles="manager-gui" /> <role rolename="admin-gui"/> <user username="admin" password="adminpassword" roles="admin-gui"/> </tomcat-users>
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.
По умолчанию интерфейс Tomcat доступен только с локального хоста. Если вам нужен доступ к нему из любого места, вам необходимо настроить его.
Откройте /opt/tomcat/latest/webapps/manager/META-INF/context.xml
для редактирования.
$ sudo nano /opt/tomcat/latest/webapps/manager/META-INF/context.xml
Удалите следующие строки или закомментируйте их, как указано ниже, заключив их в .
<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
Разрешение доступа с любого IP-адреса является угрозой безопасности. Вы можете ограничить его, разрешив доступ только с вашего общедоступного IP-адреса. Если ваш общедоступный IP-адрес 22.22.22.22, измените строку следующим образом.
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|22.22.22.22" />
Список разрешенных IP-адресов разделен вертикальной чертой (|). Вы можете либо добавить отдельные IP-адреса, либо использовать регулярное выражение.
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено сохранить.
Внесите те же изменения в файл /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml
.
После завершения перезапустите сервер Tomcat.
$ sudo systemctl restart tomcat
Шаг 8 — Установите SSL
Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно установить инструмент Certbot.
Во-первых, вам нужно скачать и установить репозиторий EPEL.
$ sudo dnf install epel-release
Выполните следующие команды, чтобы установить Certbot.
$ sudo dnf install certbot
Создайте SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d tomcat.example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/tomcat.example.com
на вашем сервере.
Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Создайте корневой каталог вызова для автоматического обновления Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Создайте задание Cron для обновления SSL. Он будет запускаться каждый день для проверки сертификата и его обновления при необходимости. Для этого сначала создайте файл /etc/cron.daily/certbot-renew
и откройте его для редактирования.
$ sudo nano /etc/cron.daily/certbot-renew
Вставьте следующий код.
#!/bin/sh certbot renew --cert-name tomcat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Измените права доступа к файлу задачи, чтобы сделать его исполняемым.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Шаг 9 — Установите Nginx
Rocky Linux 8.5 поставляется с последней стабильной версией Nginx. Установите его с помощью следующей команды.
$ sudo dnf module install nginx:1.20
Проверьте установку.
$ nginx -v nginx version: nginx/1.20.1
Включите и запустите службу Nginx.
$ sudo systemctl enable nginx --now
Создайте и откройте файл /etc/nginx/conf.d/tomcat.conf
для редактирования.
$ sudo nano /etc/nginx/conf.d/tomcat.conf
Вставьте в него следующий код.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name tomcat.example.com; access_log /var/log/nginx/tomcat.access.log; error_log /var/log/nginx/tomcat.error.log; # SSL ssl_certificate /etc/letsencrypt/live/tomcat.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/tomcat.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/tomcat.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name tomcat.example.com; return 301 https://$host$request_uri; }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Откройте файл /etc/nginx/nginx.conf
для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Проверьте синтаксис файла конфигурации Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите службу Nginx, чтобы активировать новую конфигурацию.
$ sudo systemctl restart nginx
Шаг 10 — Запустите TomCat
Запустите https://tomcat.example.com
в своем браузере, и откроется следующий экран.
Теперь вы можете получить доступ к страницам «Состояние сервера», «Приложение менеджера» и «Диспетчер хоста», используя учетные данные для входа, которые мы настроили на шаге 7.
Заключение
На этом мы завершаем наше руководство по установке и настройке Tomcat Server на сервере под управлением Rocky Linux 8.5 и его обслуживанию через обратный прокси-сервер Nginx, а также использованию SSL для его защиты. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.