Установка и настройка Tomcat 9 на Ubuntu server

В текущей статье рассматривается установка Java и Tomcat 9 на Ubuntu.

Tomcat представляет собой контейнер Java сервлетов, реализует спецификацию JSP и JSF.

Установка Java на Ubuntu server

Как подружить Java и Tomcat

Для начала необходимо установить Java:

sudo apt-get install default-jdk

Начнет устанавливаться Java и выглядеть это будет примерно следующим образом:

Java install

Командой java -version можно проверить, какая версия Java установилась:

java version

Установка Tomcat 9 на ubuntu server

Заходим на сайт https://tomcat.apache.org
Копируем ссылку на самую свежую версию tomcat (архив tar.gz):

wget tomcat

Создадим папку /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.

Tomcat9

Как создать пользователя 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

Ручная настройка сети и MySQL сервера на Ubuntu Server 16.04

Заметка по установке Linux Ubuntu Server 16.04 на сервер HP  (думаю, что подобным образом его можно поставить на любой другой сервер) и о том, как настроить MySQL сервер.

Во время установки выбираем установить LAMP, SSH server, Samba сервер.

Система спросит, надо будет выбрать перечисленное пробелами.

DHCP сервера у меня не было, поэтому отметил «Настроить сеть вручную». Настройкой занялся после установки ОС.

Установленный сервер Ubuntu выглядит таким образом:

Installed ubuntu16.04

Настройка сети

Логинимся в систему и выполняем следующую команду:

sudo lshw -C network

Получаем примерно следующее:

lshw

Здесь нас интересует имя сетевого адаптера logical name: enp0s3.

Далее выполняем следующую команду:

sudo nano /etc/network/interfaces

В данном файле прописываем настройки сети для адаптера enp0s3:

interfaces

(Настройки у вас должны быть, конечно, свои)

Сохраняем файл комбинацией клавиш Ctrl+O и выходим из программы с помощью Ctrl+X.

Перезапускаем сеть:

sudo /etc/init.d/networking restart

На этом этапе сеть должна уже работать и соседние компьютеры пинговаться.

Настройка MySQL

Далее настраиваю MySQL, так как необходима возможность подключения к MySQL серверу с других компьютеров.

Так же необходимо изменить движок таблиц по умолчанию с InnoDB на MyISAM (в моем случае), так как транзакций не будет, а на движке MyISAM все будет работать быстрее. Для этого необходимо присвоить переменной default_storage_engine значение MyISAM в файле mysqld.cnf.

Пишем в консоли:

sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

Прописываем переменную в конфиге и комментируем строку bind-address = 127.0.0.1 чтобы мы могли подключаться к MySQL с других компьютеров:

mysqld conf

По умолчанию MySQL сервер не позволит пользователю root подключиться с других компьютеров.

Создадим нового пользователя и дадим ему полные права. Для этого запустим mysql client на сервере либо по SSH:

mysql -h 127.0.0.1 -u root -p

Введем пароль, установленный для root и получим следующее:

mysql

На этом этапе и можем писать SQL запросы. В конце каждого запроса ставим символ ‘;‘ и нажимаем Enter.

Создаем нового пользователя MySQL со всеми правами

Создаем нового пользователя (здесь myuser11 это пароль):

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'myuser11';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'myuser11';

Даем все права:

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

Обновляем все права доступа командой:

FLUSH PRIVILEGES;

На этом этапе мы имеем настроенный MySQL сервер с админом myuser, который может подключаться к MySQL с других компьютеров.