setup-4wp.sh
· 2.4 KiB · Bash
Неформатований
#!/bin/bash
# Създаване на директории
mkdir -p {wp1,wp2,wp3,wp4,php-inis,envs,mysql-init}
# SQL за инициализация на базите
cat > mysql-init/init.sql <<EOF
CREATE DATABASE IF NOT EXISTS wordpress1;
CREATE DATABASE IF NOT EXISTS wordpress2;
CREATE DATABASE IF NOT EXISTS wordpress3;
CREATE DATABASE IF NOT EXISTS wordpress4;
CREATE USER IF NOT EXISTS 'wpuser'@'%' IDENTIFIED BY 'wppassword';
GRANT ALL PRIVILEGES ON wordpress1.* TO 'wpuser'@'%';
GRANT ALL PRIVILEGES ON wordpress2.* TO 'wpuser'@'%';
GRANT ALL PRIVILEGES ON wordpress3.* TO 'wpuser'@'%';
GRANT ALL PRIVILEGES ON wordpress4.* TO 'wpuser'@'%';
FLUSH PRIVILEGES;
EOF
# php.ini файлове
for i in {1..4}; do
cat > "php-inis/php${i}.ini" <<EOF
upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
EOF
done
# .env файлове
for i in {1..4}; do
cat > "envs/wp${i}.env" <<EOF
WP_DEBUG=false
WP_DEBUG_LOG=false
WP_DEBUG_DISPLAY=false
WP_HOME=http://your-server-ip:809$((i-1))
WP_SITEURL=http://your-server-ip:809$((i-1))
EOF
done
# docker-compose.yml
cat > docker-compose.yml <<EOF
version: '3.8'
services:
db:
image: mysql:5.7
container_name: wp_mysql
networks:
wp_network:
ipv4_address: 10.110.112.5
volumes:
- db_data:/var/lib/mysql
- ./mysql-init:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
restart: unless-stopped
$(for i in {1..4}; do
port=$((8090 + i - 1))
ip=$((10 + i - 1))
cat <<WPEOF
wordpress${i}:
image: wordpress:php7.4-apache
container_name: wp_site${i}
networks:
wp_network:
ipv4_address: 10.110.112.${ip}
ports:
- "${port}:80"
volumes:
- ./wp${i}:/var/www/html
- ./php-inis/php${i}.ini:/usr/local/etc/php/conf.d/custom-php.ini
- ./envs/wp${i}.env:/var/www/html/.env
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress${i}
depends_on:
- db
restart: unless-stopped
WPEOF
done)
networks:
wp_network:
driver: bridge
ipam:
config:
- subnet: 10.110.112.0/24
volumes:
db_data:
EOF
echo "Скриптът завърши успешно!"
echo "Стартирайте с: docker-compose up -d"
| 1 | #!/bin/bash |
| 2 | |
| 3 | # Създаване на директории |
| 4 | mkdir -p {wp1,wp2,wp3,wp4,php-inis,envs,mysql-init} |
| 5 | |
| 6 | # SQL за инициализация на базите |
| 7 | cat > mysql-init/init.sql <<EOF |
| 8 | CREATE DATABASE IF NOT EXISTS wordpress1; |
| 9 | CREATE DATABASE IF NOT EXISTS wordpress2; |
| 10 | CREATE DATABASE IF NOT EXISTS wordpress3; |
| 11 | CREATE DATABASE IF NOT EXISTS wordpress4; |
| 12 | |
| 13 | CREATE USER IF NOT EXISTS 'wpuser'@'%' IDENTIFIED BY 'wppassword'; |
| 14 | GRANT ALL PRIVILEGES ON wordpress1.* TO 'wpuser'@'%'; |
| 15 | GRANT ALL PRIVILEGES ON wordpress2.* TO 'wpuser'@'%'; |
| 16 | GRANT ALL PRIVILEGES ON wordpress3.* TO 'wpuser'@'%'; |
| 17 | GRANT ALL PRIVILEGES ON wordpress4.* TO 'wpuser'@'%'; |
| 18 | FLUSH PRIVILEGES; |
| 19 | EOF |
| 20 | |
| 21 | # php.ini файлове |
| 22 | for i in {1..4}; do |
| 23 | cat > "php-inis/php${i}.ini" <<EOF |
| 24 | upload_max_filesize = 64M |
| 25 | post_max_size = 64M |
| 26 | memory_limit = 256M |
| 27 | max_execution_time = 300 |
| 28 | EOF |
| 29 | done |
| 30 | |
| 31 | # .env файлове |
| 32 | for i in {1..4}; do |
| 33 | cat > "envs/wp${i}.env" <<EOF |
| 34 | WP_DEBUG=false |
| 35 | WP_DEBUG_LOG=false |
| 36 | WP_DEBUG_DISPLAY=false |
| 37 | WP_HOME=http://your-server-ip:809$((i-1)) |
| 38 | WP_SITEURL=http://your-server-ip:809$((i-1)) |
| 39 | EOF |
| 40 | done |
| 41 | |
| 42 | # docker-compose.yml |
| 43 | cat > docker-compose.yml <<EOF |
| 44 | version: '3.8' |
| 45 | |
| 46 | services: |
| 47 | db: |
| 48 | image: mysql:5.7 |
| 49 | container_name: wp_mysql |
| 50 | networks: |
| 51 | wp_network: |
| 52 | ipv4_address: 10.110.112.5 |
| 53 | volumes: |
| 54 | - db_data:/var/lib/mysql |
| 55 | - ./mysql-init:/docker-entrypoint-initdb.d |
| 56 | environment: |
| 57 | MYSQL_ROOT_PASSWORD: rootpassword |
| 58 | MYSQL_USER: wpuser |
| 59 | MYSQL_PASSWORD: wppassword |
| 60 | restart: unless-stopped |
| 61 | |
| 62 | $(for i in {1..4}; do |
| 63 | port=$((8090 + i - 1)) |
| 64 | ip=$((10 + i - 1)) |
| 65 | cat <<WPEOF |
| 66 | wordpress${i}: |
| 67 | image: wordpress:php7.4-apache |
| 68 | container_name: wp_site${i} |
| 69 | networks: |
| 70 | wp_network: |
| 71 | ipv4_address: 10.110.112.${ip} |
| 72 | ports: |
| 73 | - "${port}:80" |
| 74 | volumes: |
| 75 | - ./wp${i}:/var/www/html |
| 76 | - ./php-inis/php${i}.ini:/usr/local/etc/php/conf.d/custom-php.ini |
| 77 | - ./envs/wp${i}.env:/var/www/html/.env |
| 78 | environment: |
| 79 | WORDPRESS_DB_HOST: db |
| 80 | WORDPRESS_DB_USER: wpuser |
| 81 | WORDPRESS_DB_PASSWORD: wppassword |
| 82 | WORDPRESS_DB_NAME: wordpress${i} |
| 83 | depends_on: |
| 84 | - db |
| 85 | restart: unless-stopped |
| 86 | |
| 87 | WPEOF |
| 88 | done) |
| 89 | |
| 90 | networks: |
| 91 | wp_network: |
| 92 | driver: bridge |
| 93 | ipam: |
| 94 | config: |
| 95 | - subnet: 10.110.112.0/24 |
| 96 | |
| 97 | volumes: |
| 98 | db_data: |
| 99 | EOF |
| 100 | |
| 101 | echo "Скриптът завърши успешно!" |
| 102 | echo "Стартирайте с: docker-compose up -d" |