Улучшено обновление приложения: добавлена проверка на наличие локального файла letsencrypt_regru_api.py и улучшено логирование процесса скачивания с GitHub.

This commit is contained in:
Dmitriy Fofanov
2025-10-30 09:54:20 +03:00
parent a47d3cef10
commit 4777d832b7
2 changed files with 63 additions and 8 deletions

View File

@@ -69,7 +69,10 @@ Python скрипт теперь автоматически загружает
**Вариант 1: Автоматическая установка одной командой**
```bash
# Скачать и запустить установочный скрипт напрямую с GitHub
# Метод 1: Через pipe (рекомендуется)
curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh | sudo bash
# Метод 2: Через bash -c
sudo bash -c "$(curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh)"
```
@@ -176,21 +179,73 @@ tail -f /var/log/letsencrypt-regru/letsencrypt_regru.log
### Управление установкой
#### Обновление
```bash
# Обновить приложение до последней версии (из локального репозитория)
# Способ 1: Из локального репозитория (если клонировали)
cd configure_nginx_manager
git pull # Получить последние изменения
sudo bash letsencrypt_regru.sh update
# Обновить приложение одной командой (без клонирования)
# Способ 2: Обновление одной командой с GitHub (рекомендуется)
curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh | sudo bash -s update
# Полностью удалить приложение (из репозитория)
# НЕ РАБОТАЕТ (неправильный синтаксис):
# sudo bash -c "$(curl -fsSL ...) update" # Аргументы не передаются!
```
#### Удаление
```bash
# Способ 1: Из локального репозитория
sudo bash letsencrypt_regru.sh uninstall
# Удалить приложение одной командой (без клонирования)
# Способ 2: Удаление одной командой с GitHub
curl -fsSL https://github.com/DFofanov/configure_nginx_manager/raw/refs/heads/master/letsencrypt_regru.sh | sudo bash -s uninstall
```
**💡 Совет:** При обновлении/удалении через curl скрипт автоматически скачивает необходимые файлы с GitHub.
#### 📚 Техническая справка: Синтаксис команд
<details>
<summary>Почему используется <code>| sudo bash -s update</code> вместо <code>bash -c "$(curl ...) update"</code>?</summary>
**Правильный способ (с аргументами):**
```bash
curl -fsSL https://url/script.sh | sudo bash -s update
# ↑
# -s передает аргументы скрипту
```
**Неправильный способ (аргументы игнорируются):**
```bash
sudo bash -c "$(curl -fsSL https://url/script.sh) update"
# ↑
# Это НЕ аргумент для скрипта!
# Это аргумент для bash -c
```
**Объяснение:**
- `bash -c "command"` - выполняет команду как строку, дополнительные аргументы становятся позиционными параметрами для bash, а не для скрипта
- `bash -s arg1 arg2` - читает скрипт из stdin и передает arg1, arg2 как аргументы скрипту ($1, $2)
**Альтернативные способы:**
```bash
# Вариант 1: Через pipe (рекомендуется)
curl -fsSL https://url/script.sh | sudo bash -s update
# Вариант 2: Через временный файл
curl -fsSL https://url/script.sh -o /tmp/install.sh
sudo bash /tmp/install.sh update
rm /tmp/install.sh
# Вариант 3: Через wget
wget -qO- https://url/script.sh | sudo bash -s update
```
</details>
### Расположение файлов
После установки файлы находятся:

View File

@@ -532,7 +532,7 @@ display_summary() {
update_application() {
header "Обновление приложения"
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
local script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)"
local github_raw_url="https://raw.githubusercontent.com/DFofanov/configure_nginx_manager/refs/heads/master"
msg_info "Остановка сервиса..."
@@ -541,13 +541,13 @@ update_application() {
msg_info "Обновление файлов..."
# Попытка скопировать локально или скачать с GitHub
if [ -f "${script_dir}/letsencrypt_regru_api.py" ]; then
if [ -n "${script_dir}" ] && [ -f "${script_dir}/letsencrypt_regru_api.py" ]; then
msg_info "Копирование из локальной директории..."
cp "${script_dir}/letsencrypt_regru_api.py" "${APP_DIR}/"
chmod 755 "${APP_DIR}/letsencrypt_regru_api.py"
msg_ok "Файл скопирован локально"
else
msg_info "Локальный файл не найден, скачивание с GitHub..."
msg_info "Скачивание обновления с GitHub..."
if command -v curl &> /dev/null; then
if curl -fsSL "${github_raw_url}/letsencrypt_regru_api.py" -o "${APP_DIR}/letsencrypt_regru_api.py"; then
chmod 755 "${APP_DIR}/letsencrypt_regru_api.py"