Heroku Был действительно отличный сервис для разработчиков, которые не хотят проводить время на инфраструктуре. До сих пор я загрузил все свои игрушечные проекты, потому что это быстрее сделать их доступными в Интернете, и я могу сосредоточиться больше на обучении и делать то, что мне нравится. Тем не менее, приходит время, когда я хочу узнать больше о «за сцене», поэтому я хочу поэкспериментировать с цифровым океаном, так как многие люди уже упоминали об этом. Удивительно, что не так много учебников было написано для того, что мне нужно в деталях, поэтому после того, как довольно погуглил, спрашивая вокруг и экспериментируя себя, я наконец-то работал. 😂
Вы готовы?
1. Подпишитесь на цифровую учетную запись океана
Сначала вам нужно зарегистрировать аккаунт. Щелчок Здесь это партнерская ссылка, которая даст вам 100 долларов бесплатно в течение 60 дней Отказ Как это круто! 😉 Вы можете использовать этот период для эксперимента и учиться без каких-либо стоимости. Примечание. Вам необходимо зарегистрироваться с помощью кредитной карты, чтобы вы могли быть проверены.
2. Установите капельку
Рядом с вашим аватаром в правом верхнем углу вы найдете яркую зеленую кнопку Создать Отказ Нажмите на него, а затем нажмите капельки Отказ И вы увидите эту страницу: Здесь мы выбираем Ubuntu 20.04 LTS, Общий CPU Basic, 5 в месяц План Отказ Конечно, не стесняйтесь выбирать то, что вам подходит лучше!
Прокрутите вниз и выберите Дата центр Это возле вашей целевой аудитории, затем выберите дополнительные варианты, проверьте IPv6 и Мониторинг Отказ
Мне нравится использовать SSH. в качестве аутентификации, чтобы вы могли генерировать ключ. Я уверен, что есть много учебных пособий для этого для этого. Я также предложил выбрать имя для ваших капельков. В зависимости от вас, вы можете выбрать резервную копию или нет. После всего этого нажмите на зеленую кнопку Создать капельку . Подождите несколько секунд, ваша капля готова! Вы сможете скопировать IP-адрес сейчас, и отныне мы оставим цифровой интерфейс океана и делать вещи в терминале.
3. Войдите и обновите свою систему Ubuntu
Теперь открыть терминал и введите
ssh root@youripaddress
Обратите внимание, что обычно вы не должны делать вещи с корнем. Больше мощности больше ответственности! Вы можете испортить вещи случайно, поэтому лучше создать пользователь. Для простоты я буду продолжаться с root. Примечание. Когда вы входите в систему как пользователь позже, вы должны предоставить достаточное значение пользователям вправо, чтобы написать несколько файлов, таких как некоторые файлы NGINX CONF. Я вставлю некоторые чтения дальнейших ссылок в конце.
Он спросит вас, хотите ли вы продолжить, затем введите да. Тогда вы увидите root @ dropletname: ~ #.
Давайте обновим сейчас. Обновление необязательно. Некоторые люди не делают этого вообще, решать вам.
sudo apt update sudo apt upgrade
4. Давайте установим Node.js
В типе терминала: (это последняя версия, но вы можете заменить 14 с 12, если вы хотите стабильную версию)
curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh sudo bash nodesource_setup.sh sudo apt install nodejs node -v
Когда вы видите вывод номера версии узла, как
v14.6.0
Мы успешно установили узел в нашей системе. АГА!
5. Давайте переместим наше репо на нашу каплю
Поскольку у нас уже есть приложение Node.js на Github, мы можем легко Git клонировать его здесь. Давайте сначала создадим папку, называемую приложениями для всех наших приложений.
mkdir apps cd apps git clone git clone https://github.com/username/repo.git ls -a
Теперь вы должны увидеть что-то вроде этого
. .. repo
Если вывод — это имя вашего репо, мы успешно скопировали наше репо здесь.
6. Установка зависимостей и прогон теста
Сначала сначала давайте пойдем в твою репо здесь
cd repo npm install npm start npm
Теперь перейдите на iPaddress: 3000 (или любой порт, на котором вы работаете)
Можете ли вы увидеть работу вашего приложения? Если так, хорошо сделано! 👍. Нажмите Ctrl + C, чтобы остановиться, как у нас еще много.
7. Настройте PM2, чтобы сохранить приложение
Теперь давайте установим PM2 по всему миру. Вы можете узнать больше о PM2 здесь Отказ
sudo npm install pm2@latest -g pm2 start app
Например, файл моего приложения находится в SRC, поэтому я CD к моим приложениям/репо, а затем запустить
pm2 start src/index.js
Что-то вроде этого отображается, и вы все равно сможете увидеть вашу iPaddress: 3000 (или любой другой порт) в вашем браузере, чтобы увидеть работу вашего приложения.
Чтобы убедиться, что ваше приложение начинается при перезагрузке вы можете ввести:
pm2 startup ubuntu
8. Настройте брандмауэр для блокировки порта
Когда вы напечатаете
sudo ufw status
Вы, вероятно, увидите статус: неактивен. Теперь давайте включим это
sudo ufw enable sudo ufw status
Теперь следует сказать статус: Active. Давайте позвольте несколько портов.
sudo ufw allow ssh sudo ufw allow http sudo ufw allow https
SSH — порт 22, HTTP-порт 80, порт HTTPS 443.
9. Настройте и настройте nginx в качестве обратного прокси
sudo apt update sudo apt install nginx sudo ufw allow 'Nginx HTTP' sudo ufw status
Теперь вы должны увидеть что-то вроде этого:
Теперь мы можем пойти в http://ipaddress (Обратите внимание, что нам больше не нужно печатать порт), и вы увидите следующее. Это означает, что вы делаете так далеко!
Теперь здесь приходит сложная часть. Поскольку я планирую разместить больше игрушечных проектов в одном капельке, которые также будут указывать на разные доменные имена (или имена поддоменов). Мы лучше создадим что-то дополнительно, вместо модификации по умолчанию.
Допустим, мы собираемся обслуживать текущее приложение на A.Example.com. Сначала давайте создадим что-то вроде этого:
sudo mkdir -p /var/www/a.example.com/html nano /var/www/a.example.com/html/index.html
Затем мы вставляем эти простые HTML здесь, он не будет отображаться, поэтому не нужно делать это красивым.
Welcome to a.example.com! Success! a.example.com server block is working!
Чтобы сохранить, нажмите Ctrl + X, да, нажмите Enter. Теперь у нас есть этот файл для обозначения позже в нашем другом файле CONF.
Сначала давайте создадим что-то вроде:
sudo nano /etc/nginx/sites-available/a.example.com
скопируйте и вставьте следующее на это
server { listen 80; listen [::]:80; server_name a.example.com; root /var/www/a.example.com/html; index index.html; location / { proxy_pass http://localhost:3000; #whatever port your app runs on 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; } }
Ctrl + X, да, нажмите Enter.
Теперь, когда у нас есть наш файл блокировки сервера, нам нужно включить его. Мы можем сделать это, создавая символическую ссылку из этого файла к каталогу с поддержкой сайтов, который nginx читает во время запуска. Позже, когда мы добавляем больше приложений и больше доменов, мы можем скопировать одни и те же шаги.
Мы можем создавать эти ссылки, набрав:
sudo ln -s /etc/nginx/sites-available/a.example.com /etc/nginx/sites-enabled/
Чтобы избежать возможной проблемы памяти Cash Bucket, которая может возникнуть из добавления дополнительных имен серверов, необходимо настроить одно значение в файле/etc/nginx/nginx.conf. Откройте файл:
sudo nano /etc/nginx/nginx.conf
Найти Server_names_hash_bucket_size 64 Директива и удалить символ #, чтобы вотворить линию.
Теперь давайте посмотрим, в порядке ли наша настройка. Тип
sudo nginx -t
Если вы видите эти строки, то вы успешны.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Теперь мы можем перезапустить nginx.
sudo service nginx restart
10. Установите свой домен/поддоменное имя
Вам нужно установить запись. Так как я управляю свое доменное имя в NetLify, это относительно легко сделать. Например, я хочу, чтобы домен звучит как meowlo.annietaylorchen.com, поэтому я настроил его, как показано ниже. Обратите внимание, что для вашего доменного имени может занять до 24-28 часов до доменного имени, поэтому вам нужно быть немного пациентом на данный момент.
Использовать Whatsmydns Чтобы проверить, доступно ли ваше доменное имя или нет.
11. Настройка переменных среды
Если вы используете некоторые ключи API, нам нужно настроить переменные среды. Поскольку я уже использую дотенв в моем приложении Node.js, я сделаю так, как следует. Я не знаю, является ли это лучшая практика, но это как-то работало для меня.
Поскольку мы скопировали наш Git от Github и, естественно, мы не подталкиваем наш файл .env там, теперь на нашей капельке Digital Ocean у нас тоже нет. Но нам нужно использовать его при запуске наших приложений.
В настоящее время CD в папку приложения и введите
touch .env nano .env
Теперь вы копируете свои ключи API, как
API_KEY=49upogjergeu
Затем Ctrl + X, да, нажмите Enter, чтобы сохранить. Теперь вы напечатаете
cat .env
Вы должны быть в состоянии увидеть, как они появляются в вашем терминале. Хорошо, теперь убедитесь, что когда вы используете Dotenv, вы пишете что-то вроде
if (process.env.NODE_ENV == 'production'){ require('dotenv').config() }
И в вашем сценарии NPM это похоже на:
"start": "NODE_ENV=production node src/index.js",
Теперь давайте проинформируем PM2 об этом
NODE_ENV=production pm2 restart src/index.js --update-env
Теперь ваши API должны работать! 😺
12. Добавить SSL с летанием
Теперь давайте вернемся в наш домашний каталог.
cd sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d a.example.com sudo certbot renew --dry-run
Просто следуйте инструкциям, которые они предсказывают в терминале. Если вы не видите ошибку, мы все набор. Теперь обновите свой браузер, вы должны увидеть ваш A.Example.com, обслуживая свои приложения, API, и он тоже безопасен! Pfew! Это много, я знаю! Поздравляю, если вы доберетесь до конца. Давайте высоким пятью! 🙌
Последнее, но не менее важное, я сделал это как можно короче. Есть довольно подробности, я не охватил, но думаю, если у вас есть время, вы должны прочитать дальше позже.
- Full Node.js Развертывание — Nginx, SSL с помощью Brad Traversy — Примечание. Это не последняя версия, которую я использовал, но многие концепции одинаковы.
- Как установить Git на Ubuntu 20.04 — Убунту обычно поставляется с Git уже, но вы можете настроить свое собственное имя и адрес электронной почты и т. Д.
- Как настроить автоматическое развертывание с Git с VPS — учит вас, как совершать от местного репо через Git, а как настроить бета-версию
- Как настроить приложение Node.js для производства на Ubuntu 20.04 — Общее руководство для приложения Node.js
- Как установить Nginx на Ubuntu 20.04 — Общее руководство для Nginx
- Как настроить блоки сервера Nginx (виртуальные хосты) на Ubuntu 16.04 — Если вы хотите обслуживать разные сайты на одних и тех же каплях, это полезно
- Как защитить Nginx с помощью Enverypt на Ubuntu 20.04 — Как добавить SSL на свой сайт
- Как установить и использовать PostgreSQL на Ubuntu 20.04 — Мой простой приложение Node.js не требует базы данных, но вам, вероятно, понадобится один
Оригинал: «https://dev.to/annietaylorchen/migrate-node-js-app-from-heroku-to-digital-ocean-ubuntu-20-04-with-nginx-pm2-ssl-1kpm»