Skip to content

Instantly share code, notes, and snippets.

@Pavelob7
Created March 2, 2025 12:49
Show Gist options
  • Save Pavelob7/fe4cc9a992c7274f55b7b25aab00fad3 to your computer and use it in GitHub Desktop.
Save Pavelob7/fe4cc9a992c7274f55b7b25aab00fad3 to your computer and use it in GitHub Desktop.
Настройка CI/CD
# ШАГ 1: Настроить SSH-доступ к VPS
GitHub Actions будет деплоить проект через SSH, поэтому нам нужно создать ключ и добавить его на сервер.
## 1.1. Создать SSH-ключ
На локальном ПК выполни:
\```
ssh-keygen -t rsa -b 4096 -C "github-deploy-key"
\```
Нажми Enter несколько раз, не вводя пароль.
Ключи создадутся в ~/.ssh/ (или C:\Users\юзер\.ssh\ на Windows).
Файлы:
id_rsa — приватный ключ (НЕ делись им).
id_rsa.pub — публичный ключ (его добавим на сервер).
## 1.2. Добавить ключ на сервер
Скопируй публичный ключ в VPS:
\```
cat ~/.ssh/id_rsa.pub
\```
Скопируй его содержимое.
На сервере (через SSH) добавь его в ~/.ssh/authorized_keys:
\```
nano ~/.ssh/authorized_keys
\```
## 1.3. Проверить соединение
На локальном ПК выполни:
\```
ssh root@IP_ТВОЕГО_VPS
\```
Если подключение успешно, значит SSH настроен.
# ШАГ 2: Добавить ключ в GitHub Secrets
Открой GitHub → Твой репозиторий → Settings → Secrets and variables → Actions.
Нажми New repository secret.
Добавь секреты:
SSH_PRIVATE_KEY → вставь содержимое id_rsa (приватный ключ).
VPS_HOST → IP-адрес твоего сервера.
VPS_USER → root или другой пользователь.
VPS_PATH → путь, куда загружать проект (/var/www/my-portfolio-site).
# ШАГ 3: Создать GitHub Actions Workflow
Создай папку .github/workflows/ в корне проекта и файл deploy.yml:
\```
name: Deploy to VPS
on:
push:
branches:
- main # Запуск при пуше в main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.VPS_HOST }} >> ~/.ssh/known_hosts
- name: Deploy to VPS
run: |
ssh ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} << 'EOF'
cd ${{ secrets.VPS_PATH }}
git pull origin main
# Установка зависимостей и перезапуск backend
cd backend
npm install
pm2 restart my-backend || pm2 start server.js --name my-backend
# Установка зависимостей и билд frontend
cd ../frontend
npm install
npm run build
# Перезапуск Nginx (если нужно)
sudo systemctl restart nginx
EOF
\```
# ШАГ 4: Настроить сервер для деплоя
На VPS установи всё нужное:
\```
apt update && apt install -y git nodejs npm nginx
npm install -g pm2
\```
Клонируй проект на сервер:
\```
mkdir -p /var/www/my-portfolio-site
cd /var/www/my-portfolio-site
git clone https://github.com/Pavelob7/tarakani.git .
npm install
\```
Настрой PM2 для бэкенда:
\```
cd backend
pm2 start server.js --name my-backend
pm2 save
\```
Настрой Nginx для фронтенда:
\```
nano /etc/nginx/sites-available/default
\```
Добавь:
\```
server {
listen 80;
server_name _;
location / {
root /var/www/my-portfolio-site/frontend/build;
index index.html;
try_files $uri /index.html;
}
location /api/ {
proxy_pass http://localhost:5000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
\```
Перезапусти Nginx:
\```
systemctl restart nginx
\```
ШАГ 5: Проверить CI/CD
Закоммить изменения:
\```
git add .
git commit -m "Настроен CI/CD"
git push origin main
\```
Открой GitHub → Actions и проверь выполнение workflow.
После успешного деплоя сайт автоматически обновится на сервере. 🚀
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment