Метапакет в Debian/Ubuntu – это deb почти без своих файлов: в Depends перечислены нужные пакеты, а при установке apt подтягивает весь набор. Так устроены tasksel-пакеты и многие «сборки» в репозиториях. Ниже: зачем это нужно и как собрать свой метапакет под стек WordPress (Nginx + PHP + MySQL/MariaDB).
Что такое метапакет
Обычный пакет несёт бинарники, конфиги, man-страницы. Метапакет в первую очередь описывает зависимости. При установке apt/dpkg не «магически разворачивает WordPress», а ставит перечисленные пакеты так же, как при apt install nginx php-fpm .... Плюс – один воспроизводимый артефакт: одна команда, один список зависимостей, удобно для своего репозитория и golden image.
Зачем это используют
- Одна команда вместо десятка – одинаковый набор на нескольких серверах;
- Явный список стека – зависимости версионируются вместе с пакетом;
- Обновления – новый метапакет может подтянуть другие версии компонентов через Depends/Recommends.
Метапакет не заменяет Ansible или скрипты: конфиги Nginx, БД и сам WordPress всё равно настраиваются отдельно. Он закрывает только слой «какие deb нужны системе».
Собираем метапакет под WordPress-стек
Пример для Debian/Ubuntu: Nginx, сервер БД, PHP-FPM и модуль MySQL. Имена пакетов уточняйте под релиз (mysql-server vs mariadb-server, конкретная ветка php-fpm).
1. Структура каталога
У deb-пакета control-файл лежит в DEBIAN/control:
mkdir -p wordpress-meta/DEBIAN cd wordpress-meta
2. Файл control
cat > DEBIAN/control << 'EOF' Package: wordpress-meta Version: 1.0 Section: web Priority: optional Architecture: all Depends: nginx, mysql-server, php-fpm, php-mysql Maintainer: Your NameDescription: Meta package for WordPress stack dependencies Pulls in nginx, database server and PHP needed for a typical WP install. EOF
Architecture: all – пакет не содержит машинного кода. В Depends можно указать версии: nginx (>= 1.18), если это важно.
3. Сборка .deb
cd .. dpkg-deb --build wordpress-meta
Появится wordpress-meta.deb.
4. Установка
dpkg -i сам зависимости из репозиториев не дотягивает. Надёжнее через apt:
sudo apt update sudo apt install ./wordpress-meta.deb
Либо dpkg -i и затем apt -f install, чтобы закрыть незакрытые Depends. Проверка, что ключевые пакеты на месте:
dpkg -l nginx mysql-server php-fpm php-mysql # или dpkg -l | grep -E 'nginx|mysql-server|^ii php'
После метапакета: развёртывание WordPress
Метапакет поставил стек. Дальше – сам сайт: файлы, vhost, БД.
Скачать и положить файлы
wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo mv wordpress /var/www/html/
sudo chown -R www-data:www-data /var/www/html/wordpress
sudo find /var/www/html/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/html/wordpress -type f -exec chmod 644 {} \;
Конфиг Nginx
sudo nano /etc/nginx/sites-available/wordpress
Минимальный server-блок (путь к сокету PHP подставьте свой, например php8.3-fpm.sock):
server {
listen 80;
server_name your_domain_or_IP;
root /var/www/html/wordpress;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Включить сайт и перезагрузить Nginx:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
База данных
В консоли MySQL/MariaDB (пароль root/sudo по политике вашей системы):
CREATE DATABASE wordpress; CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost'; FLUSH PRIVILEGES;
Дальше веб-мастер: откройте http://your_domain_or_IP, укажите БД, логин и пароль. При необходимости скопируйте wp-config-sample.php в wp-config.php и пропишите доступ вручную.
На что обратить внимание
- имена пакетов зависят от дистрибутива: на Ubuntu 24.04 чаще MariaDB и php8.x;
- метапакет не настраивает firewall, SSL и бэкапы;
- для продакшена удобнее свой apt-репозиторий или Ansible, а .deb-метапакет – как «контракт» на стек.
Кратко
Метапакет – deb с зависимостями, а не с кодом приложения. Соберите DEBIAN/control, соберите через dpkg-deb, поставьте через apt install ./....deb, затем отдельно разложите WordPress, Nginx и БД. Один артефакт фиксирует «какой софт нужен серверу», а конфигурация остаётся под ваш сценарий.