urocibg a révisé ce gist . Aller à la révision
1 file changed, 62 insertions
init.sh(fichier créé)
| @@ -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 a révisé ce gist . Aller à la révision
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 a révisé ce gist . Aller à la révision
1 file changed, 102 insertions
setup-4wp.sh(fichier créé)
| @@ -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" | |