Linux server для запуска web-приложений Java на базе Linux-дистрибутива Centos версии 7

HELP-ME-24.COM (Freelance Team), Черноусов Антон

В моей практике довольно часто приходится поднимать Linux-сервера для web-приложений Java и я решил набросать небольшой пошаговый гайд по основным операциям производимым с Linux-дистрибутивом Centos для того, чтобы превратить его в сервер Web-приложений.

Вы наверное знаете, что сайты можно делать на PHP/Python/Ruby и т.п., но настоящий хардкор пишут именно на Java и для запуска Web-приложений Java обычно используется определенный набор технологий, а сами приложения для развертывания предоставляются в формате war-файлов. Обычно разработчики предоставляют для развертывания на подготовленный сервер один или несколько war-файлов и набор элементов оформления Front-а представляющих собой банальную статичную html-страницу (в редких случаях дополнительно предоставляется дамп базы данных).

Для отрисовки статичной части используется Nginx, а для обработки серверной части используется Tomcat и Java. Сегодня мы будем настраивать сервер на который в дальнейшем можно развернуть приложение любой сложности.

Web-Server based on Java and TomCat

Обычно, постановка задачи выглядит следующим образом:

  • Centos 7
  • Postgresql 9.5
  • Java 8

И именно для таких исходных данных мы сейчас последовательно настроим сервер. Обратите внимание, что будем Linux-дистрибутив Centos 7 устанавливать в варианте minimal (например образ диска CentOS-7-x86_64-Minimal-1511.iso).

Особенности установки Centos 7 в режиме Minimal

При установке обратите внимание на разметку диска, так как в автоматическом режиме используется LVM и я его предпочитаю без особой надобности не использовать. Так же теперь по умолчанию предлагается файловая система xfs вместо проверенной годами ext и в этом случае, я опять же за классический вариант с ext4.

Настройка разбивки диска в Centos

Так-же я рекомендовал бы вам изначально позаботиться о настройке сетевой подсистемы, так как режим установки сервера minimal довольно ограничен по набору средств настройки.

Настройка сети при установке Centos 7

Во время установки я рекомендую вам задать пароль пользователя root и создать пользователя user и возможностью sudo и естественно назначить им пароли.

Настройка пользователей при установке Centos 7

Дальнейшая установка происходит автоматически. 

Настройка Centos для работы в режиме Java application server

Начало настройки

Для дальнейшей комфортной работы вам потребуется обновить дистрибутив и установить несколько дополнительных пакетов:

# yum update
# yum install net-tools mc bind-utils wget

Настраиваем имя сервера

Отредактируйте файлы /etc/hostname и /etc/hosts приведя их в соответствие с именем сервера, в противном случае по умолчанию он будет называться localhost.

Устанавливаем сервер баз данных Postgresql 9.5

По умолчанию в Centos входит версия 9.2 и так как это уже достаточно старая версия Postgresql сервера нам потребуется подключить дополнительный репозиторий для версии 9.5:

# rpm -Uvh https://download.postgresql.org/pub/repos/yum/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm

Список пакетов автонастройки разных версий Postgresql можно найти на официальном сайте Postgresql по адресу: https://yum.postgresql.org/repopackages.php

После добавления репозитария установите пакеты Postgresql-сервера:

# yum install postgresql95-server.x86_64

И инициализируйте новую базу данных:

# /usr/pgsql-9.5/bin/postgresql95-setup initdb

Настройка Postgresql-сервера выходит за рамки статьи и рассматриваться будет отдельно.

В дистрибутиве CentOS 7 в отличие от той же Ubuntu службы не устанавливаются на запуск по умолчанию и вам потребуется запустить службу Postgresql и настроить ее автозапуск при старте сервера:

# systemctl enable postgresql-9.5.service
# service postgresql-9.5 start

Устанавливаем Oracle Java  8

Установку Oracle Java мы уже рассматривали в статье "Установка Oracle Java в Centos 7". 

Установка Tomcat 8

Хотя в техническом задании не указано, что требуется установка Tomcat это подразумевается по умолчанию. Установка Tomcat 8 включает в себя несколько этапов: создание пользователя, установка Tomcat и настройка автозапуска службы Tomcat.

Создаем группу и пользователя:

# groupadd tomcat
# useradd -M -s /bin/nologin -g tomcat -d /opt/tomcat tomcat

Загружаем и распаковываем последнюю версию Tomcat:

# wget http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.14/bin/apache-tomcat-8.5.14.tar.gz
# mkdir /opt/tomcat
# tar xvf ./apache-tomcat-8.5.14.tar.gz -C /opt/tomcat --strip-components=1
# chgrp -R tomcat /opt/tomcat
# cd /opt/tomcat/
# chmod -R g+r conf
# chmod g+x conf
# chown -R tomcat webapps/ work/ temp/ logs/

Настаиваем системный service-файл для системы инициализации SystemD (/etc/systemd/system/tomcat.service):

# Systemd unit file for tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/bin/kill -15 $MAINPID
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always

[Install]
WantedBy=multi-user.target

Запускаем службу и настраиваем автозапуск при старте сервера:

# systemctl daemon-reload
# systemctl start tomcat
# systemctl enable tomcat

Установка Nginx

Финальным штрихом является установка Nginx и настройка автоматического запуска при старте сервера. Пакет nginx в стандартную поставку не входит и аналогично Postgresql 9.5 подключается отдельно.

# yum install epel-release
# yum install nginx-all-modules.noarch

Запускаем службу и включаем автозагрузку при старте сервера:

# service nginx start
# systemctl enable nginx

Все что требовалось мы настроили и на все это у меня ушел час и при этом я параллельно настройке писал эту инструкцию.

Оставьте комментарий

Вы должны быть вошедший в чтобы отправить комментарий