Обзор развертывания LAMP и TeamSpeak 3 на сервере¶
Предварительные требования¶
Для успешного развертывания системы требуется операционная система на базе Debian или Ubuntu с доступом к репозиторию apt. Необходимо наличие прав суперпользователя (root) или доступа через sudo для установки пакетов и управления системными службами.
Система использует следующие компоненты:
-
Веб-сервер Apache.
-
Система управления базами данных MySQL.
-
Интерпретатор PHP с модулем
php-fpmиlibapache2-mod-php. -
Сервер голосовой связи TeamSpeak 3.
-
Утилита
certbotдля получения SSL-сертификатов.
Структура файлов и каталогов¶
Конфигурация и данные приложений размещаются в следующих директориях:
-
Веб-контент и конфигурация Apache:
/etc/apache2/,/var/www/html/. -
Конфигурация phpMyAdmin:
/usr/share/phpmyadmin/,/etc/phpmyadmin/. -
Файлы авторизации для phpMyAdmin:
/etc/phpmyadmin/.htpasswd. -
Данные и конфигурация TeamSpeak 3:
-
Домашняя директория пользователя:
/home/<имя_пользователя>/(определяется переменнойts_home). -
Каталог файлов:
<ts_home>/files/. -
Каталог логов:
<ts_home>/logs/. -
Каталог сервера:
<ts_home>/server/. -
Каталог резервных копий:
<ts_home>/backup/. -
Конфигурационный файл сервера:
<ts_home>/ts3server.ini. -
Файлы списков IP:
<ts_home>/query_ip_whitelist.txt,<ts_home>/query_ip_blacklist.txt. -
Скрипт запуска:
<ts_home>/ts3server_minimal_runscript.sh. -
Файл токена администратора:
/root/admintocken_teamspeak.out. -
Файл хоста:
/root/hostname.out.
Процесс установки приложения¶
Установка выполняется через пакетный менеджер apt и скрипты развертывания.
Установка компонентов LAMP:
-
Обновление всех пакетов системы до последней версии.
-
Установка пакета
apache2и его автоматический запуск. -
Установка пакетов
mysql-serverиpython3-mysqldb. -
Запуск скрипта безопасности базы данных
/tmp/secure_mysql.sh, который: -
Устанавливает пароль
adminдля пользователяroot. -
Удаляет анонимных пользователей.
-
Запрещает удаленный вход для
root. -
Удаляет тестовую базу данных.
-
Установка пакетов PHP:
php-fpm,php-mysql,php-cli,libapache2-mod-php. -
Установка
phpmyadminи создание символической ссылки/var/www/html/phpmyadmin. -
Создание пользователя базы данных
adminс паролемadminи полными правами доступа. -
Настройка базовой аутентификации для phpMyAdmin через файл
.htaccessи создание файла паролей/etc/phpmyadmin/.htpasswd. -
Очистка конфигурации сайта по умолчанию Apache и настройка конфигурации phpMyAdmin через символические ссылки в
/etc/apache2/conf-enabled/. -
Установка
certbotи плагинаpython3-certbot-apache. -
Получение SSL-сертификата для домена, сформированного по шаблону
lamp{hostid}.hostkey.in.
Установка TeamSpeak 3:
-
Создание пользователя системы с оболочкой
/bin/falseи домашней директорией. -
Создание необходимых каталогов с правами доступа
0700. -
Развертывание конфигурационного файла
ts3server.iniи файлов списков IP. -
Создание файла службы systemd для управления сервером.
-
Определение последней доступной версии сервера через анализ содержимого репозитория.
-
Скачивание и распаковка архива последней версии в отдельную директорию.
-
Создание символической ссылки на текущую версию сервера.
-
Создание резервной копии базы данных SQLite перед обновлением.
-
Копирование скрипта запуска и создание символических ссылок на файлы сервера.
-
Установка прав исполнения на исполняемые файлы.
Права доступа и безопасность¶
Брандмауэр и сетевая безопасность:
-
В конфигурации TeamSpeak 3 предусмотрены настройки для управления портами через
firewalld, однако в текущем скрипте они закомментированы. -
Для phpMyAdmin настроена защита через HTTP Basic Authentication с использованием файла
/etc/phpmyadmin/.htpasswd. -
Доступ к административному интерфейсу phpMyAdmin разрешен только для пользователя
adminс паролемadmin.
Безопасность базы данных:
-
Пароль суперпользователя MySQL установлен на
admin. -
Анонимные пользователи удалены.
-
Удаленный вход для
rootзапрещен. -
Тестовая база данных удалена.
Права на файлы:
-
Директории TeamSpeak 3 (
files,logs,server,backup) имеют права0700и принадлежат специальному пользователю. -
Конфигурационные файлы имеют права
0600. -
Исполняемые файлы имеют права
0700. -
Файл службы systemd имеет права
0644.
Базы данных¶
MySQL:
-
Сервер базы данных установлен локально.
-
Создан пользователь
adminс паролемadminи правамиALLна все базы данных (*.*). -
База данных используется для хранения данных phpMyAdmin и, при необходимости, других приложений.
TeamSpeak 3:
-
Использует локальную базу данных SQLite.
-
Путь к файлу базы данных:
<ts_home>/<имя_файла_бд>. -
При обновлении сервера автоматически создается резервная копия базы данных в каталоге
<ts_home>/backup/.
Контейнеры Docker и их запуск¶
В предоставленных конфигурационных файлах не используется технология контейнеризации Docker. Развертывание осуществляется через прямую установку пакетов и управление службами через systemd.
Прокси серверы¶
Apache:
-
Веб-сервер Apache выступает в роли основного сервера и прокси для phpMyAdmin.
-
Конфигурация сайта по умолчанию очищена.
-
Настроена конфигурация phpMyAdmin через файл
phpmyadmin.conf, который активируется через символическую ссылку в/etc/apache2/conf-enabled/. -
Для домена
lamp{hostid}.hostkey.inавтоматически получен и настроен SSL-сертификат черезcertbot. -
После получения сертификата служба Apache перезапускается для применения изменений.
Настройки прав¶
Права доступа на файлы и директории устанавливаются следующим образом:
-
Директория домашней папки пользователя TeamSpeak и все вложенные файлы рекурсивно передаются в собственность пользователю и группе, созданным для сервиса.
-
Конфигурационные файлы (
ts3server.ini, списки IP) имеют права чтения и записи только для владельца (0600). -
Директории данных (
files,logs,server,backup) имеют права доступа только для владельца (0700). -
Файл службы systemd имеет права чтения для всех (
0644). -
Исполняемые файлы сервера имеют права на выполнение только для владельца (
0700). -
Файл
.htpasswdдля phpMyAdmin создается с правами, позволяющими Apache читать его.
Запуск, остановка и обновление¶
Управление службой Apache:
-
Запуск и включение в автозагрузку:
systemctl start apache2иsystemctl enable apache2. -
Перезапуск для применения конфигурации:
systemctl restart apache2.
Управление службой TeamSpeak 3:
-
Служба управляется через
systemdс именем, соответствующим переменнойts_service. -
Запуск службы:
systemctl start <ts_service>. -
Остановка службы:
systemctl stop <ts_service>. -
Перезапуск службы:
systemctl restart <ts_service>. -
Обновление службы происходит автоматически при обнаружении новой версии в репозитории:
-
Служба останавливается.
-
Скачивается и распаковывается новая версия.
-
Обновляется символическая ссылка на текущую версию.
-
Служба запускается.
Получение токена администратора TeamSpeak 3:
-
После первого запуска сервера токен администратора извлекается из файла лога
<ts_home>/logs/ts3server_1.log. -
Токен сохраняется в файл
/root/admintocken_teamspeak.out.