diff --git a/setup.sh b/setup.sh index 81513d6..d635779 100644 --- a/setup.sh +++ b/setup.sh @@ -239,28 +239,44 @@ max_execution_time = 300 max_input_time = 300 EOF -# === Создание .env для WordPress === +# === Создание структуры директорий для WordPress === safe_mkdir "/opt/wordpress" +safe_mkdir "/opt/wordpress/wp-content/uploads" +safe_mkdir "/opt/wordpress/wp-content/plugins" +safe_mkdir "/opt/wordpress/wp-content/themes" +safe_mkdir "/opt/wordpress/wp-content/mytheme" +safe_mkdir "/opt/wordpress/config" +safe_mkdir "/opt/wordpress/logs/wordpress" +safe_mkdir "/opt/wordpress/logs/mysql" +safe_mkdir "/opt/wordpress/data/mysql" +safe_mkdir "/opt/wordpress/backups" + +# === Генерация .env файла === cat < /opt/wordpress/.env # ========================= # Database Configuration # ========================= DB_NAME=wordpressdbname DB_USER=wordpressuser -DB_PASSWORD=$(generate_password 16) +DB_PASSWORD=$(generate_password 20) # ========================= # WordPress Settings # ========================= +WP_DOMAIN=rp.primo.su WP_DEBUG=false WP_DEBUG_LOG=false -TZ=Asia/Krasnoyarsk -WP_DOMAIN= -EOF -chmod 600 /opt/wordpress/.env -log_success "WordPress .env файл сгенерирован" -# === Создание docker-compose.yml для WordPress === +# ========================= +# Timezone +# ========================= +TZ=Asia/Krasnoyarsk +EOF + +chmod 600 /opt/wordpress/.env +log_success "WordPress .env файл создан и защищён" + +# === Создание docker-compose.yml под твой текущий конфиг с env_file === cat < /opt/wordpress/docker-compose.yml services: wordpress: @@ -268,39 +284,30 @@ services: image: wordpress:6.5-php8.2-apache restart: unless-stopped depends_on: - db: + word_db: condition: service_healthy env_file: - .env environment: + WORDPRESS_DB_HOST: word_db + WORDPRESS_DB_USER: \${DB_USER} + WORDPRESS_DB_PASSWORD: \${DB_PASSWORD} + WORDPRESS_DB_NAME: \${DB_NAME} WORDPRESS_CONFIG_EXTRA: | - define('WP_DEBUG', \${WP_DEBUG}); - define('WP_DEBUG_LOG', \${WP_DEBUG_LOG}); - define('WP_HOME', 'https://\${WP_DOMAIN}'); - define('WP_SITEURL', 'https://\${WP_DOMAIN}'); + define('WP_DEBUG', \${WP_DEBUG} === 'true'); + define('WP_DEBUG_LOG', \${WP_DEBUG_LOG} === 'true'); + define('WP_HOME', 'https://' . getenv('WP_DOMAIN')); + define('WP_SITEURL', 'https://' . getenv('WP_DOMAIN')); date_default_timezone_set('Asia/Krasnoyarsk'); volumes: - # Контент WordPress с хоста - ./wp-content/uploads:/var/www/html/wp-content/uploads - ./wp-content/plugins:/var/www/html/wp-content/plugins - ./wp-content/themes:/var/www/html/wp-content/themes - ./wp-content/mytheme:/var/www/html/wp-content/themes/mytheme - - # Настройки PHP - ./config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro - ./config/php.ini:/usr/local/etc/php/php.ini:ro - - # Логи Apache - ./logs/wordpress:/var/log/apache2 - - # Бэкапы и дополнительные данные - ./backups:/backups - - # Если wp-config.php существует как **файл**, можно раскомментировать строку ниже - # - ./config/wp-config.php:/var/www/html/wp-config.php:ro - - #ports: - #- "8080:80" networks: - wordpress_net - proxy @@ -308,23 +315,22 @@ services: test: ["CMD", "curl", "-f", "http://localhost/wp-admin/install.php"] interval: 30s timeout: 10s - retries: 3 - start_period: 30s + retries: 5 + start_period: 40s - db: + word_db: container_name: wordpress-db image: mysql:8.0 restart: unless-stopped env_file: - .env environment: - MYSQL_RANDOM_ROOT_PASSWORD: 'yes' + MYSQL_RANDOM_ROOT_PASSWORD: "yes" TZ: \${TZ} volumes: - ./data/mysql:/var/lib/mysql - ./config/my.cnf:/etc/mysql/conf.d/custom.cnf:ro - ./logs/mysql:/var/log/mysql - - ./backups/db:/docker-entrypoint-initdb.d command: - --default-time-zone=+07:00 - --character-set-server=utf8mb4 @@ -332,11 +338,11 @@ services: networks: - wordpress_net healthcheck: - test: ["CMD-SHELL", "mysqladmin ping -h localhost -u\${DB_USER} -p\${DB_PASSWORD} || exit 1"] + test: ["CMD-SHELL", "mysqladmin ping --protocol=tcp --silent -u\${DB_USER} -p\${DB_PASSWORD} || exit 1"] interval: 10s timeout: 5s - retries: 5 - start_period: 30s + retries: 10 + start_period: 40s #phpmyadmin: #container_name: wordpress-phpmyadmin @@ -365,6 +371,9 @@ networks: external: true EOF +chmod 644 /opt/wordpress/docker-compose.yml +log_success "docker-compose.yml для WordPress успешно создан (все переменные вынесены в .env)" + # Генерация паролей и .env