Для настройки REST-сервиса на сервере CentOS в качестве службы нужно выполнить следующие действия:

Скачать и установить систему CentOS в программном продукте виртуализации Virtual Box.Установка системы интуитивно-понятна и по ней много информации в сети Интернет.

После того, как вы установили CentOS вам нужно установить MySQL:

Скачиваем последнюю версию файла репозитория MySQL:

wget http://repo.mysql.com/mysql57-community-release-el7.rpm

Затем запускаем его на выполнение:

rpm -ivh mysql57-community-release-el7.rpm

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

yum update

Устанавливаем MySQL:

yum install mysql-server

При установке система сгенерирует случайный пароль для суперпользователя, посмотреть этот пароль можно следующей командой:

grep 'temporary password' /var/log/mysqld.log

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

systemctl start mysqld

Входим в консоль MySQL командой:

mysql -u root -p

После ввода этой команды и нажатия Enter будет выведен запрос пароля, вводим туда временный пароль, который мы получили пару шагов назад.

После того, как вы увидели приглашение консоли MySQL для ввода команд, в первую очередь нужно сменить пароль для пользователя root:

set password for ‘root’@’localhost’ = password(‘сюда пишем свой пароль, он должен отвечать политике безопасности’);

 

дополняется…

…………………….

 

После установки MySQL вам нужно установить Java, командой в консоли CentOS:

yum install java

В свою очередь, в интегрированной среде разработки Intellij IDEA вам нужно собрать package, на выходе процесса сборки вы получите файл с расширением .jar, который нужно каким-то образом передать из операционной системы Windows(основная система) на сервер CentOS в гостевую ОС. Я решил эту задачу с помощью утилиты pscp.exe. Если подробнее, то скидываем свой jar файл, для удобства, в корень диска D, затем рядом с ним размещаем файл pscp.exe, который скачиваем здесь. Открываем Windows PowerShell (можно делать из обычной командной строки), переходим в корень диска D командой в Windows PowerShell:

D:

и затем вводим команду:

.\pscp.exe .\myfile.jar root@192.168.0.200:/usr/local/bin/

где, root — это имя пользователя от которого мы хотим подключиться для передачи файла 192.168.0.200 это IP-адрес моей гостевой ОС, затем через двоеточие каталог, в который мы хотим положить закачиваемый файл на гостевой системе.После нажатия Enter будет предложено ввести пароль root и если всё пройдет успешно, то ваш файл будет загружен на сервер.

На сервере переходим в каталог /root/ командой:

cd /root/

затем выполняем команду:

java -jar myfile.jar

Сервис должен запустится, весь вывод отображая в консоли, пробуем подключиться к нему из основной ОС по порту 8080 (мой сервис на этапе создания был настроен на запуск именно на этом порту) командой:

telnet 192.168.0.200 8080

Подключиться вам скорее всего не удалось, то как порт 8080 в CentOS по умолчанию закрыт.

Далее мы должны разобраться и настроить файрвол, я выбрал следующий путь:

В CentOS 7, в качестве файрвола, вместо iptables используется служба firewalld, давайте удалим её и установим привычный iptables:

Отключаем firewalld:

systemctl stop firewalld
systemctl mask firewalld

Затем устанавливаем iptables:

yum install iptables-services

Добавим iptables в автозагрузку:

systemctl enable iptables

После этого вносим изменения в файл /etc/sysconfig/iptables:

nano /etc/sysconfig/iptables

и, например, после строки -A INPUT -p tcp -m state —state NEW -m tcp —dport 22 -j ACCEPT добавляем свою строку — правило для открытия порта 8080:

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

сохраняем файл и перезагружаем службу iptables командой:

systemctl restart iptables

После перезапуска мы можем проверить статус службы iptables:

systemctl status iptables

и проверить загруженные правила, действующие в данный момент:

iptables -L

После этого можно проверить доступность порта 8080 утилитой telnet с основной системы или, на этот раз, сразу попробовать обратиться к нашему сервису, введя в браузере основной системы адрес сервера и каталог для доступа к нашему контроллеру, например в моем случае это:

http://192.168.0.200/service

Если получаем JSON-ответ, значит порт мы открыли и сервис стал доступен извне.

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

1. Создаём в директории /etc/systemd/system/ файл myservice.service, в который пишем следующий код:

[Unit]
Description=My Service

[Service]
Type=simple

ExecStart=/usr/bin/java -jar /usr/local/bin/myfile.jar &
ExecStop=/bin/kill -15 $MAINPID

[Install]
WantedBy=multi-user.target

2. Сохраняем файл и пробуем запустить наш сервис командой:

systemctl start myservice

Наша служба должна запуститься, проверить её статус можно командой:

systemctl status myservice

Остановить службу можно командой:

systemctl stop myservice

Команда:

systemctl enable myservice

заставит службу запускаться после перезагрузки сервера.

 

После этого перезагружаем сервер командой reboot проверяем (без ввода логина и пароля) поднялась ли наша вновь созданная служба и есть ли доступ к нашему сервису.

 

 

 

 

 

 

Неправильный, но работающий вариант организации запуска нашего сервиса в качестве службы. Правильный вариант выше!

Оставил на всякий случай, для того, чтобы помнить, что так делать не надо.

———————————————————————————————————————————————————————————-

1. Создаём файл /etc/init.d/myserv командой:

touch /etc/init.d/myserv

где myserv это имя нашей будущей службы,

2. Открываем файл /etc/init.d/myserv командой:

nano /etc/init.d/myserv

Если редактор Nano отсутствует в системе, то установите его командой:

yum install nano

3. Затем, пробуем снова открыть файл и если он открылся, то пишем в него следующий код:

#!/bin/sh 
#chkconfig: 345 99 01
#description: some code to load on boot
case "$1" in 
     start)
           cd /root/
           /usr/bin/java -jar myfile.jar &
           ;;
     stop)
           killall -v java 
           ;;
esac
exit 0

4. Делаем файл исполняемым:

chmod +x myserv

5. Добавляем в службы:

chkconfig --add myserv

———————————————————————————————————————————————————————————-