У цьому посібнику ми розглянемо процес розгортання Node.js додатка на інстансі Amazon EC2 (Amazon Linux). Ми будемо використовувати PM2 для керування додатком, налаштуємо Nginx як зворотний проксі та забезпечимо додаток SSL сертифікатом. Крім того, ми вкажемо піддомен, який буде вказувати на публічну IP-адресу інстансу EC2.
Попередні вимоги
- Наявність облікового запису в AWS з доступом для запуску інстансів EC2.
- Зареєстроване доменне ім’я.
- Базові знання команд Linux.
Крок 1: Запуск інстансу EC2 та призначення Elastic IP
- Увійдіть в консоль управління AWS.
- Перейдіть до панелі керування EC2 та запустіть новий інстанс Amazon Linux 2.
- Призначте Elastic IP для інстансу для отримання статичної публічної IP-адреси.
- Оновіть групу безпеки, щоб дозволити вхідний трафік на порти 22 (SSH), 80 (HTTP) та 443 (HTTPS).
Крок 2: Оновлення інстансу EC2
- Підключіться до вашого інстансу EC2 за допомогою SSH.
2.
Запустіть наступну команду, щоб оновити інстанс:
sudo yum update -y
Крок 3: Встановлення Node.js та NVM
- Встановіть Менеджер версій Node (NVM):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
source ~/.bashrc
- Встановіть потрібну версію Node.js за допомогою NVM:
nvm install 16 # Замість 16 вкажіть потрібну вам версію
- Перевірте встановлення:
node -v
Крок 4: Встановлення PM2
- Встановіть PM2 глобально для керування вашим Node.js додатком:
npm install -g pm2
- Запустіть ваш додаток за допомогою PM2:
pm2 start app.js # Замість app.js вкажіть ваш головний файл
pm2 save
pm2 startup
Крок 5: Встановлення та налаштування Nginx
- Встановіть Nginx:
sudo yum install nginx -y
- Запустіть і налаштуйте Nginx:
sudo systemctl start nginx
sudo systemctl enable nginx
- Змініть правила входу в групі безпеки 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;
}
}
- Перевірте та перезавантажте конфігурацію:
sudo nginx -t
sudo systemctl reload nginx
Крок 6: Налаштування піддомену на публічну IP-адресу EC2
- Увійдіть до вашого реєстратора доменів.
- Створіть запис A для вашого піддомену (наприклад,
app.yourdomain.com
) і вкажіть на Elastic IP-адресу вашого EC2 інстансу.
Крок 7: Встановлення та налаштування SSL сертифіката
- Встановіть Certbot:
sudo yum install -y python3-certbot-nginx
2.
Отримайте SSL сертифікат для вашого домену:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
- Перевірте встановлення сертифіката та перезавантажте Nginx:
sudo systemctl reload nginx
- Налаштуйте автоматичне поновлення сертифіката:
sudo crontab -e
Додайте наступний рядок для планування поновлення:
0 0 * * * certbot renew --quiet
Крок 8: Тестування деплою
- Відкрийте браузер і перейдіть на
http://yourdomain.com
абоhttps://yourdomain.com
. - Переконайтесь, що додаток працює та захищений через HTTPS.
Висновок
Ви успішно розгорнули Node.js додаток на EC2 інстансі за допомогою PM2 та Nginx. Крім того, ви захистили додаток SSL сертифікатом і налаштували піддомен для вашого EC2 інстансу. Така конфігурація забезпечує доступність, безпеку та здатність обробляти виробничий трафік вашого додатку.
Перекладено з: Deploying a Node.js App on Amazon EC2 with PM2, Nginx, and SSL