install_wp.sh
· 2.7 KiB · Bash
原始文件
#!/bin/bash
# Автор: Федя Серафиев (модифициран за стабилни версии)
# ====== ВХОДНИ ДАННИ ОТ ПОТРЕБИТЕЛЯ ======
read -p "👉 Въведи име за сайта (използва се за име на контейнерите, volumes и мрежа): " SITE_NAME
SITE_NAME=$(echo "$SITE_NAME" | tr -d ' ')
read -p "👉 Въведи външен порт за достъп до WordPress (напр. 8080): " HOST_PORT
HOST_PORT=${HOST_PORT:-8080}
# ====== ПАРОЛИ И ПАРАМЕТРИ ======
MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16)
MYSQL_DATABASE="wordpress"
MYSQL_USER="wpuser"
MYSQL_PASSWORD=$(openssl rand -base64 16)
# ====== СТРУКТУРА НА ПАПКИТЕ ======
mkdir -p "$SITE_NAME"/{config,wordpress,db_data}
cd "$SITE_NAME"
# ====== .env ФАЙЛ ======
cat > .env <<EOF
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE=${MYSQL_DATABASE}
MYSQL_USER=${MYSQL_USER}
MYSQL_PASSWORD=${MYSQL_PASSWORD}
WORDPRESS_DB_HOST=${SITE_NAME}_db:3306
EOF
# ====== config/php.ini ======
cat > config/php.ini <<EOF
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
EOF
# ====== docker-compose.yml ======
cat > docker-compose.yml <<EOF
version: '3.8'
services:
${SITE_NAME}_db:
image: mysql:5.7
container_name: ${SITE_NAME}_db
restart: always
volumes:
- ./db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: \${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: \${MYSQL_DATABASE}
MYSQL_USER: \${MYSQL_USER}
MYSQL_PASSWORD: \${MYSQL_PASSWORD}
networks:
- ${SITE_NAME}_net
${SITE_NAME}_wp:
image: wordpress:6.4-php8.1-apache
container_name: ${SITE_NAME}_wp
depends_on:
- ${SITE_NAME}_db
ports:
- "${HOST_PORT}:80"
restart: always
volumes:
- ./wordpress:/var/www/html
- ./config/php.ini:/usr/local/etc/php/conf.d/custom.ini
environment:
WORDPRESS_DB_HOST: \${WORDPRESS_DB_HOST}
WORDPRESS_DB_NAME: \${MYSQL_DATABASE}
WORDPRESS_DB_USER: \${MYSQL_USER}
WORDPRESS_DB_PASSWORD: \${MYSQL_PASSWORD}
networks:
- ${SITE_NAME}_net
networks:
${SITE_NAME}_net:
driver: bridge
EOF
# ====== ИНФОРМАЦИЯ ======
echo
echo "✅ WordPress инстанция \"$SITE_NAME\" е готова."
echo "📁 Файловете на сайта са в: $(pwd)/wordpress"
echo "🌐 Достъп: http://localhost:${HOST_PORT}"
echo "🔐 Данни за база данни (в .env):"
echo "MYSQL_USER=${MYSQL_USER}"
echo "MYSQL_PASSWORD=${MYSQL_PASSWORD}"
echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}"
echo ""
echo "🚀 Стартирай сайта със: docker compose up -d"
| 1 | #!/bin/bash |
| 2 | |
| 3 | # Автор: Федя Серафиев (модифициран за стабилни версии) |
| 4 | |
| 5 | # ====== ВХОДНИ ДАННИ ОТ ПОТРЕБИТЕЛЯ ====== |
| 6 | read -p "👉 Въведи име за сайта (използва се за име на контейнерите, volumes и мрежа): " SITE_NAME |
| 7 | SITE_NAME=$(echo "$SITE_NAME" | tr -d ' ') |
| 8 | |
| 9 | read -p "👉 Въведи външен порт за достъп до WordPress (напр. 8080): " HOST_PORT |
| 10 | HOST_PORT=${HOST_PORT:-8080} |
| 11 | |
| 12 | # ====== ПАРОЛИ И ПАРАМЕТРИ ====== |
| 13 | MYSQL_ROOT_PASSWORD=$(openssl rand -base64 16) |
| 14 | MYSQL_DATABASE="wordpress" |
| 15 | MYSQL_USER="wpuser" |
| 16 | MYSQL_PASSWORD=$(openssl rand -base64 16) |
| 17 | |
| 18 | # ====== СТРУКТУРА НА ПАПКИТЕ ====== |
| 19 | mkdir -p "$SITE_NAME"/{config,wordpress,db_data} |
| 20 | cd "$SITE_NAME" |
| 21 | |
| 22 | # ====== .env ФАЙЛ ====== |
| 23 | cat > .env <<EOF |
| 24 | MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} |
| 25 | MYSQL_DATABASE=${MYSQL_DATABASE} |
| 26 | MYSQL_USER=${MYSQL_USER} |
| 27 | MYSQL_PASSWORD=${MYSQL_PASSWORD} |
| 28 | WORDPRESS_DB_HOST=${SITE_NAME}_db:3306 |
| 29 | EOF |
| 30 | |
| 31 | # ====== config/php.ini ====== |
| 32 | cat > config/php.ini <<EOF |
| 33 | upload_max_filesize = 64M |
| 34 | post_max_size = 64M |
| 35 | memory_limit = 256M |
| 36 | EOF |
| 37 | |
| 38 | # ====== docker-compose.yml ====== |
| 39 | cat > docker-compose.yml <<EOF |
| 40 | version: '3.8' |
| 41 | |
| 42 | services: |
| 43 | ${SITE_NAME}_db: |
| 44 | image: mysql:5.7 |
| 45 | container_name: ${SITE_NAME}_db |
| 46 | restart: always |
| 47 | volumes: |
| 48 | - ./db_data:/var/lib/mysql |
| 49 | environment: |
| 50 | MYSQL_ROOT_PASSWORD: \${MYSQL_ROOT_PASSWORD} |
| 51 | MYSQL_DATABASE: \${MYSQL_DATABASE} |
| 52 | MYSQL_USER: \${MYSQL_USER} |
| 53 | MYSQL_PASSWORD: \${MYSQL_PASSWORD} |
| 54 | networks: |
| 55 | - ${SITE_NAME}_net |
| 56 | |
| 57 | ${SITE_NAME}_wp: |
| 58 | image: wordpress:6.4-php8.1-apache |
| 59 | container_name: ${SITE_NAME}_wp |
| 60 | depends_on: |
| 61 | - ${SITE_NAME}_db |
| 62 | ports: |
| 63 | - "${HOST_PORT}:80" |
| 64 | restart: always |
| 65 | volumes: |
| 66 | - ./wordpress:/var/www/html |
| 67 | - ./config/php.ini:/usr/local/etc/php/conf.d/custom.ini |
| 68 | environment: |
| 69 | WORDPRESS_DB_HOST: \${WORDPRESS_DB_HOST} |
| 70 | WORDPRESS_DB_NAME: \${MYSQL_DATABASE} |
| 71 | WORDPRESS_DB_USER: \${MYSQL_USER} |
| 72 | WORDPRESS_DB_PASSWORD: \${MYSQL_PASSWORD} |
| 73 | networks: |
| 74 | - ${SITE_NAME}_net |
| 75 | |
| 76 | networks: |
| 77 | ${SITE_NAME}_net: |
| 78 | driver: bridge |
| 79 | EOF |
| 80 | |
| 81 | # ====== ИНФОРМАЦИЯ ====== |
| 82 | echo |
| 83 | echo "✅ WordPress инстанция \"$SITE_NAME\" е готова." |
| 84 | echo "📁 Файловете на сайта са в: $(pwd)/wordpress" |
| 85 | echo "🌐 Достъп: http://localhost:${HOST_PORT}" |
| 86 | echo "🔐 Данни за база данни (в .env):" |
| 87 | echo "MYSQL_USER=${MYSQL_USER}" |
| 88 | echo "MYSQL_PASSWORD=${MYSQL_PASSWORD}" |
| 89 | echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |
| 90 | echo "" |
| 91 | echo "🚀 Стартирай сайта със: docker compose up -d" |