В текущей статье рассматривается установка Java и Tomcat 9 на Ubuntu.
Tomcat представляет собой контейнер Java сервлетов, реализует спецификацию JSP и JSF.
Установка Java на Ubuntu server
Как подружить Java и Tomcat
Для начала необходимо установить Java:
sudo apt-get install default-jdk
Начнет устанавливаться Java и выглядеть это будет примерно следующим образом:
Командой java -version
можно проверить, какая версия Java установилась:
Установка Tomcat 9 на ubuntu server
Заходим на сайт https://tomcat.apache.org
Копируем ссылку на самую свежую версию tomcat (архив tar.gz):
Создадим папку /opt в корневой директории:
sudo mkdir opt
Далее перейдем в папку opt командой cd /opt
и выполняем команду на скачивание файла (у вас ссылка может быть другая — с другого сервера, ближе всего расположенного у вам):
sudo wget http://ftp.byfly.by/pub/apache.org/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz
Данная команда загрузит tomcat в текущую папку.
Распакуем скачанный архив:
sudo tar xf apache-tomcat-9.0.6.tar.gz
И переименуем папку:
sudo mv apache-tomcat-9.0.6.tar.gz tomcat
Теперь надо добавить Tomcat в службы, чтобы его можно было запускать и останавливать. Для этого создадим файл tomcat.service:
nano /etc/systemd/system/tomcat.service
И добавим в него строки:
[Unit] Description=Tomcat9 After=network.target [Service] Type=forking Environment=CATALINA_PID=/opt/tomcat/tomcat9.pid Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 Environment=CATALINA_HOME=/opt/tomcat Environment=CATALINA_BASE=/opt/tomcat 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/bin/startup.sh ExecStop=/opt/tomcat/bin/shutdown.sh [Install] WantedBy=multi-user.target
Обратите внимание tomcat находится в папке /opt. Так же необходимо убедиться, что путь JAVA_HOME здесь прописан правильно.
Сохраняем файл и выполняем команды:
systemctl daemon-reload service tomcat start service tomcat status
Получаем результат:
Loaded: loaded (/etc/systemd/system/tomcat.service: disabled; vendor preset: enabled) Active: active (running) since Mon 2018-04-21 10:03:18 MSK; 5s ago
Теперь мы можем получить доступ к Tomcat введя в адресную строку браузера адрес сервера и порт 8080.
Как создать пользователя Tomcat
Чтобы создать пользователя Tomcat необходимо открыть файл tomcat-users.xml, находящийся в папке conf, затем создать роли:
- manager-gui
- manager-script
- manager-jmx
- manager-status
И прописать пользователя, присвоив ему эти роли:
<role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user password="s3cret" roles="manager-gui,manager-script,admin" username="tomcat"/>
Однако после произведенных действий все равно не будет доступа к списку приложений, к статусу сервера и т.д.
Чтобы получить такой доступ необходимо настроить список адресов, с которых будет разрешен вход в систему и просмотр такой информации.
Адреса можно задавать по очереди, разделяя их символом «|». Так же можно прописать регулярное выражение, захватывающее диапазон адресов.
Делаются эти настройки в файле webapps/manager/META-INF/context.xml:
<?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|192\.168\.0\.10[14]" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
Часть |192\.168\.0\.10[14] была добавлена мной. Она означает, что заходить в систему разрешено только с адресов 192.168.0.101 и 192.168.0.104.
Настройка HTTPS на Tomcat
После всех приведенных действий у нас доступен интерфейс tomcat по протоколу http.
Так же доступ ко всем приложениям, расположенным на этом сервере, доступ будет осуществляться по протоколу http, что не есть безопасно, так как туда будут отправляться get и post запросы, которые перехватить труда не составляет.
Чтобы настроить https необходимо создать файл .keystore утилитой keytool, входящей в состав jdk. На Linux и на Windows эта операция делается примерно одинаково. Заходим в папку bin нашего jdk и выполняем команду:
keytool -genkey -alias yourname -keyalg RSA -keystore c:\yournamekeystore
Заполняете все данные, которые запросит утилита.
Далее открываете файл conf/server.xml в папке с tomcat и добавляете следующие строки:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="yournamekeystore_path" keystorePass="password" />
И перезапускаете tomcat:
service tomcat restart
Теперь вы сможете зайти в интерфейс tomcat по следующему адресу: https://адрес_сервера:8443