Скрипт для автоматического развертывания ЛК на основе шаблона
This commit is contained in:
83
lkCreate.sh
Normal file
83
lkCreate.sh
Normal file
@ -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 "Скрипт успешно завершен!"
|
||||
Reference in New Issue
Block a user