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

    Общий рейтинг статьи: 3 (проголосовало 2 )
    Опубликовано:  [просмотров 497]


    В моей практике довольно часто приходится поднимать 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

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


    Связанные записи в блоге

    Обсуждение статьи

    Ваш комментарий: