Чому AWS EC2 для Node.js?
AWS EC2 забезпечує гнучку обчислювальну потужність у хмарі, дозволяючи вам розгортати додатки з високою доступністю та масштабованістю. В поєднанні з SSL, це гарантує безпечну комунікацію між вашим бекендом та клієнтами, що підвищує довіру користувачів та SEO рейтинги.
Крок 1: Налаштування EC2 інстансу
Запуск інстансу:
- Увійдіть у свою AWS Management Console.
- Перейдіть на панель EC2 та натисніть Launch Instance.
- Виберіть останню версію Amazon Linux 2023 або Ubuntu 22.04 AMI для кращої безпеки та сумісності.
- Виберіть тип інстансу (наприклад, t2.micro для безкоштовного рівня або t3.small для продакшн).
Налаштування деталей інстансу:
- Переконайтесь, що автоматично призначена публічна IP-адреса включена.
- Додайте групу безпеки, яка дозволяє трафік на портах 22 (SSH), 80 (HTTP), та 443 (HTTPS).
Ключова пара: Створіть нову пару ключів або використовуйте існуючу. Завантажте файл .pem
, щоб отримати доступ до інстансу.
Запуск інстансу: Натисніть Launch та чекайте, поки інстанс ініціалізується.
Крок 2: Налаштування Node.js на EC2
SSH доступ до інстансу:
ssh -i "your-key.pem" ec2-user@your-ec2-public-ip
Встановлення Node.js:
Для Amazon Linux:
sudo yum update -y
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo yum install -y nodejs
Для Ubuntu:
sudo apt update && sudo apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Перевірка встановлення:
node -v
npm -v
Завантаження вашого Node.js додатку:
Використовуйте scp
або Git для передачі файлів вашого додатку:
scp -i "your-key.pem" -r /path/to/your/app ec2-user@your-ec2-public-ip:/home/ec2-user
Крок 3: Встановлення та налаштування PM2
Встановлення PM2:
sudo npm install -g pm2
Запуск вашого додатку:
pm2 start app.js
pm2 save
pm2 startup
Дозволити трафік на порту 80:
sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
Крок 4: Налаштування домену та SSL сертифікату
Прив'язка домену до вашого EC2 інстансу:
- Оновіть A record вашого домену в DNS-постачальника, щоб він вказував на публічну IP-адресу вашого EC2 інстансу.
Встановлення Nginx:
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
Встановлення Certbot для SSL:
Для Amazon Linux:
sudo yum install -y certbot python3-certbot-nginx
Для Ubuntu:
sudo apt install -y certbot python3-certbot-nginx
Налаштування SSL за допомогою Certbot:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Автоматичне оновлення SSL:
sudo crontab -e
Додайте цей рядок для оновлення SSL кожні 3 місяці:
0 0 * * 0 certbot renew --quiet
Крок 5: Оновлення Nginx для зворотного проксі
Редагування конфігурації Nginx:
sudo nano /etc/nginx/conf.d/yourdomain.com.conf
Додайте цю конфігурацію:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Перевірка та перезапуск Nginx:
sudo nginx -t
sudo systemctl restart nginx
Крок 6: Оптимізація для SEO
Використання HTTPS: Google надає перевагу безпечним вебсайтам у своїх рейтингах.
Паралелізм: Поки Worker виконує обчислення, головна нитка залишається вільною для виконання інших задач.
🏗 Випадки використання Worker Threads
Worker Threads ідеально підходять для задач, які потребують великої обчислювальної потужності, таких як:
- Обробка великих файлів: Стиснення/розпакування або перетворення даних.
- Обробка зображень/відео: Застосування фільтрів, зміна розміру зображень або конвертація відео.
- Математичні обчислення: Наукові симуляції, статистичний аналіз або фінансові моделі.
- Машинне навчання: Інференція або навчання малих моделей безпосередньо в Node.js.
👩💻 Висновок
Event Loop чудово підходить для неблокуючих операцій, але він не був спроектований для обробки важких обчислювальних задач. Для таких випадків Worker Threads виступають як потужне рішення, що дозволяє забезпечити паралелізм і покращити продуктивність додатків на Node.js.
💬 Сподобався цей контент? Ви вже використовували Worker Threads або маєте питання щодо Event Loop? Поділіться своїм досвідом або запитаннями в коментарях! 🚀
І якщо цей пост був корисним, не забувайте поставити лайк і поділитися ним з вашою мережею! 😄
Перекладено з: 🚀 Worker Threads no Node.js + Entendendo o Event Loop 🔄🧵