Как запускать Node.js приложения на своем сервере VDS


Команды:

Подключение к серверу по SSH
ssh ваш_логин@ip_адрес_вашего_сервера

Установка git на сервере
sudo apt-get install git

Установка Node.js на сервере
curl -sL deb.nodesourse.com/setup_12.x | sudo -E bash — sudo apt install nodejs

Установка pm2:
sudo npm install pm2 -g

Установка Nginx на сервере
sudo apt install nginx

Работа с Nginx конфигами
Редактировать стандартный конфиг: sudo nano /etc/nginx/sites-available/default

Код для конфига:

server {
listen 80;
listen [::]:80;

root /var/www/html;

index index.html index.htm index.nginx-debian.html;

server_name доменное_имя;

location / {
proxy_pass localhost:ваш_порт;
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 service nginx restart

Создание собственного конфига:
cd /etc/nginx/sites-available
nano название_вашего_конфига (например my_conf_for_site)
sudo ln -s /etc/nginx/sites-available/название_вашего_конфига /etc/nginx/sites-enabled/

VK: vk.com/areawebsu
WS: areaweb.su

Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX, Inc.)


РИТ 2017, Backend Conf

Тезисы:
backendconf.ru/2017/abstracts/2710.html

В данном докладе я дам обзор системных интерфейсов, которые предоставляет Linux для эффективной обработки запросов. В частности, речь пойдет о мультиплексировании ввода-вывода, отправке файлов и многопоточной обработке входящих соединений. Расскажу о нюансах и недостатках в сравнении с аналогичными интерфейсами других unix-подобных операционных систем. Личный опыт показывает, что продуманность и качество реализации интерфейса для прикладных программ — это, к сожалению, довольно слабая сторона ядра Linux.

Установка бесплатного SSL-сертификата (A-grade) Lets Encrypt на nginx (Ubuntu 16.04)


Установка бесплатного SSL-сертификата (A-grade) Lets Encrypt на nginx (Ubuntu 16.04):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/nginx.key -out /etc/nginx/nginx.crt #Генерируем самоподписанный сертификат
sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048 #Генерируем ключ для шифрования (необязательно, необходимо для оценки A)
sudo nano /etc/nginx/sites-enabled/default #Редактируем настройки nginx
//(раскомментировать listen 443 ssl default_server; и изменить server_name _; ssl_dhparam /etc/nginx/dhparam.pem;)
//(добавить ssl_certificate /etc/nginx/nginx.crt; ssl_certificate_key /etc/nginx/nginx.key; )
//DNS должен корректно указывать на наш сервер по всем именам, порты 80 и 443 должны быть открыты
sudo nginx -t # Проверим что конфиг nginx без ошибок
sudo service nginx reload #Перезапустим nginx и проверим что SSL работает
sudo apt-get update #Обновим индексы пакетов
sudo apt-get install software-properties-common #Установим пакет для управления репозиториями
sudo add-apt-repository ppa:certbot/certbot #Добавим репозиторий certbot
sudo apt-get update #Еще раз обновим индексы пакетов
sudo apt-get install python-certbot-nginx #Установим certbot с плагином для nginx
sudo certbot --nginx #Запускаем «мастер» установки сертификата
sudo crontab -e #Отредактируем root cron
0 3 11 */2 * /usr/bin/certbot renew --post-hook «systemctl reload nginx» --force-renew #Обновляем сертификат в 3 утра 11 числа каждого 2-го месяца и перезагружаем конфиг в nginx

www.ssllabs.com/ssltest/ — Тест SSL Grade
certbot.eff.org/#ubuntuxenial-nginx — Официальное руководство Certbot
Использована музыка Lee Rosevere