В данной теме рассмотрим установку Apache Tomcat 8/9 на ОС Ubuntu 16.
Обновление пакетов Ubuntu
Первым делом нам нужно обновить все пакеты Linux/Ubuntu командой в терминале
apt-get update && apt-get upgrade
Установка JDK
Вторым делом, конечно же, нам нужна среда выполнения Java, на котором, собственно, и написан данный сервер. Для установки JDK набираем команду
apt-get install default-jdk
Для проверки удачной установки выполнил команду вывода установленной версии JDK
java -version
Это должно вывести что-то на подобие
openjdk version "1.8.0_111" OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2ubuntu0.16.04.2-b14) OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)
Добавление нового пользователя для работы с сервером
Это не обязательно, но из-за соображения безопасности не рекомендуется работать с сервером из пользователя root и поэтому, добавим нового пользователя для этого в систему
useradd -r username --shell /bin/false
Скачка архива Tomcat 8/9 и установка
Для установки нам надо будет скачать архив с Tomcat 8 или Tomcat 9. В данном примере установим версию 9. Разницы в установке версий 8 и 9 нет. Для скачки нужно знать текущее зеркало загрузки, они могут меняться и на данный момент, официальным зеркалом была ссылка на странице загрузки
копируем эту ссылку в буфер, заходим в раздел /opt
cd /opt
и скачиваем в данный раздел архив с сервером
wget http://apache-mirror.rbc.ru/pub/apache/tomcat/tomcat-9/v9.0.0.M22/bin/apache-tomcat-9.0.0.M22.tar.gz
Не обязательно скачивать через терминал, можно загрузить через любой файловый менеджер и делаем разархивацию содержимого
tar -zxf apache-tomcat-9.0.0.M22.tar.gz
Делаем символическую ссылку на разархивированную папку с сервером для удобной навигации по имени ссылки и устанавливаем привилегии на папку с новым пользователем, которого мы до этого создали
ln -s apache-tomcat-9.0.0.M22 tomcat-latest chown -hR username: tomcat-latest apache-tomcat-9.0.0.M22
Создание сервиса для работы с сервером
Для работы с сервером в виде сервиса из командной строки необходимо создать специальный файл с именем сервиса и расширением *.service в папке /etc/systemd/system/, в данном случае именуем данный сервис как tomcat.service, в котором пропишем список операций для запуска, рестарта и остановки сервера Tomcat
[Unit] Description=Tomcat9 After=network.target [Service] Type=forking User=username Group=usergroup Environment=CATALINA_PID=/opt/tomcat-latest/tomcat.pid Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 Environment=CATALINA_HOME=/opt/tomcat-latest Environment=CATALINA_BASE=/opt/tomcat-latest Environment="CATALINA_OPTS=-Xms512m -Xmx512m" Environment="JAVA_OPTS=-Dfile.encoding=UTF-8 -Dnet.sf.ehcache.skipUpdateCheck=true -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+UseParNewGC" ExecStart=/opt/tomcat-latest/bin/startup.sh ExecStop=/opt/tomcat-latest/bin/shutdown.sh [Install] WantedBy=multi-user.target
Сохраняем данный файл и запускаем сервер
systemctl daemon-reload systemctl start tomcat systemctl enable tomcat
Настройка сервера
Это базовый список операций для установки, далее нужно настроить установленный Tomcat, чтобы он работал на сервере через терни безопасности.
Tomcat на локальном сервере и удаленном работает по дефолту по разному. На локальном не возникают проблемы с правами и безопасностью, а на удаленном можно встретиться со всем этим сюрпризом и можно на этом убить немало времени.
Нам нужно, сначала дать полные права под папку проектов на удаленном сервере
далее, создать пользователя в файле конфигурации Tomcat — conf/tomcat-users.xml в каждом разделе в папке META-INF отредактировать файл context.xml.
Проблема входа в разделы менеджера приложений Tomcat 8/9 связана с блокировкой текущего URL, по которому мы пытаемся открыть сайт. Данная проблема решается , в дополнении с прописью ролей в tomcat-users.xml
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <role rolename="admin-gui"/> <role rolename="admin-script"/> <user username="username" password="password" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script"/>
Еще и редактированием, точнее, закоментированием тега Valve в файле context.xml в папке META-INF открываемого проекта
<?xml version="1.0" encoding="UTF-8"?> ... <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>
Файл context.xml может находится в любом проекте и отвечает за доступ к проекту из удаленного URL.