Что такое DigitalOcean?
DigitalOcean — это облачная платформа, ориентированная на разработчиков, которая предоставляет простые, доступные и производительные облачные решения. Компания известна своими VPS серверами (Droplets), понятной документацией и конкурентоспособными ценами, что делает её популярным выбором для стартапов и индивидуальных разработчиков.
Основные продукты DigitalOcean
- Droplets — виртуальные частные серверы (VPS)
- Kubernetes — управляемый Kubernetes сервис
- App Platform — платформа для развертывания приложений
- Spaces — объектное хранилище, совместимое с S3
- Managed Databases — управляемые базы данных
- Load Balancers — балансировщики нагрузки
- Block Storage — дополнительные диски
- Monitoring — мониторинг инфраструктуры
Создание первого Droplet
1# Установка doctl (DigitalOcean CLI)
2# Linux
3cd ~ && wget https://github.com/digitalocean/doctl/releases/download/v1.98.1/doctl-1.98.1-linux-amd64.tar.gz
4tar xf ~/doctl-1.98.1-linux-amd64.tar.gz
5sudo mv ~/doctl /usr/local/bin
6
7# macOS
8brew install doctl
9
10# Аутентификация
11doctl auth init
12
13# Просмотр доступных образов
14doctl compute image list --public
15
16# Просмотр доступных размеров
17doctl compute size list
18
19# Создание SSH ключа
20ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
21
22# Добавление SSH ключа в DigitalOcean
23doctl compute ssh-key import my-key --public-key-file ~/.ssh/id_rsa.pub
24
25# Создание Droplet
26doctl compute droplet create my-droplet \
27 --image ubuntu-20-04-x64 \
28 --size s-1vcpu-1gb \
29 --region nyc3 \
30 --ssh-keys $(doctl compute ssh-key list --format ID --no-header)
31
32# Просмотр созданных Droplet
33doctl compute droplet list
34
35# Подключение по SSH
36ssh root@droplet-ip-address
Настройка веб-сервера на Droplet
1# Обновление системы
2apt update && apt upgrade -y
3
4# Установка Nginx
5apt install nginx -y
6
7# Запуск и автозагрузка Nginx
8systemctl start nginx
9systemctl enable nginx
10
11# Настройка firewall
12ufw allow OpenSSH
13ufw allow 'Nginx Full'
14ufw enable
15
16# Создание простого сайта
17cat > /var/www/html/index.html << EOF
18<!DOCTYPE html>
19<html>
20<head>
21 <title>My DigitalOcean Droplet</title>
22 <style>
23 body { font-family: Arial, sans-serif; text-align: center; margin-top: 50px; }
24 .container { max-width: 600px; margin: 0 auto; }
25 </style>
26</head>
27<body>
28 <div class="container">
29 <h1>Добро пожаловать на мой сервер!</h1>
30 <p>Этот сайт работает на DigitalOcean Droplet</p>
31 <p>Сервер запущен: $(date)</p>
32 </div>
33</body>
34</html>
35EOF
36
37# Проверка статуса Nginx
38systemctl status nginx
Работа с DigitalOcean Spaces
1# Установка s3cmd для работы с Spaces
2apt install s3cmd -y
3
4# Настройка s3cmd для DigitalOcean Spaces
5s3cmd --configure
6# Host Base: nyc3.digitaloceanspaces.com
7# Host Bucket: %(bucket)s.nyc3.digitaloceanspaces.com
8
9# Создание Space (bucket)
10s3cmd mb s3://my-space-name
11
12# Загрузка файла
13s3cmd put myfile.txt s3://my-space-name/
14
15# Синхронизация папки
16s3cmd sync ./local-folder s3://my-space-name/remote-folder/
17
18# Просмотр содержимого
19s3cmd ls s3://my-space-name/
20
21# Настройка публичного доступа
22s3cmd setacl s3://my-space-name/myfile.txt --acl-public
23
24# Использование CDN
25# Включается через веб-интерфейс DigitalOcean
Развертывание приложения с App Platform
1# .do/app.yaml
2name: my-web-app
3services:
4- name: web
5 source_dir: /
6 github:
7 repo: your-username/your-repo
8 branch: main
9 run_command: python app.py
10 environment_slug: python
11 instance_count: 1
12 instance_size_slug: basic-xxs
13 http_port: 5000
14 env:
15 - key: DATABASE_URL
16 scope: RUN_TIME
17 value: ${db.DATABASE_URL}
18 - key: FLASK_ENV
19 scope: RUN_TIME
20 value: production
21
22databases:
23- name: db
24 engine: PG
25 version: "13"
26 size: db-s-1vcpu-1gb
27 num_nodes: 1
28
29static_sites:
30- name: frontend
31 source_dir: /frontend/dist
32 github:
33 repo: your-username/your-frontend-repo
34 branch: main
35 build_command: npm run build
1# app.py - пример Flask приложения
2from flask import Flask, render_template, jsonify
3import os
4import psycopg2
5from datetime import datetime
6
7app = Flask(__name__)
8
9# Подключение к базе данных
10DATABASE_URL = os.environ.get('DATABASE_URL')
11
12def get_db_connection():
13 return psycopg2.connect(DATABASE_URL)
14
15@app.route('/')
16def home():
17 return render_template('index.html')
18
19@app.route('/api/status')
20def status():
21 return jsonify({
22 'status': 'healthy',
23 'timestamp': datetime.now().isoformat(),
24 'platform': 'DigitalOcean App Platform'
25 })
26
27@app.route('/api/users')
28def users():
29 try:
30 conn = get_db_connection()
31 cur = conn.cursor()
32 cur.execute('SELECT id, name, email FROM users LIMIT 10')
33 users = cur.fetchall()
34 cur.close()
35 conn.close()
36
37 return jsonify([{
38 'id': user[0],
39 'name': user[1],
40 'email': user[2]
41 } for user in users])
42 except Exception as e:
43 return jsonify({'error': str(e)}), 500
44
45if __name__ == '__main__':
46 app.run(host='0.0.0.0', port=5000)
Настройка Managed Database
1# Создание PostgreSQL кластера
2doctl databases create my-postgres-cluster \
3 --engine pg \
4 --version 13 \
5 --size db-s-1vcpu-1gb \
6 --region nyc3 \
7 --num-nodes 1
8
9# Просмотр баз данных
10doctl databases list
11
12# Получение connection string
13doctl databases connection my-postgres-cluster
14
15# Создание базы данных
16doctl databases db create my-postgres-cluster myapp
17
18# Создание пользователя
19doctl databases user create my-postgres-cluster myuser
20
21# Настройка firewall правил
22doctl databases firewalls add my-postgres-cluster \
23 --rule type:droplet,value:your-droplet-id
Мониторинг и алерты
1# Установка агента мониторинга на Droplet
2curl -sSL https://repos.insights.digitalocean.com/install.sh | sudo bash
3
4# Настройка алертов через doctl
5doctl monitoring alert policy create \
6 --type v1/insights/droplet/cpu \
7 --compare GreaterThan \
8 --value 80 \
9 --window 5m \
10 --entities droplet:your-droplet-id \
11 --enabled \
12 --description "High CPU usage alert"
13
14# Просмотр метрик
15doctl monitoring alert policy list
16
17# Создание dashboard (через веб-интерфейс)
18# Metrics доступны в разделе Monitoring
Основные регионы DigitalOcean
- NYC3 (Нью-Йорк) — основной регион США
- SFO3 (Сан-Франциско) — западное побережье США
- LON1 (Лондон) — европейский регион
- FRA1 (Франкфурт) — центральная Европа
- SGP1 (Сингапур) — азиатский регион
- TOR1 (Торонто) — канадский регион
Ценообразование DigitalOcean
- Basic Droplets — от $6/месяц за 1GB RAM, 1 vCPU
- General Purpose — от $48/месяц за 8GB RAM, 2 vCPU
- CPU-Optimized — от $48/месяц за 4GB RAM, 2 vCPU
- Memory-Optimized — от $48/месяц за 16GB RAM, 2 vCPU
- Почасовая оплата — оплата только за время использования
Когда использовать DigitalOcean
- Стартапы с ограниченным бюджетом
- Индивидуальные разработчики и малые команды
- Простые веб-приложения и сайты
- Обучение и эксперименты с облачными технологиями
- MVP и прототипы приложений
- Проекты, не требующие сложной инфраструктуры
Преимущества DigitalOcean
- Простота использования и понятный интерфейс
- Конкурентоспособные цены
- Отличная документация и туториалы
- SSD диски по умолчанию
- Быстрое развертывание серверов (55 секунд)
- Хорошая производительность сети
- Активное сообщество разработчиков
Недостатки DigitalOcean
- Ограниченный набор сервисов по сравнению с AWS/Azure
- Меньше enterprise функций
- Ограниченная глобальная инфраструктура
- Нет некоторых продвинутых сервисов (ML, IoT)
- Менее подходит для крупных корпораций
DigitalOcean vs конкуренты
- DigitalOcean vs AWS — DO проще и дешевле, AWS больше возможностей
- DigitalOcean vs Linode — похожие по простоте, разные в производительности
- DigitalOcean vs Vultr — DO лучше документация, Vultr больше локаций
Рекомендации по использованию
Для эффективного использования DigitalOcean рекомендуется:
- Начать с базового Droplet для изучения платформы
- Использовать Snapshots для резервного копирования
- Настроить мониторинг и алерты
- Изучить обширную документацию и туториалы
- Использовать Load Balancer при росте нагрузки
- Рассмотреть App Platform для простых приложений
- Настроить автоматические бэкапы важных данных
FAQ
Подходит ли DigitalOcean для продакшена?
Да, многие компании используют DigitalOcean в production, включая GitLab, Slack, Docker и другие. Важно правильно настроить мониторинг и резервное копирование.
Сколько стоит хостинг на DigitalOcean?
Базовый Droplet стоит $6/месяц. Для небольшого сайта или приложения общая стоимость может составлять $10-50 в месяц включая дополнительные сервисы.
Есть ли бесплатный уровень в DigitalOcean?
Постоянного бесплатного уровня нет, но новые пользователи часто получают кредиты на $100-200 на первые месяцы использования.