Як налаштувати програму Node Koa.js на Ubuntu 16.04 LTS

У цьому підручнику ми навчимося налаштувати веб-додаток Koa.js для виробництва, використовуючи Node.js. Ми також зв’яжемо зразок домену зі зворотним проксі-сервером, використовуючи Apache, і дізнаємося, як керувати ним за допомогою належного менеджера процесів. Без зайвих розмов, почнемо.

Короткий опис Node.js, Koa.js і Apache

Node.js – це швидка міжплатформна платформа JavaScript на основі двигуна Chrome V8. Він використовується як у настільних, так і в серверних програмах і відомий своєю однопоточною обробкою циклу подій. Node.js містить реєстр пакетів під назвою Node Package Manager (NPM), який містить понад півмільйона пакетів. Пакунки (або модулі) NPM є основною основою Node.js, оскільки вони є керованим спільнотою кодом, який може бути корисним у вашій програмі Node.js. У нашому додатку Koa.js Node.js є основною частиною його функції.

Koa.js — це мінімалістичний веб-фреймворк, побудований на платформі Node.js. Створена тією ж командою, яка стоїть за популярним фреймворком Express.js, його мета полягає в подальшому мінімізації і без того мінімалістичного фреймворку Express.js, виключаючи проміжне програмне забезпечення з його ядра. Основною особливістю Koa.js є той факт, що немає зворотних викликів. Koa.js побудовано на основі генераторів ES6 і функцій ES6, таких як Promises.

Apache — популярний веб-сервер з відкритим кодом, який використовується як базова відправна точка для веб-серверів. У цьому підручнику ми будемо використовувати Apache як зворотний проксі-сервер, що дозволить нам пов’язати нашу програму зі зразком домену. Якщо у вас немає домену, цей посібник все одно працюватиме для вас, з тією лише різницею, що веб-сайт працюватиме на вашому VPS IP, а не на домені.

Налаштування Node.js

Як і в будь-якому фреймворку Node.js, вам потрібно буде встановити Node.js на вашому VPS. Заради цього підручника я припускаю, що у вас уже встановлено Node.js у вашій системі. Якщо ні, ви можете просто дотримуватись інструкцій тут .

Налаштування нашого каталогу програм

Нам потрібно створити папку, яка міститиме основні файли нашої програми.

mkdir site

Не соромтеся замінити siteна будь-яке інше ім’я каталогу, яке ви хочете. Далі нам потрібно буде ініціалізувати наш файл пакета Node.js. Перейдіть до каталогу, який ви щойно створили, запустіть npm initі виконайте підказки. У підсумку це має виглядати приблизно так:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Koa.js Site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "yourname",
  "license": "ISC"
}

Встановлення Koa.js

Тепер, коли ми налаштували наш каталог, ми можемо перейти до встановлення Koa.js. У поточному робочому каталозі /siteвведіть наступне.

npm install koa

Це завантажить модуль Koa.js з NPM і встановить його в каталозі нашого проекту для подальшого використання. Далі ми створимо наш зразок файлу програми, який міститиме наш код програми. Для цього створіть index.jsфайл.

nano index.js

Потрапивши у файл, створіть зразок програми.

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
     ctx.body = 'Hello World';
 });

app.listen(3000);
console.log('Website is live!')

Збережіть і закрийте файл. CTRL+ X.

Ми хочемо переконатися, що наша програма працює належним чином. Щоб запустити його, запустіть node index.js, і ви побачите Website is liveв консолі.

Встановлення Apache

Тепер, коли ми знаємо, що наш веб-сайт функціонує, ми можемо перейти до встановлення Apache та його залежностей.

sudo apt install -y libapache2-mod-proxy-html libxml2-dev

Щоб використовувати функцію зворотного проксі, знайдену в Apache, нам потрібно ввімкнути необхідні модулі.

a2enmod proxy
a2enmod proxy_http
a2enmod proxy_ajp
a2enmod rewrite
a2enmod deflate
a2enmod headers
a2enmod proxy_balancer
a2enmod proxy_connect
a2enmod proxy_html

Деякі з цих модулів, можливо, вже ввімкнено, але завжди корисно їх перевіряти.

Тепер нам потрібно відредагувати файл конфігурації за замовчуванням для Apache.

sudo nano /etc/apache2/sites-enabled/000-default.conf

Тут нам потрібно буде додати блок для нашої програми.

<VirtualHost *:*>
    ProxyPreserveHost On
    ProxyPass / http://0.0.0.0:3000/
    ProxyPassReverse / http://0.0.0.0:3000

    ServerName localhost
</VirtualHost>

Збережіть файл, CTRL+ X.

Ви можете помітити, що ми використовуємо порт 3000як порт для нашого ProxyPassта ProxyPassReverseIP. Оскільки це той самий порт, на якому ми запускаємо нашу програму Koa.js, необхідно ввести правильний порт.

Щойно зміни будуть внесені, нам потрібно буде перезапустити Apache та перезапустити нашу програму Koa.js.

sudo systemctl restart apache2

Це гарантує, що наш файл конфігурації активний і готовий до роботи, коли ми запускаємо нашу програму Koa.js. Після перезавантаження Apache поверніться до каталогу свого сайту та запустіть програму Koa.js, як ми це робили раніше. У веб-переглядачі перейдіть до http://yourdomainабо http://yourip:, і ви побачите «Hello World».

Керування нашим додатком за допомогою systemd

Тепер, коли ми розглянули основи створення прикладу програми Koa.js, ми розуміємо, що у виробничому середовищі запускати програму, як ми зараз, недоцільно. Менеджер процесів, безумовно, є вимогою. Ось тут у гру вступає systemd. Простіше кажучи, systemd складається з програмного забезпечення, яке забезпечує будівельні блоки для системи Linux. Подібно до "init", він забезпечує систему керування процесами користувача після запуску системи. У випадку з нашою програмою systemd дозволяє нам автоматично запускати наш веб-сайт після перезавантаження системи, якщо станеться подія, яка порушить роботу системи. Він також надає набір інструментів, які можуть стати в нагоді під час керування нашим додатком. Найприємніше те, що він вбудований в Ubuntu 16.04 LTS, тому нам не потрібно встановлювати будь-яке додаткове програмне забезпечення.

Створіть службу systemd

Все, що нам потрібно для запуску нашої програми, буде міститись у файлі під назвою service. У ньому містяться відомості про наш додаток, наприклад його назва, каталог, середовище тощо. Щоб створити наш системний файл, відкрийте текстовий редактор.

sudo nano /lib/systemd/system/site.service

Відредагуйте та збережіть файл таким чином.

[Unit]
Description=desc here
Documentation=https://example.com
After=network.target

[Service]
Environment=NODE_PORT=3000
Type=simple
User=youruser
ExecStart=/usr/bin/node /home/[youruser]/site/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Замініть youruserім’ям користувача вашого сервера. Ось короткий опис важливих полів:

  • After - Це повідомляє systemd, щоб перед запуском нашої програми зачекати, поки мережевий інтерфейс буде готовий.
  • Environment- Тут ми можемо вказати змінні середовища для нашої програми. Наш порт Node.js є одним із них.
  • Type - Це повідомляє systemd, що нашу програму можна просто запустити, без роздвоєння привілеїв користувача тощо.
  • User- Це повідомляє systemd, що ми хочемо запустити програму під нашим обліковим записом користувача, що рекомендується. Запуск програм від імені користувача root може призвести до багатьох компромісів у безпеці.
  • ExecStart - По суті, команда, яку systemd запускатиме для запуску нашої програми, подібно до того, як ми запускали її вручну раніше.
  • Restart- Повідомляє systemd, за яких умов перезапустити нашу програму. У цьому випадку ми хочемо перезапустити наш веб-сайт у разі помилки.

Запустіть службу systemd

Тепер ми готові запустити нашу службу systemd.

sudo systemctl daemon-reload

Це необхідно, коли файл служби systemd змінюється, щоб systemd реєстрував будь-які нові внесені зміни.

Потім запустіть програму.

sudo systemctl start site

Перейдіть на сайт у своєму браузері ще раз, щоб переконатися, що все працює.

Ключові функції управління системою

  • stop - Повністю зупиняє програму.
  • restart - Зупиняє програму та запускає її знову під новим процесом.
  • enable - Вказує systemd запускати програму щоразу, коли ви запускаєте свій комп'ютер.
  • status - Показує інформацію про поточну запущену програму, таку як час роботи, стан програми тощо.

Щоб скористатися будь-якою з цих функцій, виконайте наступне.

systemctl <function> site

Висновок

Ми успішно налаштували програму Koa.js і дізналися, як повернути її проксі-сервер, а також керувати нею за допомогою systemd. Тепер ви готові розширити свою програму та побудувати на цьому прикладі. Якщо ви хочете дізнатися більше про Koa.js та інші речі, які ви можете зробити, відвідайте їхній веб-сайт , щоб отримати більше корисної інформації. На додаток до цього, якщо ви хочете дізнатися більше про диспетчер процесів systemd, прочитайте документацію до нього тут . Нарешті, якщо ви хочете дізнатися більше про зворотний проксі Apache, не соромтеся перевірити їх тут .

Залишити коментар

Повстання машин: застосування ШІ в реальному світі

Повстання машин: застосування ШІ в реальному світі

Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.

DDOS-атаки: короткий огляд

DDOS-атаки: короткий огляд

Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Ви коли-небудь замислювалися, як хакери заробляють гроші?

Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.

Революційні винаходи від Google, які полегшать ваше життя.

Революційні винаходи від Google, які полегшать ваше життя.

Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Friday Essential: Що сталося з автомобілями, керованими штучним інтелектом?

Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Технологічна сингулярність: віддалене майбутнє людської цивілізації?

Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.

Функціональні можливості шарів еталонної архітектури великих даних

Функціональні можливості шарів еталонної архітектури великих даних

Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.

Еволюція зберігання даних – інфографіка

Еволюція зберігання даних – інфографіка

Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

6 дивовижних переваг використання пристроїв розумного дому в нашому житті

У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Оновлення доповнення macOS Catalina 10.15.4 спричиняє більше проблем, ніж вирішує

Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше