Розгортання Node.js додатку на Amazon EC2 за допомогою PM2, Nginx та SSL

pic

У цьому посібнику ми розглянемо процес розгортання Node.js додатка на інстансі Amazon EC2 (Amazon Linux). Ми будемо використовувати PM2 для керування додатком, налаштуємо Nginx як зворотний проксі та забезпечимо додаток SSL сертифікатом. Крім того, ми вкажемо піддомен, який буде вказувати на публічну IP-адресу інстансу EC2.

Попередні вимоги

  • Наявність облікового запису в AWS з доступом для запуску інстансів EC2.
  • Зареєстроване доменне ім’я.
  • Базові знання команд Linux.

Крок 1: Запуск інстансу EC2 та призначення Elastic IP

  1. Увійдіть в консоль управління AWS.
  2. Перейдіть до панелі керування EC2 та запустіть новий інстанс Amazon Linux 2.
  3. Призначте Elastic IP для інстансу для отримання статичної публічної IP-адреси.
  4. Оновіть групу безпеки, щоб дозволити вхідний трафік на порти 22 (SSH), 80 (HTTP) та 443 (HTTPS).

Крок 2: Оновлення інстансу EC2

  1. Підключіться до вашого інстансу EC2 за допомогою SSH.
    2.
    Запустіть наступну команду, щоб оновити інстанс:
sudo yum update -y

Крок 3: Встановлення Node.js та NVM

  1. Встановіть Менеджер версій Node (NVM):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash  
source ~/.bashrc
  1. Встановіть потрібну версію Node.js за допомогою NVM:
nvm install 16 # Замість 16 вкажіть потрібну вам версію
  1. Перевірте встановлення:
node -v

Крок 4: Встановлення PM2

  1. Встановіть PM2 глобально для керування вашим Node.js додатком:
npm install -g pm2
  1. Запустіть ваш додаток за допомогою PM2:
pm2 start app.js # Замість app.js вкажіть ваш головний файл  
pm2 save  
pm2 startup

Крок 5: Встановлення та налаштування Nginx

  1. Встановіть Nginx:
sudo yum install nginx -y
  1. Запустіть і налаштуйте Nginx:
sudo systemctl start nginx  
sudo systemctl enable nginx
  1. Змініть правила входу в групі безпеки EC2, щоб дозволити трафік на порт 80

4.
Оновіть конфігурацію Nginx:

sudo nano /etc/nginx/conf.d/yourdomain.com.conf

Додайте наступний вміст, замінивши yourdomain.com та localhost:5000 на ваш домен та деталі додатку:

server {  
 server_name yourdomain.com www.yourdomain.com;  

 location / {  
 proxy_pass http://localhost:5000;  
 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;  
 }  
}
  1. Перевірте та перезавантажте конфігурацію:
sudo nginx -t  
sudo systemctl reload nginx

Крок 6: Налаштування піддомену на публічну IP-адресу EC2

  1. Увійдіть до вашого реєстратора доменів.
  2. Створіть запис A для вашого піддомену (наприклад, app.yourdomain.com) і вкажіть на Elastic IP-адресу вашого EC2 інстансу.

Крок 7: Встановлення та налаштування SSL сертифіката

  1. Встановіть Certbot:
sudo yum install -y python3-certbot-nginx

2.
Отримайте SSL сертифікат для вашого домену:

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  1. Перевірте встановлення сертифіката та перезавантажте Nginx:
sudo systemctl reload nginx
  1. Налаштуйте автоматичне поновлення сертифіката:
sudo crontab -e

Додайте наступний рядок для планування поновлення:

0 0 * * * certbot renew --quiet

Крок 8: Тестування деплою

  1. Відкрийте браузер і перейдіть на http://yourdomain.com або https://yourdomain.com.
  2. Переконайтесь, що додаток працює та захищений через HTTPS.

Висновок

Ви успішно розгорнули Node.js додаток на EC2 інстансі за допомогою PM2 та Nginx. Крім того, ви захистили додаток SSL сертифікатом і налаштували піддомен для вашого EC2 інстансу. Така конфігурація забезпечує доступність, безпеку та здатність обробляти виробничий трафік вашого додатку.

Перекладено з: Deploying a Node.js App on Amazon EC2 with PM2, Nginx, and SSL

Leave a Reply

Your email address will not be published. Required fields are marked *