Skip to content

Instantly share code, notes, and snippets.

@LupusX5
Last active March 30, 2022 22:27
Show Gist options
  • Save LupusX5/e2976f5aabca3bde92af3e7a7e06bd7b to your computer and use it in GitHub Desktop.
Save LupusX5/e2976f5aabca3bde92af3e7a7e06bd7b to your computer and use it in GitHub Desktop.

Инструкция по настройке и запуску сервера на Ubuntu для приложений, написанных на Node.js. Инструкция также описывает настройку Nginx и Let's Encrypt.

Заменяемые значения:

{REPO_URL} – URL нужного репозитория из GitHub.

{DIRNAME} – директория, в которой будет располагаться проект.

{REPO_NAME} – директория, созданная внутри {DIRNAME}. Называется так же, как и репозиторий.

{APP_NAME} – название приложения.

{DOMAIN} – домен приложения.

{WWW.DOMAIN} – домен приложения с www.

{PORT_NUMBER} – порт, который прослушивается приложением в файле index.js или index.ts.

Инструкция:

  1. sudo apt update – загрузить обновления пакетов Linux.
  2. sudo apt upgrade – установить загруженные обновления Linux.
  3. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash – установить nvm manager.
  4. source ~/.bashrc – вернуться к чтению bash.
  5. nvm – проверить установку.
  6. nvm install node – установка Node.js.
  7. mkdir {DIRNAME} – создать папку, в которой будет храниться проект и его файлы/
  8. cd projects – перейти в папку проекта.
  9. git clone {REPO_URL} – клонирование репозитория.
  10. cd {REPO_NAME} – перейти в папку с репозиторием.
  11. npm install – установка зависимостей.
  12. npm start – запуск приложения и проверка.
  13. ctrl+c – нажать дважды, чтобы остановить приложение.
  14. npm install pm2 -g – глобальная установка pm2 (отвечает за автоматизацию и стабильность работы приложения).
  15. pm2 start index.js --name {APP_NAME} – программа для запуска нашего приложения.
  16. pm2 startup – программа для запуска нашего приложения в случае перезагрузки линукса.
  17. pm2 save – программа для сохранения конфигурации pm2.

Включение файрвола

  1. sudo ufw status – проверить наличие файрвола.
  2. sudo ufw enable – включить файрвол, если он выключен.
  3. sudo ufw app list – список доступных сервисов для работы с файрволом.
  4. sudo ufw allow ssh – включение ssh.
  5. sudo ufw allow http – включение http.
  6. sudo ufw allow https – включение https.
  7. sudo ufw reload – перезапуск файрвола для обновления настроек.

Настройка Nginx

  1. sudo apt install nginx – установка nginx.
  2. cd /etc/nginx/sites-available/ – список доступных сайтов.
  3. ls – должно быть «default».
  4. cat default – просмотреть содержимое файла «default» (важно, чтобы там не было пусто).
  5. cd – вернуться в корневую директорию.
  6. nano /etc/nginx/sites-available/{APP_NAME} – создание конфигурации в отдельном файле с помощью редактора Nano. В конфигурации можно указать любое кол-во доменов.

Конфигурация:

server {
     listen 80;

     server_name {DOMAIN} {WWW.DOMAIN};

     location / { 
        proxy_pass http://localhost:{PORT_NUMBER};
        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

  1. nginx -t – должно показать две строки. В конце первой: ok, в конце второй: successful.
  2. ln -s /etc/nginx/sites-available/{APP_NAME} /etc/nginx/sites-enabled/{APP_NAME} – скопировать созданный сервер в папку sites-enabled с именем {APP_NAME}.
  3. nginx -t – должно показать две строки. В конце первой: ok, в конце второй: successful.
  4. sudo service nginx restart – перезапуск Nginx.
  5. sudo service nginx status – в строке Active должно быть написано зелёным цветом active (running).

Установка SSL

  1. curl -o- https://raw.githubusercontent.com/vinyll/certbot-install/master/install.sh | bash – установка certbot от Let’s Encrypt.
  2. certbot --version – проверить версию certbot (чтобы убедиться, что он действительно установился).
  3. sudo certbot --nginx -d {DOMAIN} -d {WWW.DOMAIN} – добавляем столько доменов, сколько нужно.

———Конец———

Полезные команды

  1. pm2 restart {NAME} – перезапуск приложения после обновления (чтобы сбросить кэш).
  2. git stash – «сохранение» текущей версии проекта локально перед командой git pull.
  3. git pull {REPO-URL} – получить обновление приложения из GitHub.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment