Обзор развертывания 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: 1. Обновление всех пакетов системы до последней версии. 2. Установка пакета apache2 и его автоматический запуск. 3. Установка пакетов mysql-server и python3-mysqldb. 4. Запуск скрипта безопасности базы данных /tmp/secure_mysql.sh, который: - Устанавливает пароль admin для пользователя root. - Удаляет анонимных пользователей. - Запрещает удаленный вход для root. - Удаляет тестовую базу данных. 5. Установка пакетов PHP: php-fpm, php-mysql, php-cli, libapache2-mod-php. 6. Установка phpmyadmin и создание символической ссылки /var/www/html/phpmyadmin. 7. Создание пользователя базы данных admin с паролем admin и полными правами доступа. 8. Настройка базовой аутентификации для phpMyAdmin через файл .htaccess и создание файла паролей /etc/phpmyadmin/.htpasswd. 9. Очистка конфигурации сайта по умолчанию Apache и настройка конфигурации phpMyAdmin через символические ссылки в /etc/apache2/conf-enabled/. 10. Установка certbot и плагина python3-certbot-apache. 11. Получение SSL-сертификата для домена, сформированного по шаблону lamp{hostid}.hostkey.in.
Установка TeamSpeak 3: 1. Создание пользователя системы с оболочкой /bin/false и домашней директорией. 2. Создание необходимых каталогов с правами доступа 0700. 3. Развертывание конфигурационного файла ts3server.ini и файлов списков IP. 4. Создание файла службы systemd для управления сервером. 5. Определение последней доступной версии сервера через анализ содержимого репозитория. 6. Скачивание и распаковка архива последней версии в отдельную директорию. 7. Создание символической ссылки на текущую версию сервера. 8. Создание резервной копии базы данных SQLite перед обновлением. 9. Копирование скрипта запуска и создание символических ссылок на файлы сервера. 10. Установка прав исполнения на исполняемые файлы.
Права доступа и безопасность¶
Брандмауэр и сетевая безопасность: - В конфигурации 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>. - Обновление службы происходит автоматически при обнаружении новой версии в репозитории: 1. Служба останавливается. 2. Скачивается и распаковывается новая версия. 3. Обновляется символическая ссылка на текущую версию. 4. Служба запускается.
Получение токена администратора TeamSpeak 3: - После первого запуска сервера токен администратора извлекается из файла лога <ts_home>/logs/ts3server_1.log. - Токен сохраняется в файл /root/admintocken_teamspeak.out.