install_wp.sh
· 2.7 KiB · Bash
Ham
#!/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" |