From 758e29d89b6acfe71d04c4579a78e974f98d2d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D0=BB=D0=B8=D0=B3=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=BA=D0=BE=20=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9?= Date: Wed, 3 Sep 2025 15:22:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=82=D1=8B=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=9B=D0=9A=20=D0=BD=D0=B0=20=D0=BE=D1=81=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lkCreate.sh | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 lkCreate.sh diff --git a/lkCreate.sh b/lkCreate.sh new file mode 100644 index 0000000..f150d8e --- /dev/null +++ b/lkCreate.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Проверка наличия аргументов командной строки +if [[ "$#" -ne 2 ]]; then + echo "Использовать: $0 name port" + echo " name - Имя для каталога и базы" + echo " port - На каком локальном порту запустится ЛК" + exit 1 +fi + +# Шаги сценария развертывания + +# 1. Копируем проект в новую директорию +echo "Шаг 1: Скопировать каталог проекта..." +sudo cp -rp /var/www/nord /var/www/$1 || { echo "Ошибка при копировании"; exit 1; } + +# 2. Изменяем параметры подключения к PostgreSQL в config.ini +echo "Шаг 2: Обновить config.ini, указав учетные данные PostgreSQL..." +CONFIG_INI="/var/www/${1}/data/config.ini" +LOGIN=$1 +PASS="1${1}!" +PORT=$2 + +# Обновление login и pass в файле config.ini +sed -i "0,/^login:/ s#login:.*#login: ${LOGIN}#" "$CONFIG_INI" +sed -i "0,/^passwd:/ s#passwd:.*#passwd: ${PASS}#" "$CONFIG_INI" +sed -i "0,/^base:/ s#base:.*#base: ${LOGIN}#" "$CONFIG_INI" + +# 3. Создание пользователя и базы данных в PostgreSQL +echo "Шаг 3: Создайте пользователя и базу данных PostgreSQL..." +su - postgres -c "psql" << EOF +CREATE USER '$LOGIN' WITH PASSWORD '$PASS'; +CREATE DATABASE '$LOGIN' WITH OWNER '$LOGIN'; +EOF + +# 4. Загрузка данных из бэкап-файла +echo "Шаг 4: Заполнение данными в PostgreSQL..." +tar xjOf "/usr/backup_base/$(date +%F)_nord.sql.tar.bz2" | su - postgres -c "psql $LOGIN" + +# 5. Установка необходимых привилегий для пользователя +echo "Шаг 5: Предоставить привилегии для таблиц..." +su - postgres -c "psql" << EOF +\c $LOGIN +GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO $LOGIN; +EOF + +# 6. Подготовка конфигурационных файлов для Lighttpd +echo "Шаг 6: Подготовить конфигурацию Lighttpd..." +LIGHTTPD_CONFIG_DIR="/opt/docker/order/" + +# Копируем конфиг, меняем порт и путь +cp "${LIGHTTPD_CONFIG_DIR}/nord.conf" "${LIGHTTPD_CONFIG_DIR}/${LOGIN}.conf" +sed -i "/^server.port = .*/s//server.port = ${PORT}/" "${LIGHTTPD_CONFIG_DIR}/${LOGIN}.conf" +sed -i "/^\s*server.document-root\s*=.*$/s|/var/www/nord|/var/www/${LOGIN}|" "${LIGHTTPD_CONFIG_DIR}/${LOGIN}.conf" + +# Кладём конфиг в контейнер +docker cp "${LIGHTTPD_CONFIG_DIR}/${LOGIN}.conf" order-app:/etc/lighttpd/ + +# Стартуем Lighttpd внутри контейнера +docker exec -it order-app bash -c "lighttpd -f /etc/lighttpd/${LOGIN}.conf" + +# 7. Добавляем команду старта Lighttpd в общий конфиг +echo "Шаг 7: Добавить команду запуска Lighttpd в web_server.sh..." +sed -i "1i lighttpd -D -f /etc/lighttpd/${LOGIN}.conf &" "${LIGHTTPD_CONFIG_DIR}/web_server.sh" +docker cp "${LIGHTTPD_CONFIG_DIR}/web_server.sh" order-app:/ + +# 8. Настройка виртуальных хостов Nginx +echo "Шаг 8: Настроить виртуальный хост Nginx..." +NGINX_SITE_SRC="/etc/nginx/sites-available/order_nord" +NGINX_SITE_DEST="/etc/nginx/sites-available/order_${LOGIN}" + +# Копируем шаблон сайта и редактируем его +cp "$NGINX_SITE_SRC" "$NGINX_SITE_DEST" +sed -i "s/nord./${LOGIN}./" "$NGINX_SITE_DEST" +sed -i "s/\.1:.*/\.1:${PORT};/" "$NGINX_SITE_DEST" +sed -i "s@ssl_certificate .*fullchain.pem;@ssl_certificate /etc/ssl/local.crt;@g" "$NGINX_SITE_DEST" +sed -i "s@ssl_certificate_key .*privkey.pem;@ssl_certificate_key /etc/ssl/local.key;@g" "$NGINX_SITE_DEST" + +# Активация нового сайта +ln -sf "$NGINX_SITE_DEST" "/etc/nginx/sites-enabled/" +systemctl reload nginx.service + +echo "Скрипт успешно завершен!" \ No newline at end of file