Last active 1752999136

Скрипт за автоматично инсталиране на 4 WordPress сайта с Docker Compose.

urocibg revised this gist 1752999135. Go to revision

1 file changed, 62 insertions

init.sh(file created)

@@ -0,0 +1,62 @@
1 + #!/bin/bash
2 +
3 + # shell скрипт за изпълнение на командите и създаване на файлове
4 +
5 + # Създаване на директории
6 + mkdir -p {wp1,wp2,wp3,wp4,php-inis,envs,mysql-init}
7 +
8 + # Генериране на init.sql
9 + cat > mysql-init/init.sql <<'SQL'
10 + CREATE DATABASE IF NOT EXISTS wordpress1;
11 + CREATE DATABASE IF NOT EXISTS wordpress2;
12 + CREATE DATABASE IF NOT EXISTS wordpress3;
13 + CREATE DATABASE IF NOT EXISTS wordpress4;
14 +
15 + CREATE USER IF NOT EXISTS 'wpuser'@'%' IDENTIFIED BY 'wppassword';
16 + GRANT ALL PRIVILEGES ON wordpress1.* TO 'wpuser'@'%';
17 + GRANT ALL PRIVILEGES ON wordpress2.* TO 'wpuser'@'%';
18 + GRANT ALL PRIVILEGES ON wordpress3.* TO 'wpuser'@'%';
19 + GRANT ALL PRIVILEGES ON wordpress4.* TO 'wpuser'@'%';
20 + FLUSH PRIVILEGES;
21 + SQL
22 +
23 + # Генериране на docker-compose.yml
24 + cat > docker-compose.yml <<'YAML'
25 + version: '3.8'
26 +
27 + services:
28 + db:
29 + image: mysql:5.7
30 + volumes:
31 + - db_data:/var/lib/mysql
32 + - ./mysql-init:/docker-entrypoint-initdb.d
33 + environment:
34 + MYSQL_ROOT_PASSWORD: rootpassword
35 + MYSQL_USER: wpuser
36 + MYSQL_PASSWORD: wppassword
37 + networks:
38 + wp_network:
39 +
40 + wordpress1:
41 + image: wordpress:php8.1-apache
42 + ports: ["8090:80"]
43 + volumes:
44 + - ./wp1:/var/www/html
45 + environment:
46 + WORDPRESS_DB_HOST: db
47 + WORDPRESS_DB_USER: wpuser
48 + WORDPRESS_DB_PASSWORD: wppassword
49 + WORDPRESS_DB_NAME: wordpress1
50 + networks:
51 + wp_network:
52 + depends_on:
53 + - db
54 +
55 + networks:
56 + wp_network:
57 +
58 + volumes:
59 + db_data:
60 + YAML
61 +
62 + echo "Конфигурацията е готова! Стартирайте с: docker-compose up -d"

urocibg revised this gist 1752998921. Go to revision

1 file changed, 61 insertions, 10 deletions

setup-4wp.sh

@@ -18,28 +18,75 @@ GRANT ALL PRIVILEGES ON wordpress4.* TO 'wpuser'@'%';
18 18 FLUSH PRIVILEGES;
19 19 EOF
20 20
21 - # php.ini файлове
21 + # php.ini файлове с актуални настройки
22 22 for i in {1..4}; do
23 23 cat > "php-inis/php${i}.ini" <<EOF
24 + memory_limit = 256M
24 25 upload_max_filesize = 64M
25 26 post_max_size = 64M
26 - memory_limit = 256M
27 27 max_execution_time = 300
28 + opcache.enable=1
29 + opcache.memory_consumption=128
30 + opcache.max_accelerated_files=4000
28 31 EOF
29 32 done
30 33
31 - # .env файлове
34 + # Правилна конфигурация за WordPress (wp-config.php)
32 35 for i in {1..4}; do
33 36 cat > "envs/wp${i}.env" <<EOF
37 + # Environment variables for WordPress ${i}
38 + DB_NAME=wordpress${i}
39 + DB_USER=wpuser
40 + DB_PASSWORD=wppassword
41 + DB_HOST=db
42 +
34 43 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))
44 + WP_ENVIRONMENT_TYPE=production
39 45 EOF
46 +
47 + # Генериране на wp-config.php с поддръжка на .env
48 + cat > "wp${i}/wp-config.php" <<'WPCONFIG'
49 + <?php
50 + // Load .env file if exists
51 + if (file_exists(__DIR__.'/.env')) {
52 + $env = parse_ini_file(__DIR__.'/.env');
53 + foreach ($env as $key => $value) {
54 + putenv("$key=$value");
55 + }
56 + }
57 +
58 + // Database settings
59 + define('DB_NAME', getenv('DB_NAME'));
60 + define('DB_USER', getenv('DB_USER'));
61 + define('DB_PASSWORD', getenv('DB_PASSWORD'));
62 + define('DB_HOST', getenv('DB_HOST'));
63 +
64 + // Security keys
65 + define('AUTH_KEY', ',V~U;_JxY)0?e}@)/r+!i)L-2x][&9GD!)0-e6f+=^R9wIAO%1HGA`Sf@fbC{{d-');
66 + define('SECURE_AUTH_KEY', 'zoNHd%qu+H2FkWeRQXvZ[M<Ipsd2qHG/KnTy]S]MumWjxN_^M_r{p:mqYG+ZJL9>');
67 + define('LOGGED_IN_KEY', 'yx+HS[<(j+|Hg{(e3j~}GB>8m2%qu:W;V*+@&w|-;-~FA7+#T4rLfoC.:#}OJ+:o');
68 + define('NONCE_KEY', ':J$p)Q4@+-,t5WTyP|Wxx|:J-5ZJXx84{$!JxgM|4U]fTkvia-9:LHTaGRRa/VX;');
69 + define('AUTH_SALT', '}M>0+l?TUo#r[AUV^! *#@n8]tP1+UiB4uTf bNJ/ife~jP%-ixn; UY<FmRp%O:');
70 + define('SECURE_AUTH_SALT', 'b-j!{nf96#AL.[^2K<F~A49/h^r.M&^|&?U/^G6_sBMk4n5^::/Ed,jo4fn mdPU');
71 + define('LOGGED_IN_SALT', '~h;zO| hO.GL$DJ<ZkAK?rm{+Y:-A@LY|_,hmI6)yHBl(q|WW:+cwL+Sn:|+{$sl');
72 + define('NONCE_SALT', '|YkAjobA~YA6h$6;gspFz<)]-J!@ODo9^Y+2|4Q|.b,5.nGr;ghc#X>P+R=2cS:%');
73 +
74 + // WordPress settings
75 + define('WP_DEBUG', filter_var(getenv('WP_DEBUG'), FILTER_VALIDATE_BOOLEAN));
76 + define('WP_ENVIRONMENT_TYPE', getenv('WP_ENVIRONMENT_TYPE') ?: 'production');
77 +
78 + \$table_prefix = 'wp_';
79 +
80 + // Absolute path to the WordPress directory
81 + if (!defined('ABSPATH')) {
82 + define('ABSPATH', __DIR__ . '/');
83 + }
84 +
85 + require_once ABSPATH . 'wp-settings.php';
86 + WPCONFIG
40 87 done
41 88
42 - # docker-compose.yml
89 + # docker-compose.yml с актуален PHP 8.1
43 90 cat > docker-compose.yml <<EOF
44 91 version: '3.8'
45 92
@@ -64,7 +111,7 @@ $(for i in {1..4}; do
64 111 ip=$((10 + i - 1))
65 112 cat <<WPEOF
66 113 wordpress${i}:
67 - image: wordpress:php7.4-apache
114 + image: wordpress:php8.1-apache
68 115 container_name: wp_site${i}
69 116 networks:
70 117 wp_network:
@@ -99,4 +146,8 @@ volumes:
99 146 EOF
100 147
101 148 echo "Скриптът завърши успешно!"
102 - echo "Стартирайте с: docker-compose up -d"
149 + echo "Стартирайте с: docker compose up -d"
150 + echo "Сайтовете ще са достъпни на:"
151 + echo "http://<ваш-ip>:8090 до http://<ваш-ip>:8093"
152 + echo "Може да ви е интересно да видите още скриптове на:"
153 + echo "https://urocibg.eu/category/scripts/"

urocibg revised this gist 1752996486. Go to revision

1 file changed, 102 insertions

setup-4wp.sh(file created)

@@ -0,0 +1,102 @@
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"
Newer Older