vm:nginx:04-nginx_menu

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

vm:nginx:04-nginx_menu [2025/08/29 12:31] – создано adminvm:nginx:04-nginx_menu [2025/08/29 12:32] (текущий) admin
Строка 23: Строка 23:
 </code> </code>
  
-<note>Скопируйте содержимое скрипта из артефакта выше и вставьте в файл.</note>+**Содержимое файла nginx-manager.sh:** 
 + 
 +<code bash> 
 +#!/bin/bash 
 + 
 +# Путь к папке с docker-compose.yml 
 +NGINX_PATH="/opt/nginx" 
 +COMPOSE_FILE="$NGINX_PATH/docker-compose.yml" 
 + 
 +# Цвета для вывода 
 +RED='\033[0;31m' 
 +GREEN='\033[0;32m' 
 +YELLOW='\033[1;33m' 
 +BLUE='\033[0;34m' 
 +CYAN='\033[0;36m' 
 +NC='\033[0m' # No Color 
 + 
 +# Функция для отображения заголовка 
 +show_header() { 
 +    clear 
 +    echo -e "${BLUE}╔══════════════════════════════════════════════════════════════════╗${NC}" 
 +    echo -e "${BLUE}║                    NGINX PROXY MANAGER                           ║${NC}" 
 +    echo -e "${BLUE}║                        v1.0                                      ║${NC}" 
 +    echo -e "${BLUE}╚══════════════════════════════════════════════════════════════════╝${NC}" 
 +    echo "" 
 +
 + 
 +# Функция для проверки статуса контейнеров 
 +check_status() { 
 +    echo -e "${CYAN}Статус контейнеров:${NC}" 
 +    echo "─────────────────────────────────────────────────────────" 
 +     
 +    # Проверяем nginx_proxy 
 +    if docker ps --filter "name=nginx_proxy" --filter "status=running" -q | grep -q .; then 
 +        echo -e "nginx_proxy:      ${GREEN}●${NC} Запущен" 
 +    else 
 +        echo -e "nginx_proxy:      ${RED}●${NC} Остановлен" 
 +    fi 
 +     
 +    # Проверяем nginx_letsencrypt 
 +    if docker ps --filter "name=nginx_letsencrypt" --filter "status=running" -q | grep -q .; then 
 +        echo -e "nginx_letsencrypt: ${GREEN}●${NC} Запущен" 
 +    else 
 +        echo -e "nginx_letsencrypt: ${RED}●${NC} Остановлен" 
 +    fi 
 +     
 +    echo "─────────────────────────────────────────────────────────" 
 +    echo "" 
 +
 + 
 +# Функция для запуска сервисов 
 +start_services() { 
 +    echo -e "${YELLOW}Запуск сервисов...${NC}" 
 +    cd "$NGINX_PATH" || exit 1 
 +    docker-compose up -d 
 +    if [ $? -eq 0 ]; then 
 +        echo -e "${GREEN}✓ Сервисы успешно запущены${NC}" 
 +    else 
 +        echo -e "${RED}✗ Ошибка при запуске сервисов${NC}" 
 +    fi 
 +    read -p "Нажмите Enter для продолжения..." 
 +
 + 
 +# Функция для остановки сервисов 
 +stop_services() { 
 +    echo -e "${YELLOW}Остановка сервисов...${NC}" 
 +    cd "$NGINX_PATH" || exit 1 
 +    docker-compose stop 
 +    if [ $? -eq 0 ]; then 
 +        echo -e "${GREEN}✓ Сервисы успешно остановлены${NC}" 
 +    else 
 +        echo -e "${RED}✗ Ошибка при остановке сервисов${NC}" 
 +    fi 
 +    read -p "Нажмите Enter для продолжения..." 
 +
 + 
 +# Функция для перезагрузки сервисов 
 +restart_services() { 
 +    echo -e "${YELLOW}Перезагрузка сервисов...${NC}" 
 +    cd "$NGINX_PATH" || exit 1 
 +    docker-compose restart 
 +    if [ $? -eq 0 ]; then 
 +        echo -e "${GREEN}✓ Сервисы успешно перезагружены${NC}" 
 +    else 
 +        echo -e "${RED}✗ Ошибка при перезагрузке сервисов${NC}" 
 +    fi 
 +    read -p "Нажмите Enter для продолжения..." 
 +
 + 
 +# Функция для просмотра логов nginx_proxy 
 +view_nginx_logs() { 
 +    echo -e "${CYAN}Логи nginx_proxy (последние 50 строк):${NC}" 
 +    echo "─────────────────────────────────────────────────────────" 
 +    docker logs --tail 50 nginx_proxy 
 +    echo "─────────────────────────────────────────────────────────" 
 +    read -p "Нажмите Enter для продолжения..." 
 +
 + 
 +# Функция для просмотра логов nginx_letsencrypt 
 +view_letsencrypt_logs() { 
 +    echo -e "${CYAN}Логи nginx_letsencrypt (последние 50 строк):${NC}" 
 +    echo "─────────────────────────────────────────────────────────" 
 +    docker logs --tail 50 nginx_letsencrypt 
 +    echo "─────────────────────────────────────────────────────────" 
 +    read -p "Нажмите Enter для продолжения..." 
 +
 + 
 +# Функция для просмотра логов nginx_proxy в реальном времени 
 +follow_nginx_logs() { 
 +    echo -e "${CYAN}Логи nginx_proxy в реальном времени (Ctrl+C для выхода):${NC}" 
 +    echo "─────────────────────────────────────────────────────────" 
 +    docker logs -f nginx_proxy 
 +
 + 
 +# Функция для просмотра логов nginx_letsencrypt в реальном времени 
 +follow_letsencrypt_logs() { 
 +    echo -e "${CYAN}Логи nginx_letsencrypt в реальном времени (Ctrl+C для выхода):${NC}" 
 +    echo "─────────────────────────────────────────────────────────" 
 +    docker logs -f nginx_letsencrypt 
 +
 + 
 +# Функция для показа дополнительной информации 
 +show_info() { 
 +    echo -e "${CYAN}Дополнительная информация:${NC}" 
 +    echo "─────────────────────────────────────────────────────────" 
 +    echo -e "Путь к конфигурации: ${YELLOW}$NGINX_PATH${NC}" 
 +    echo -e "Docker Compose файл: ${YELLOW}$COMPOSE_FILE${NC}" 
 +    echo "" 
 +    echo -e "${CYAN}Статистика контейнеров:${NC}" 
 +    docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" nginx_proxy nginx_letsencrypt 2>/dev/null || echo "Контейнеры не запущены" 
 +    echo "" 
 +    echo -e "${CYAN}Порты:${NC}" 
 +    echo "HTTP:  80" 
 +    echo "HTTPS: 443" 
 +    echo "" 
 +    echo -e "${CYAN}Полезные команды:${NC}" 
 +    echo "• Проверка nginx конфигурации: docker exec nginx_proxy nginx -t" 
 +    echo "• Перезагрузка nginx: docker exec nginx_proxy nginx -s reload" 
 +    echo "• Просмотр сертификатов: ls -la $NGINX_PATH/certs/" 
 +    echo "─────────────────────────────────────────────────────────" 
 +    read -p "Нажмите Enter для продолжения..." 
 +
 + 
 +# Основное меню 
 +show_menu() { 
 +    show_header 
 +    check_status 
 +     
 +    echo -e "${CYAN}Выберите действие:${NC}" 
 +    echo "" 
 +    echo -e "  ${GREEN}1)${NC} Запустить сервисы" 
 +    echo -e "  ${RED}2)${NC} Остановить сервисы"  
 +    echo -e "  ${YELLOW}3)${NC} Перезагрузить сервисы" 
 +    echo "" 
 +    echo -e "  ${BLUE}4)${NC} Просмотр логов nginx_proxy" 
 +    echo -e "  ${BLUE}5)${NC} Просмотр логов nginx_letsencrypt" 
 +    echo "" 
 +    echo -e "  ${CYAN}6)${NC} Логи nginx_proxy в реальном времени" 
 +    echo -e "  ${CYAN}7)${NC} Логи nginx_letsencrypt в реальном времени" 
 +    echo "" 
 +    echo -e "  ${YELLOW}8)${NC} Дополнительная информация" 
 +    echo "" 
 +    echo -e "  ${RED}0)${NC} Выход" 
 +    echo "" 
 +    echo -n "Ваш выбор: " 
 +
 + 
 +# Основной цикл программы 
 +main() { 
 +    # Проверяем существование docker-compose файла 
 +    if [ ! -f "$COMPOSE_FILE" ]; then 
 +        echo -e "${RED}Ошибка: Docker Compose файл не найден по пути $COMPOSE_FILE${NC}" 
 +        echo "Убедитесь, что файл существует и путь указан правильно.
 +        exit 1 
 +    fi 
 +     
 +    while true; do 
 +        show_menu 
 +        read -r choice 
 +         
 +        case $choice in 
 +            1) 
 +                start_services 
 +                ;; 
 +            2) 
 +                stop_services 
 +                ;; 
 +            3) 
 +                restart_services 
 +                ;; 
 +            4) 
 +                view_nginx_logs 
 +                ;; 
 +            5) 
 +                view_letsencrypt_logs 
 +                ;; 
 +            6) 
 +                follow_nginx_logs 
 +                ;; 
 +            7) 
 +                follow_letsencrypt_logs 
 +                ;; 
 +            8) 
 +                show_info 
 +                ;; 
 +            0) 
 +                echo -e "${GREEN}До свидания!${NC}" 
 +                exit 0 
 +                ;; 
 +            *) 
 +                echo -e "${RED}Неверный выбор. Попробуйте еще раз.${NC}" 
 +                sleep 2 
 +                ;; 
 +        esac 
 +    done 
 +
 + 
 +# Запуск основной функции 
 +main 
 +</code>
  
 ==== Шаг 2: Настройка прав доступа ==== ==== Шаг 2: Настройка прав доступа ====
  • vm/nginx/04-nginx_menu.1756470666.txt.gz
  • Последнее изменение: 2025/08/29 12:31
  • admin