Як налаштувати програму 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, не соромтеся перевірити їх тут .


Встановіть Plesk на CentOS 7

Встановіть Plesk на CentOS 7

Використання іншої системи? Plesk — це власна панель керування веб-хостом, яка дозволяє користувачам адмініструвати свої персональні та/або клієнтські веб-сайти, бази даних

Установіть Lets Encrypt SSL у програму WordPress одним клацанням миші

Установіть Lets Encrypt SSL у програму WordPress одним клацанням миші

Вступ Lets Encrypt — це служба центру сертифікації, яка пропонує безкоштовні сертифікати TLS/SSL. Certbot спрощує процес встановлення,

Як налаштувати сервер Tekkit Classic на Ubuntu 16.10

Як налаштувати сервер Tekkit Classic на Ubuntu 16.10

Використання іншої системи? Що таке Tekkit Classic? Tekkit Classic — це модпак для гри, яку всі знають і люблять; Майнкрафт. Він містить деякі з вер

Як встановити та налаштувати PHP 7.0 або PHP 7.1 на Ubuntu 16.04

Як встановити та налаштувати PHP 7.0 або PHP 7.1 на Ubuntu 16.04

PHP та пов’язані з ним пакети є найбільш часто використовуваними компонентами під час розгортання веб-сервера. У цій статті ми дізнаємося, як налаштувати PHP 7.0 або PHP 7.1 o

Як встановити Lighttpd (LLMP Stack) на CentOS 6

Як встановити Lighttpd (LLMP Stack) на CentOS 6

Вступ Lighttpd — це форк Apache, який має набагато меншу ресурсомісткість. Він легкий, звідси його назва, і досить простий у використанні. Встановити

Три безкоштовні панелі керування сервером (швидке встановлення)

Три безкоштовні панелі керування сервером (швидке встановлення)

1. Virtualmin/Webmin Virtualmin — це потужна та гнучка панель керування веб-хостингом для систем Linux та UNIX на основі відомої веб-бази з відкритим вихідним кодом.

Налаштування програми Yii на Ubuntu 14.04

Налаштування програми Yii на Ubuntu 14.04

Yii — це PHP-фреймворк, який дозволяє розробляти програми швидше та легше. Установка Yii на Ubuntu проста, як ви дізнаєтеся

Використання Screen в Ubuntu 14.04

Використання Screen в Ubuntu 14.04

Screen — це програма, яка дозволяє багаторазово використовувати термінальні сеанси в одному вікні. Це дозволяє моделювати декілька вікон терміналу, де це ma

Використання Logrotate для керування файлами журналу

Використання Logrotate для керування файлами журналу

Вступ Logrotate — це утиліта для Linux, яка спрощує адміністрування файлів журналів. Зазвичай він запускається раз на день через завдання cron і керує базою журналів

Як встановити Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Як встановити Apache Cassandra 3.11.x на Ubuntu 16.04 LTS

Використання іншої системи? Apache Cassandra — це безкоштовна система керування базами даних NoSQL з відкритим вихідним кодом, яка розроблена для забезпечення масштабованості, високої

Як встановити Vanilla Forum на Ubuntu 16.04

Як встановити Vanilla Forum на Ubuntu 16.04

Використання іншої системи? Vanilla forum — це програма з відкритим вихідним кодом, написана на PHP. Це повністю настроюваний, простий у використанні та підтримує зовнішній вигляд

Як встановити Kanboard на Ubuntu 18.04 LTS

Як встановити Kanboard на Ubuntu 18.04 LTS

Використання іншої системи? Вступ Kanboard — це безкоштовна програма з відкритим вихідним кодом для управління проектами, яка призначена для полегшення та візуалізації

Як встановити Gitea на Ubuntu 18.04

Як встановити Gitea на Ubuntu 18.04

Використання іншої системи? Gitea — це альтернативна система контролю версій із відкритим вихідним кодом, яка працює на базі git. Gitea написана на Голанг і є

Встановлення Docker CE на Ubuntu 16.04

Встановлення Docker CE на Ubuntu 16.04

Використання іншої системи? Docker — це програма, яка дозволяє розгортати програми, які запускаються як контейнери. Це було написано в популярному програмі Go

Виправлення експлойту Dirty Cow на CentOS

Виправлення експлойту Dirty Cow на CentOS

Що таке Dirty Cow (CVE-2016-5195)? Уразливість Dirty Cow використовується через те, як Linux обробляє код. Це дозволяє непривілейованому користувачеві використовувати gai

Налаштуйте користувача без права root за допомогою Sudo Access в Ubuntu

Налаштуйте користувача без права root за допомогою Sudo Access в Ubuntu

Наявність лише одного користувача, який є root, може бути небезпечним. Тож давайте це виправимо. Vultr надає нам свободу робити з нашими користувачами та нашими серверами, що нам заманеться

Встановіть Adminer на Debian/Ubuntu

Встановіть Adminer на Debian/Ubuntu

Adminer — це легка альтернатива phpMyAdmin. Для порівняння, його загальний розмір пакета становить 400 КБ проти 4,2 МБ phpMyAdmin. На відміну від phpMyAdmin, який

Налаштуйте автентифікацію HTTP за допомогою Nginx на CentOS 7

Налаштуйте автентифікацію HTTP за допомогою Nginx на CentOS 7

У цьому посібнику ви дізнаєтеся, як налаштувати автентифікацію HTTP для веб-сервера Nginx, що працює на CentOS 7. Вимоги Щоб почати, вам знадобиться

Як встановити Nextcloud на Ubuntu 17.04

Як встановити Nextcloud на Ubuntu 17.04

У цьому посібнику ви навчитеся інсталювати програмне забезпечення NextCloud. Ми будемо використовувати Caddy для потреб нашого веб-сервера, оскільки це спрощує налаштування

Як встановити GoAccess на Ubuntu 16.04

Як встановити GoAccess на Ubuntu 16.04

Використання іншої системи? GoAccess — це аналізатор веб-журналів з відкритим вихідним кодом. Ви можете використовувати його для аналізу журналів у режимі реального часу в терміналі або

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

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

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

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. Прочитайте цю статтю, щоб дізнатися більше