WordPress Multi-Site Manager

Създаването на множество WordPress сайтове на един сървър често е свързано с повтарящи се стъпки – изтегляне на WordPress, настройка на база данни, конфигуриране на Apache или Docker, .env, php.ini, редакция на wp-config.php, права на файлове и още куп детайли. За да спестим време и усилия, създадох Bash скрипт който автоматизира напълно този процес.
Това е мениджър система, която лесно създава един или множество WordPress сайтове.
Инсталация:
# 1. Създай файла
nano wp-manager.sh
# 2. Свали скрипта
wget https://gist.fedia.eu/urocibg/56bbcb17fb434d388837cc88079cc007/raw/HEAD/wp-manager.sh
# 3. Направи го изпълним
chmod +x wp-manager.sh
# 4. Добави Docker права (само първи път)
sudo usermod -aG docker $USER
newgrp docker
📋 Основни команди
Създаване на нов сайт
./wp-manager.sh create mysite
- Автоматично генерира пароли
- Намира свободен порт
- Стартира MySQL + WordPress
- Готово за ползване след 30-60 секунди
Списък с всички сайтове
./wp-manager.sh list
- Показва активни (●) и спрени (○) сайтове
- Показва портовете на всеки сайт
Информация за сайт (ВАЖНО!)
./wp-manager.sh info mysite
ТУК СА ВСИЧКИ ПАРОЛИ И ДАННИ:
- URL на сайта
- Admin потребител и парола
- MySQL креденшъли
- Локация на файловете
Спиране на сайт
./wp-manager.sh stop mysite
Спира контейнерите, но запазва данните
Стартиране на сайт
./wp-manager.sh start mysite
Стартира спрян сайт
Изтриване на сайт
./wp-manager.sh delete mysite
ВНИМАНИЕ: Изтрива всичко – файлове, база данни, всичко! Ще поиска потвърждение (трябва да напишеш yes)

Помощ
./wp-manager.sh help
🌐 Как да отворя сайта
Локално (на същата машина):
http://localhost:8080
От друг компютър в мрежата:
http://10.20.20.79:8080
(Замени с твоя IP и порт)
WordPress Admin:
http://10.20.20.79:8080/wp-admin
Портът зависи от сайта! Виж го с:
./wp-manager.sh list # или
./wp-manager.sh info mysite
🔥 Отваряне на портове във firewall
Ако не можеш да достъпиш сайта отвън:
# За UFW (Ubuntu/Debian)
sudo ufw allow 8080/tcp
sudo ufw allow 8081/tcp
sudo ufw allow 8082/tcp
# За Firewalld (CentOS/RHEL)
sudo firewall-cmd --add-port=8080-8090/tcp --permanent
sudo firewall-cmd --reload
# Провери статуса
sudo ufw status
# или
sudo firewall-cmd --list-ports
📁 Структура на файловете
.
├── wp-manager.sh # Главният скрипт
├── README.md # Този файл
└── sites/ # Всички сайтове са тук
├── mysite/
│ ├── docker-compose.yml
│ ├── .env # ПАРОЛИ И НАСТРОЙКИ
│ ├── php.ini # PHP конфигурация
│ ├── wordpress/ # WordPress файлове
│ └── mysql/ # MySQL база данни
├── site2/
└── site3/
🔧 Работа с файловете на сайта
WordPress файлове:
cd sites/mysite/wordpress
Тук са всички WordPress файлове (themes, plugins, uploads)
Backup на сайт:
# Архивирай целия сайт
tar -czf mysite-backup.tar.gz sites/mysite/
# Възстанови
tar -xzf mysite-backup.tar.gz
./wp-manager.sh start mysite
Преглед на логове:
cd sites/mysite
docker-compose logs -f wordpress # WordPress логове
docker-compose logs -f db # MySQL логове
💡 Примерни сценарии
Създаване на 3 тестови сайта наведнъж:
./wp-manager.sh create test1
./wp-manager.sh create test2
./wp-manager.sh create test3
./wp-manager.sh list
Временно спиране на сайт:
./wp-manager.sh stop test2
# ... работиш по друго ...
./wp-manager.sh start test2
Виждане на всички пароли за сайт:
./wp-manager.sh info test1
# или директно
cat sites/test1/.env
Production deployment:
# Създай сайта
./wp-manager.sh create production
# Вземи данните
./wp-manager.sh info production
# Отвори порта
sudo ufw allow 8080/tcp
# Готово! http://your-server-ip:8080
⚙️ PHP настройки
Всеки сайт има php.ini с оптимизирани настройки:
- Upload limit: 256MB
- Memory limit: 512MB
- Execution time: 300 секунди
- Max vars: 3000
Можеш да ги промениш в sites/mysite/php.ini и рестартираш:
./wp-manager.sh stop mysite
./wp-manager.sh start mysite
🔒 Сигурност
- Паролите се генерират автоматично и са 25 символа
- MySQL не е достъпна отвън (само за WordPress)
- Всеки сайт е изолиран в собствена Docker мрежа
- .env файловете съдържат чувствителни данни – не ги качвай в Git!
За production:
# Променете admin паролата след първо влизане!
# Инсталирайте SSL сертификат
# Добавете .htaccess за сигурност
🐛 Проблеми и решения
Сайтът не се отваря след създаване
# Изчакай 60 секунди за MySQL инициализация
# Провери дали контейнерите работят:
cd sites/mysite
docker-compose ps
Порт е зает
# Скриптът автоматично намира свободен порт
# Ако има проблем, спри стария сайт:
./wp-manager.sh stop oldsite
Permission denied
sudo chown -R $USER:$USER sites/
Docker not running
sudo systemctl start docker
sudo systemctl enable docker
База данни не се свързва
cd sites/mysite
docker-compose down
docker-compose up -d
# Изчакай 30 секунди
📊 Ресурси
- Документация: WordPress Docker
- Docker Compose: docs.docker.com
- PHP настройки: php.net
🎯 Бързи команди (за копиране)
# Нов сайт
./wp-manager.sh create mysite
# Виж пароли
./wp-manager.sh info mysite
# Списък
./wp-manager.sh list
# Отвори порт
sudo ufw allow 8080/tcp
# Логове
cd sites/mysite && docker-compose logs -f
# Backup
tar -czf backup.tar.gz sites/mysite/
📝 Бележки
- Всеки сайт използва около 500MB-1GB RAM
- MySQL данните са в
sites/mysite/mysql/ - WordPress файловете са в
sites/mysite/wordpress/ - Сайтовете са production-ready – можеш да ги използваш направо
- Не е нужен Nginx/Apache – Docker се грижи за всичко
Намерихте материала за полезен?
Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума.
Всяко дарение помага за поддръжката и развитието на портала.
