Files
maintenance/lkCreate.sh

83 lines
3.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "Скрипт успешно завершен!"