Update deployment solution for Windows compatibility
This commit is contained in:
+26
-10
@@ -1,23 +1,29 @@
|
||||
# Инструкция по публикации сайта через rsync
|
||||
# Инструкция по публикации сайта через SFTP
|
||||
|
||||
## Описание
|
||||
|
||||
Этот документ описывает процесс публикации сгенерированного сайта (папка `public`) на хостинге через `rsync`.
|
||||
Этот документ описывает процесс публикации сгенерированного сайта (папка `public`) на хостинге через SFTP. Решение кроссплатформенное и работает как на Unix-подобных системах (Linux/macOS), так и на Windows.
|
||||
|
||||
## Учетные данные и параметры подключения
|
||||
|
||||
Для работы используются следующие параметры, задаваемые в Makefile:
|
||||
Для работы используются следующие параметры:
|
||||
- **Хост**: kpa39l.myjino.ru
|
||||
- **Порт SSH**: 2222
|
||||
- **Пользователь**: kpa39l_dedinit
|
||||
- **Пароль**: -Zp4ep747t25
|
||||
- **Целевой путь**: /domains/dedinit.ru
|
||||
|
||||
## Установка зависимостей
|
||||
|
||||
Для работы скрипта деплоя требуются:
|
||||
1. **rsync** - обычно предустановлен в большинстве Linux-систем, для Windows может потребоваться установка через Git Bash или WSL
|
||||
2. **SSH-клиент** - для подключения к серверу
|
||||
3. **Make** - для выполнения команд из Makefile
|
||||
### Для Linux/macOS:
|
||||
- **rsync** - обычно предустановлен в большинстве систем
|
||||
- **SSH-клиент** - для подключения к серверу
|
||||
- **Make** - для выполнения команд из Makefile
|
||||
|
||||
### Для Windows:
|
||||
- **WinSCP** - установите с официального сайта (https://winscp.net/)
|
||||
- **PowerShell** - предустановлен в Windows 7 и выше
|
||||
- **Make** - можно установить через Chocolatey, MinGW или Git for Windows
|
||||
|
||||
## Использование Makefile
|
||||
|
||||
@@ -33,11 +39,15 @@ make deploy
|
||||
```
|
||||
Команда сначала собирает сайт, затем загружает содержимое папки `public/` на удаленный сервер.
|
||||
|
||||
Для Windows используется PowerShell-скрипт с WinSCP, для Unix-подобных систем - rsync.
|
||||
|
||||
### Симуляция деплоя
|
||||
```bash
|
||||
make deploy-dry-run
|
||||
```
|
||||
Команда сначала собирает сайт, затем симулирует загрузку на сервер без фактического копирования файлов.
|
||||
Команда сначала собирает сайт, затем симулирует загрузку на сервер:
|
||||
- На Unix-подобных системах используется флаг `-n` для симуляции rsync
|
||||
- На Windows симуляция пока не реализована, будет выведено соответствующее сообщение
|
||||
|
||||
### Очистка
|
||||
```bash
|
||||
@@ -59,7 +69,7 @@ make help
|
||||
|
||||
## Конфигурация
|
||||
|
||||
Все параметры подключения находятся в начале файла Makefile:
|
||||
Параметры подключения находятся в файле Makefile:
|
||||
- HOST - адрес сервера
|
||||
- PORT - порт SSH
|
||||
- USERNAME - имя пользователя
|
||||
@@ -67,7 +77,13 @@ make help
|
||||
|
||||
При необходимости вы можете изменить эти параметры в файле Makefile.
|
||||
|
||||
## Настройка SSH
|
||||
## Настройка для Windows
|
||||
|
||||
Для корректной работы на Windows необходимо:
|
||||
1. Установить WinSCP с официального сайта
|
||||
2. По умолчанию скрипт ищет WinSCP в "C:\Program Files (x86)\WinSCP\WinSCP.exe", если у вас другой путь, измените его в файле deploy.ps1
|
||||
|
||||
## Настройка SSH (для Unix-подобных систем)
|
||||
|
||||
Для удобства рекомендуется настроить SSH-ключи для подключения к серверу. Также можно настроить подключение через SSH config, добавив в ~/.ssh/config:
|
||||
|
||||
|
||||
@@ -1,23 +1,45 @@
|
||||
.PHONY: build deploy
|
||||
|
||||
# Параметры подключения к серверу
|
||||
# Определяем операционную систему
|
||||
ifeq ($(OS),Windows_NT)
|
||||
PLATFORM = Windows
|
||||
# На Windows используем PowerShell-скрипт
|
||||
DEPLOY_CMD = powershell -ExecutionPolicy Bypass -File ../deploy.ps1
|
||||
DRYRUN_CMD = powershell -ExecutionPolicy Bypass -File ../deploy.ps1
|
||||
else
|
||||
PLATFORM = Unix
|
||||
# На Unix-подобных системах используем rsync
|
||||
HOST = kpa39l.myjino.ru
|
||||
PORT = 2222
|
||||
USERNAME = kpa39l_dedinit
|
||||
REMOTE_PATH = /domains/dedinit.ru
|
||||
endif
|
||||
|
||||
.PHONY: build deploy deploy-dry-run clean rebuild help
|
||||
|
||||
build:
|
||||
hugo --minify
|
||||
@echo "Сайт успешно собран в папку public/"
|
||||
|
||||
deploy: build
|
||||
ifeq ($(PLATFORM),Windows)
|
||||
$(DEPLOY_CMD)
|
||||
else
|
||||
rsync -avz --delete -e 'ssh -p $(PORT)' public/ $(USERNAME)@$(HOST):$(REMOTE_PATH)/
|
||||
endif
|
||||
|
||||
deploy-dry-run: build
|
||||
ifeq ($(PLATFORM),Windows)
|
||||
@echo "Для Windows симуляция деплоя пока не реализована."
|
||||
@echo "Для реального деплоя используйте команду: make deploy"
|
||||
else
|
||||
rsync -avn --delete -e 'ssh -p $(PORT)' public/ $(USERNAME)@$(HOST):$(REMOTE_PATH)/
|
||||
endif
|
||||
|
||||
clean:
|
||||
ifeq ($(OS),Windows_NT)
|
||||
del /q /s public\
|
||||
else
|
||||
rm -rf public/
|
||||
endif
|
||||
@echo "Папка public удалена"
|
||||
|
||||
rebuild: clean deploy
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
|
||||
Для автоматизации процесса деплоя созданы специальные файлы:
|
||||
|
||||
- `Makefile` - содержит команды для сборки и публикации сайта на хостинге
|
||||
- `Makefile` - содержит команды для сборки и публикации сайта на хостинге (работает как на Unix-подобных системах, так и на Windows)
|
||||
- `deploy.ps1` - PowerShell-скрипт для деплоя на Windows с использованием WinSCP
|
||||
- `DEPLOY_INSTRUCTIONS.md` - инструкция по использованию команд деплоя
|
||||
|
||||
Для публикации сайта на хостинге используйте команду:
|
||||
@@ -63,3 +64,5 @@ make deploy
|
||||
```
|
||||
make help
|
||||
```
|
||||
|
||||
Процесс деплоя кроссплатформенный: на Unix-подобных системах используется rsync, на Windows - PowerShell-скрипт с WinSCP.
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
# PowerShell-скрипт для деплоя сайта через SFTP
|
||||
# Параметры подключения к серверу
|
||||
$HOST = "kpa39l.myjino.ru"
|
||||
$PORT = "2222"
|
||||
$USERNAME = "kpa39l_dedinit"
|
||||
$REMOTE_PATH = "/domains/dedinit.ru"
|
||||
$LOCAL_PATH = "public"
|
||||
|
||||
# Путь к исполняемому файлу WinSCP
|
||||
$WINSCP_PATH = "C:\Program Files (x86)\WinSCP\WinSCP.exe"
|
||||
|
||||
# Проверяем, установлен ли WinSCP
|
||||
if (-Not (Test-Path $WINSCP_PATH)) {
|
||||
Write-Host "WinSCP не найден по пути $WINSCP_PATH"
|
||||
Write-Host "Пожалуйста, установите WinSCP или укажите правильный путь к исполняемому файлу"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Проверяем, существует ли локальная папка
|
||||
if (-Not (Test-Path $LOCAL_PATH)) {
|
||||
Write-Host "Локальная папка $LOCAL_PATH не существует"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Создаем временный скрипт для WinSCP
|
||||
$TEMP_SCRIPT = [System.IO.Path]::GetTempFileName()
|
||||
$TEMP_SCRIPT += ".txt"
|
||||
|
||||
# Формируем команды для WinSCP
|
||||
$SCRIPT_CONTENT = @"
|
||||
open sftp://${USERNAME}@${HOST}:${PORT} -hostkey=""*"" -rawsettings Password=-Zp4ep747t25
|
||||
synchronize remote ${LOCAL_PATH}/ ${REMOTE_PATH}/ -delete -transfer=binary
|
||||
close
|
||||
exit
|
||||
"@
|
||||
|
||||
# Записываем команды в временный файл
|
||||
Set-Content -Path $TEMP_SCRIPT -Value $SCRIPT_CONTENT
|
||||
|
||||
try {
|
||||
# Выполняем команды через WinSCP
|
||||
Write-Host "Начинаем деплой содержимого папки ${LOCAL_PATH} на сервер ${HOST}..."
|
||||
Start-Process -FilePath $WINSCP_PATH -ArgumentList "/script=$TEMP_SCRIPT" -Wait -NoNewWindow
|
||||
Write-Host "Деплой завершен успешно!"
|
||||
}
|
||||
catch {
|
||||
Write-Host "Произошла ошибка при деплое: $_"
|
||||
exit 1
|
||||
}
|
||||
finally {
|
||||
# Удаляем временный файл
|
||||
if (Test-Path $TEMP_SCRIPT) {
|
||||
Remove-Item $TEMP_SCRIPT
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user