Для настройки 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
———————————————————————————————————————————————————————————-