WordPress Multi-Site Manager

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 секунди

📊 Ресурси


🎯 Бързи команди (за копиране)

# Нов сайт
./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 се грижи за всичко
open source spirit
🛠️
$

Намерихте материала за полезен?

Съдържанието на itpraktika.com е безплатно и ще остане такова.
Ако статията ти е помогнала — можеш да подкрепиш сайта с малка доброволна сума. Всяко дарение помага за поддръжката и развитието на портала.

PayPal Revolut

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *


Колко е 10 - 5 ? (въведете числото)