Fork me on GitHub

Apache Tomcat установка

Я уже описывал процесс установки сервера приложений Payara Server и GlassFish

Процесс подготовки мало чем отличается от GlassFish

Действия производятся на Ubuntu

Создаём группу (вообще можно создать а можно и не создавать)

1
sudo groupadd java

Создаём юзера для того что бы всё было сикурно

1
2
sudo adduser --home /home/tomcat --system --shell /bin/bash tomcat
sudo usermod -a -G java tomcat

Либо сразу создаём с указанной группой

1
sudo adduser --home /home/tomcat --system --shell /bin/bash --ingroup java tomcat

Ставим jdk я выбрал open но можно взять и от oracle

1
sudo apt-get install openjdk-8-jdk

Качаем сам сервер Apache Tomcat

1
2
cd /tmp
wget -c http://apache.osuosl.org/tomcat/tomcat-9/v9.0.0.M9/bin/apache-tomcat-9.0.0.M9.tar.gz

Распаковываем

1
tar -xvf pache-tomcat-9.0.0.M9.tar.gz

Перемещаем туда где он будет теперь "жить"

1
sudo mv apache-tomcat-9.0.0.M9 /usr/local/bin/apache-tomcat-9

Далее стартовый скрипт для systemd

1
sudo vim /etc/systemd/system/tomcat.service
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[Unit]
Description = Apache Tomcat Web Container
After = syslog.target network.target

[Service]
Type = forking
RestartSec = 10
Restart = always
User = tomcat
Group = java
Environment = JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre
Environment = CATALINA_PID=/usr/local/bin/apache-tomcat-9/temp/tomcat.pid
Environment = CATALINA_HOME=/usr/local/bin/apache-tomcat-9
Environment = CATALINA_BASE=/usr/local/bin/apache-tomcat-9
Environment = 'CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment = 'JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart = /usr/local/bin/apache-tomcat-9/bin/startup.sh
ExecStop = /usr/local/bin/apache-tomcat-9/bin/shutdown.sh

[Install]
WantedBy = multi-user.target

Включаем автостарт и стартуем

1
2
systemctl enable tomcat.service
systemctl start tomcat.service

И стартовый скрипт для initd

1
sudo vim /etc/init.d/tomcat9
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
export CATALINA_HOME=/usr/local/bin/apache-tomcat-9
export TOMCAT_OWNER=tomcat;
PATH=/sbin:/bin:/usr/sbin:/usr/bin
start() {
  echo -n "Starting Tomcat: "
  su $TOMCAT_OWNER -c "$CATALINA_HOME/bin/startup.sh"
  echo "done"
}
stop() {
  echo -n "Stopping Tomcat: "
  su $TOMCAT_OWNER -c "$CATALINA_HOME/bin/shutdown.sh"
  echo "done"
}
case $1 in
  start|stop) $1;;
  restart) stop; start;;
  *) echo "Run as $0 <start|stop|restart>"; exit 1;;
esac

Ну и не забываем сделать его исполняемым

1
sudo chmod +x /etc/init.d/tomcat9

Меняем хозяина каталога

1
sudo chown -R tomcat:java /usr/local/bin/apache-tomcat-9

Сразу правим права

1
sudo nano /usr/local/apache-tomcat-9/conf/tomcat-users.xml

Добавляем такие строчки (логин и пароль ставим свои)

1
2
3
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="megaadmin" password="megaadmin" roles="manager-gui,admin-gui"/>

Так же надо указать порты, у меня уже заняты 8080 GlassFish на них крутится. Так что выбрал 8282

1
sudo nano /usr/local/bin/apache-tomcat-8/conf/server.xml
1
<Connector port="8282" protocol="HTTP/1.1"

Запускаем...

1
sudo service tomcat9 start

Если (ура!!!) и всё работает то можно сделать запуск автоматическим

1
2
sudo update-rc.d tomcat9 defaults
sudo update-rc.d tomcat9 enable

Далее я настроил Nginx У меня это выглядит так

1
vim /etc/nginx/sites-available/at.dtulyakov.ru

С таким содержимым

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
upstream at_server {
  server 127.0.0.1:8282 fail_timeout=0;
}

server {
  listen 80;
  server_name at.dtulyakov.ru;
  access_log /var/log/nginx/at.dtulyakov.ru.log;
  location / {
  proxy_pass http://at_server;
  proxy_redirect off;
  proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  client_max_body_size 10m;
  client_body_buffer_size 128k;
  proxy_connect_timeout 90;
  proxy_send_timeout 90;
  proxy_read_timeout 90;
  proxy_buffer_size 4k;
  proxy_buffers 4 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;
  }
}
#EOF

Ну и делаем что бы Nginx читал этот конфиг cd /etc/nginx/sites-enabled && sudo ln -s ../sites-available/at.dtulyakov.ru .

Comments