init.sh
· 1.6 KiB · Bash
Исходник
#!/bin/bash
# shell скрипт за изпълнение на командите и създаване на файлове
# Създаване на директории
mkdir -p {wp1,wp2,wp3,wp4,php-inis,envs,mysql-init}
# Генериране на init.sql
cat > mysql-init/init.sql <<'SQL'
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;
SQL
# Генериране на docker-compose.yml
cat > docker-compose.yml <<'YAML'
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
- ./mysql-init:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
networks:
wp_network:
wordpress1:
image: wordpress:php8.1-apache
ports: ["8090:80"]
volumes:
- ./wp1:/var/www/html
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress1
networks:
wp_network:
depends_on:
- db
networks:
wp_network:
volumes:
db_data:
YAML
echo "Конфигурацията е готова! Стартирайте с: docker-compose up -d"
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" |
setup-4wp.sh
· 4.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
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
EOF
done
# Правилна конфигурация за WordPress (wp-config.php)
for i in {1..4}; do
cat > "envs/wp${i}.env" <<EOF
# Environment variables for WordPress ${i}
DB_NAME=wordpress${i}
DB_USER=wpuser
DB_PASSWORD=wppassword
DB_HOST=db
WP_DEBUG=false
WP_ENVIRONMENT_TYPE=production
EOF
# Генериране на wp-config.php с поддръжка на .env
cat > "wp${i}/wp-config.php" <<'WPCONFIG'
<?php
// Load .env file if exists
if (file_exists(__DIR__.'/.env')) {
$env = parse_ini_file(__DIR__.'/.env');
foreach ($env as $key => $value) {
putenv("$key=$value");
}
}
// Database settings
define('DB_NAME', getenv('DB_NAME'));
define('DB_USER', getenv('DB_USER'));
define('DB_PASSWORD', getenv('DB_PASSWORD'));
define('DB_HOST', getenv('DB_HOST'));
// Security keys
define('AUTH_KEY', ',V~U;_JxY)0?e}@)/r+!i)L-2x][&9GD!)0-e6f+=^R9wIAO%1HGA`Sf@fbC{{d-');
define('SECURE_AUTH_KEY', 'zoNHd%qu+H2FkWeRQXvZ[M<Ipsd2qHG/KnTy]S]MumWjxN_^M_r{p:mqYG+ZJL9>');
define('LOGGED_IN_KEY', 'yx+HS[<(j+|Hg{(e3j~}GB>8m2%qu:W;V*+@&w|-;-~FA7+#T4rLfoC.:#}OJ+:o');
define('NONCE_KEY', ':J$p)Q4@+-,t5WTyP|Wxx|:J-5ZJXx84{$!JxgM|4U]fTkvia-9:LHTaGRRa/VX;');
define('AUTH_SALT', '}M>0+l?TUo#r[AUV^! *#@n8]tP1+UiB4uTf bNJ/ife~jP%-ixn; UY<FmRp%O:');
define('SECURE_AUTH_SALT', 'b-j!{nf96#AL.[^2K<F~A49/h^r.M&^|&?U/^G6_sBMk4n5^::/Ed,jo4fn mdPU');
define('LOGGED_IN_SALT', '~h;zO| hO.GL$DJ<ZkAK?rm{+Y:-A@LY|_,hmI6)yHBl(q|WW:+cwL+Sn:|+{$sl');
define('NONCE_SALT', '|YkAjobA~YA6h$6;gspFz<)]-J!@ODo9^Y+2|4Q|.b,5.nGr;ghc#X>P+R=2cS:%');
// WordPress settings
define('WP_DEBUG', filter_var(getenv('WP_DEBUG'), FILTER_VALIDATE_BOOLEAN));
define('WP_ENVIRONMENT_TYPE', getenv('WP_ENVIRONMENT_TYPE') ?: 'production');
\$table_prefix = 'wp_';
// Absolute path to the WordPress directory
if (!defined('ABSPATH')) {
define('ABSPATH', __DIR__ . '/');
}
require_once ABSPATH . 'wp-settings.php';
WPCONFIG
done
# docker-compose.yml с актуален PHP 8.1
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:php8.1-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"
echo "Сайтовете ще са достъпни на:"
echo "http://<ваш-ip>:8090 до http://<ваш-ip>:8093"
echo "Може да ви е интересно да видите още скриптове на:"
echo "https://urocibg.eu/category/scripts/"
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 | memory_limit = 256M |
25 | upload_max_filesize = 64M |
26 | post_max_size = 64M |
27 | max_execution_time = 300 |
28 | opcache.enable=1 |
29 | opcache.memory_consumption=128 |
30 | opcache.max_accelerated_files=4000 |
31 | EOF |
32 | done |
33 | |
34 | # Правилна конфигурация за WordPress (wp-config.php) |
35 | for i in {1..4}; do |
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 | |
43 | WP_DEBUG=false |
44 | WP_ENVIRONMENT_TYPE=production |
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 |
87 | done |
88 | |
89 | # docker-compose.yml с актуален PHP 8.1 |
90 | cat > docker-compose.yml <<EOF |
91 | version: '3.8' |
92 | |
93 | services: |
94 | db: |
95 | image: mysql:5.7 |
96 | container_name: wp_mysql |
97 | networks: |
98 | wp_network: |
99 | ipv4_address: 10.110.112.5 |
100 | volumes: |
101 | - db_data:/var/lib/mysql |
102 | - ./mysql-init:/docker-entrypoint-initdb.d |
103 | environment: |
104 | MYSQL_ROOT_PASSWORD: rootpassword |
105 | MYSQL_USER: wpuser |
106 | MYSQL_PASSWORD: wppassword |
107 | restart: unless-stopped |
108 | |
109 | $(for i in {1..4}; do |
110 | port=$((8090 + i - 1)) |
111 | ip=$((10 + i - 1)) |
112 | cat <<WPEOF |
113 | wordpress${i}: |
114 | image: wordpress:php8.1-apache |
115 | container_name: wp_site${i} |
116 | networks: |
117 | wp_network: |
118 | ipv4_address: 10.110.112.${ip} |
119 | ports: |
120 | - "${port}:80" |
121 | volumes: |
122 | - ./wp${i}:/var/www/html |
123 | - ./php-inis/php${i}.ini:/usr/local/etc/php/conf.d/custom-php.ini |
124 | - ./envs/wp${i}.env:/var/www/html/.env |
125 | environment: |
126 | WORDPRESS_DB_HOST: db |
127 | WORDPRESS_DB_USER: wpuser |
128 | WORDPRESS_DB_PASSWORD: wppassword |
129 | WORDPRESS_DB_NAME: wordpress${i} |
130 | depends_on: |
131 | - db |
132 | restart: unless-stopped |
133 | |
134 | WPEOF |
135 | done) |
136 | |
137 | networks: |
138 | wp_network: |
139 | driver: bridge |
140 | ipam: |
141 | config: |
142 | - subnet: 10.110.112.0/24 |
143 | |
144 | volumes: |
145 | db_data: |
146 | EOF |
147 | |
148 | echo "Скриптът завърши успешно!" |
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/" |