Как да настроите приложение Koa.js Node на Ubuntu 16.04 LTS

В този урок ще се научим как да настроим уеб приложение Koa.js за производство, използвайки Node.js. Също така ще свържем примерен домейн с обратен прокси, използвайки Apache, и ще научим как да го управляваме с подходящ мениджър на процеси. Без повече приказки, нека да започнем.

Кратко описание на Node.js, Koa.js и Apache

Node.js е бърза, междуплатформена JavaScript рамка, базирана на V8 двигателя на Chrome. Използва се както в настолни, така и в сървърни приложения и е известен със своята еднонишкова обработка на цикъл на събития. 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

Отидете до сайта в браузъра си още веднъж, за да проверите дали всичко работи.

Ключови функции за управление на systemd

  • stop - Спира приложението напълно.
  • restart - Спира приложението и го стартира отново при нов процес.
  • enable - Указва на systemd да стартира приложението всеки път, когато стартирате компютъра си.
  • status - Показва информация за текущо работещото приложение, като време на работа, състояние на приложението и др.

За да използвате някоя от тези функции, изпълнете следното.

systemctl <function> site

Заключение

Успешно настроихме приложение Koa.js и се научихме как да го обръщаме прокси, както и да го управляваме със systemd. Вече сте готови да разширите приложението си и да надградите този пример. Ако искате да научите повече за Koa.js и още неща, с които можете да правите, посетете техния уебсайт за още полезна информация. В допълнение към това, ако искате да научите повече за мениджъра на процеси на systemd, прочетете документацията за него тук . И накрая, ако искате да научите повече за обратния прокси на Apache, не се колебайте да ги проверите тук .


Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване

Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване

Въведение Lets Encrypt е услуга на сертифициращ орган, която предлага безплатни TLS/SSL сертификати. Процесът на инсталиране е опростен от Certbot,

Как да настроите надстройки без надзор на Debian 9 (разтягане)

Как да настроите надстройки без надзор на Debian 9 (разтягане)

Използване на различна система? Ако закупите сървър на Debian, винаги трябва да имате най-новите корекции за сигурност и актуализации, независимо дали спите или не

Как да инсталирате и конфигурирате 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

Как да инсталирате Squid Proxy на CentOS

Как да инсталирате Squid Proxy на CentOS

Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте

Три безплатни контролни панела на сървъра (бърза инсталация)

Три безплатни контролни панела на сървъра (бърза инсталация)

1. Virtualmin/Webmin Virtualmin е мощен и гъвкав контролен панел за уеб хостинг за Linux и UNIX системи, базиран на добре познатата уеб база с отворен код

Настройване на приложение Yii на Ubuntu 14.04

Настройване на приложение Yii на Ubuntu 14.04

Yii е PHP рамка, която ви позволява да разработвате приложения по-бързо и лесно. Инсталирането на Yii в Ubuntu е лесно, както ще научите точно l

Настройте свой собствен DNS сървър на Debian/Ubuntu

Настройте свой собствен DNS сървър на Debian/Ubuntu

Този урок обяснява как да настроите DNS сървър с помощта на Bind9 на Debian или Ubuntu. В цялата статия заменете your-domain-name.com съответно. При th

Използване на Logrotate за управление на регистрационни файлове

Използване на Logrotate за управление на регистрационни файлове

Въведение Logrotate е помощна програма за Linux, която опростява администрирането на лог файлове. Обикновено се изпълнява веднъж на ден чрез cron задание и управлява базата от регистрационни файлове

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент

Настройте Red5 Media Server на Ubuntu 16.04

Настройте Red5 Media Server на Ubuntu 16.04

Използване на различна система? Red5 е медиен сървър с отворен код, внедрен в Java, който ви позволява да стартирате Flash многопотребителски приложения, като например предаване на живо

Компилирайте и инсталирайте Nginx с модула PageSpeed ​​на Debian 8

Компилирайте и инсталирайте Nginx с модула PageSpeed ​​на Debian 8

В тази статия ще видим как да компилирате и инсталирате основната линия на Nginx от официалните източници на Nginx с модула PageSpeed, който ви позволява да

Как да инсталирате 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 е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира

Как да инсталирате Kanboard на Debian 9

Как да инсталирате Kanboard на Debian 9

Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира

Как да инсталирате Gitea на Debian 9

Как да инсталирате Gitea на Debian 9

Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от Git. Gitea е написана на Голанг и е

Как да инсталирате Gitea на Ubuntu 18.04

Как да инсталирате Gitea на Ubuntu 18.04

Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от git. Gitea е написана на Голанг и е

Инсталирайте Lynis на Debian 8

Инсталирайте Lynis на Debian 8

Въведение Lynis е безплатен инструмент за одит на системата с отворен код, който се използва от много системни администратори за проверка на целостта и заздравяване на техните системи. аз

Как да инсталирате Thelia 2.3 на Debian 9

Как да инсталирате Thelia 2.3 на Debian 9

Използване на различна система? Thelia е инструмент с отворен код за създаване на уебсайтове за е-бизнес и управление на онлайн съдържание, написано на PHP. Изходен код на Thelia i

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

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 машини. Прочетете тази статия, за да научите повече