Node.js — это кроссплатформенная среда выполнения с открытымисходным кодом, построенная на базе Chrome V8 Engine, котораяпозволяет разработчикам создавать масштабируемые ивысокопроизводительные сетевые приложения.
Описание
Данный шаблон позволяет быстро развернуть сервер NodeJS v14.15.5 c Nginx 1.18.0, NPM 6.14.11, Yarn 1.22.10, PM2 4.5.4
В дополнение к установленному программному обеспечению, на образе выполнены следующие настройки:
Активирован firewall и разрешены порты SSH (22), HTTP (80), HTTPS (443).
Начало работы с Node js
После создания сервера вы можете вставить его IP-адрес в браузер и увидеть надпись “Hello World!”. Это результат работы тестового приложения, расположенного в /var/www/hello
Чтобы остановить его, выполните команду:
pm2 delete hello
Следующая команда удалит его из конфигурации и автозагрузки:
pm2 save
Вы можете залить код своего приложения любым удобным способом (например, через git clone), после чего нужно поменять порт 3000 на порт вашего приложения в файле /etc/nginx/sites-enabled/default (строка proxy_pass http://localhost:3000;)
Запускать приложения NodeJS также лучше через PM2. Следующая команда запустит приложение под системным пользователем nodejs c ограниченными правами:
pm2 start /var/www/yourapp/app.js -u nodejs
pm2 save
Подробнее об управлении процессами PM2 вы можете прочитать в официальной документации: https://pm2.keymetrics.io/docs/
Nginx предварительно настроен на отдачу статических файлов из каталога /var/www/hello/public . Если хотите настроить отдачу статических файлов своего проекта, просто измените путь после слова “root” на каталог со статическими файлами в файле /etc/nginx/sites-enabled/default
Настройка HTTPS (Опционально)
Для настройки HTTPS у VDS должно быть действующее DNS имя, укажите в /etc/nginx/sites-enabled/default в разделе server имя сервера (например):
server_name opencart.mydomain.ru;
Переазапустите nginx:
service nginx restart
Запустите certbot:
sudo /usr/local/bin/certbot-auto --nginx
Введем свой e-mail, cогласимся с условиями сервиса (A), Подписка на рассылку (опционально) (N), выберем доменные имена для которых нужно издать сертификат (Enter для всех).
В случае если все прошло без ошибок, мы увидим сообщение об успешной выдаче сертификатов и настройке сервера:
Congratulations! You have successfully enabled ...
После этого подключения на 80 порт будут перенаправляться на 443 (https).
Добавим в /etc/crontab для автоматического обновления сертификатов:
# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"