Первоначальная настройка VPS сервера на базе CentOS 8

Опубликовано augusti - пт, 10/09/2020 - 07:46

Предполагается, что 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 для кроссплатформенной компиляции разработок.

Установка и настройка СУБД

Из основного репозитория качаем клиент, сервер и заголовки 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

Ниже следует установка сервера 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

Не забываем получить сертификаты в центре сертификации Let`s Encrypt:

   $ sudo certbot -d example.ru -d www.example.ru

Вышеизложенный порядок действий не обязательно каждый раз делать вручную. Можно написать и отладить простой shell-скрипт, который проделает все  операции в автоматическом режиме и первоначальная настройка VPS сервера займёт незначительное время.

Автор: KoD