В наши дни многие информационные сервисы работают на
виртуальных машинах. На рынке появляется огромное количество поставщиков услуг виртуализации, у которых можно получить VPS по вполне вменяемым ценам.В этой статье я хотел бы поделиться своим вариантом первоначальной настройки виртуалки на базе [[https://www.centos.org/ CentOS]] 8 и принять рекомендации по её улучшению.
Предполагается, что VPS предназначена для разработки/тестирования/презентации WEB-приложения в общем случае, т.е. не ориентируясь на какие-либо специфические особенности и среды программирования.
++ Первые шаги
Во-первых, после установки необходимо создать непривилегированного пользователя:
# groupadd user
# useradd -m -d /home/user -s /bin/bash -g user -G wheel user
# passwd user
Затем задать более безопасные настройки для демона sshd.
Под X.X.X.X понимается IP-адрес клиента, с которого будет происходить соединение на VPS.
# sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# echo "AllowUsers user@X.X.X.X user@X.X.X.*" >> /etc/ssh/sshd_config
# systemctl restart sshd.service
# exit
После выхода из под учётной записи администратора, можно соединиться с сервером по SSH и продолжить дальнейшую настройку.
Далее следует файрволл. Его настраиваем так, чтобы на 22 порт SSH могли подключаться пользователи из авторизованной подсети, а остальные соединения отбрасывались:
$ sudo firewall-cmd --zone=internal --add-source=X.X.X.X/32 --add-source=X.X.X.0/24
$ sudo firewall-cmd --zone=internal --add-service=ssh
$ sudo firewall-cmd --zone=public --remove-service=ssh
$ sudo firewall-cmd --zone=public --add-service=http --add-service=https
$ sudo firewall-cmd --get-active-zones
internal
sources: X.X.X.X/32 X.X.X.0/24
public
interfaces: ens3
$ sudo firewall-cmd --runtime-to-permanent
$ sudo firewall-cmd --reload
Опять же, под X.X.X.X понимается IP-адрес клиента, с которого будет происходить соединение на VPS.
++ Установка программного обеспечения
Прежде всего следует обновить систему до актуального состояния и перезагрузиться:
$ sudo dnf upgrade --refresh
$ sudo reboot
Затем установим необходимое для разработки программы:
$ sudo dnf groupinstall "Development tools"
$ sudo dnf install clang
Clang устанавливаю, как дополнение к GCC для кроссплатформенной компиляции разработок.
++ Установка и настройка СУБД
Из основного репозитория качаем клиент, сервер и заголовки [[https://mariadb.org/ MariaDB]].
Запускаем, проверяем, и настраиваем СУБД
$ sudo dnf install mariadb mariadb-server mariadb-devel
$ sudo systemctl start mariadb
$ sudo systemctl status mariadb
Active: active (running)
$ sudo systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service > /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service > /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service > /usr/lib/systemd/system/mariadb.service.
Скрипт mysql_secure_installation устанавливает пароль для root MariaDB
и выключает небезопасные настройки. Далее можно создать БД и пользователей.
$ sudo mysql_secure_installation
$ mysql -u root -p
mysql> CREATE DATABASE `mydb`;
mysql> GRANT USAGE ON *.* TO 'user'@localhost IDENTIFIED BY 'mypassword';
mysql> GRANT ALL privileges ON `mydb`.* TO 'user'@localhost;
mysql> FLUSH PRIVILEGES;
mysql> SHOW GRANTS FOR 'user'@localhost;
Первоначальная настройка MariaDB завершена.
++ Установка и настройка HTTPD apache2
Ниже следует установка сервера [[https://httpd.apache.org/ httpd]].
В качестве менеджера SSL-сертификатов будем использовать certbot из репозитория EPEL:
$ sudo dnf install httpd
$ sudo dnf install epel-release
$ sudo dnf install certbot python3-certbot-apache mod_ssl
Добавляем виртуальный хост в конфиг сервера. Предполагается, что DNS имя сервера уже
зарегистрировано и делегировано, создана A-запись на IP VPS.
$ vi /etc/httpd/conf.d/vhosts.conf
<VirtualHost *:80>
ServerAdmin webmaster@example.ru
ServerName example.ru
ServerAlias www.example.ru
DocumentRoot /var/www/html/example.ru/
<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI
AddHandler cgi-script .cgi .sh
Require all granted
</Directory>
</VirtualHost>
Эта конфигурация так же включает выполнение CGI-скриптов на стороне сервера, так что
можно приступать к разработке WEB-приложений после перезагрузки сервиса:
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
Не забываем получить сертификаты в центре сертификации [[https://letsencrypt.org/ru/ Let`s Encrypt]]:
$ sudo certbot -d example.ru -d www.example.ru
Вышеизложенный порядок действий не обязательно каждый раз делать вручную.
Можно написать и отладить простой shell-скрипт, который проделает все
операции в автоматическом режиме и первоначальная настройка VPS сервера займёт незначительное время.
URL:
Обсуждается: http://www.opennet.me/tips/info/3162.shtml