Како подесити Коа.јс Ноде апликацију на Убунту 16.04 ЛТС

У овом водичу ћемо научити како да подесимо Коа.јс веб апликацију за производњу, користећи Ноде.јс. Такође ћемо повезати узорак домена, са обрнутим проксијем, користећи Апацхе, и научити како да њиме управљамо помоћу одговарајућег менаџера процеса. Без даљег одлагања, хајде да почнемо.

Кратак опис Ноде.јс, Коа.јс и Апацхе

Ноде.јс је брз, вишеплатформски ЈаваСцрипт оквир заснован на Цхроме-овом В8 мотору. Користи се и у десктоп и у серверским апликацијама и познат је по руковању петљи са једним навојем. Ноде.јс садржи регистар пакета који се зове Ноде Пацкаге Манагер (НПМ), који угошћује преко пола милиона пакета. НПМ пакети (или модули) су основна окосница Ноде.јс-а, јер су код вођен заједнице који може бити користан у вашој Ноде.јс апликацији. У нашој апликацији Коа.јс, Ноде.јс је кључни део њене функције.

Коа.јс је минималистички веб оквир, изграђен на платформи Ноде.јс. Направљен од стране истог тима који стоји иза популарног Екпресс.јс оквира, његов циљ је да додатно минимизира већ минималистички Екпресс.јс оквир искључивањем међувера из његовог језгра. Главна карактеристика Коа.јс-а је чињеница да нема повратних позива. Коа.јс је изграђен на ЕС6 базираним генераторима и ЕС6 функцијама, као што је Промисес.

Апацхе је популаран веб сервер отвореног кода, који се користи као основна полазна тачка за веб сервере. У овом водичу ћемо користити Апацхе као обрнути прокси, што ће нам омогућити да повежемо нашу апликацију са узорком домена. Ако немате домен, овај водич ће и даље радити за вас, са једином разликом што ће веб локација радити на вашем ВПС ИП-у, уместо на домену.

Подешавање Ноде.јс

Као и са било којим Ноде.јс фрамеворк-ом, мораћете да инсталирате Ноде.јс на свој ВПС. Зарад овог упутства, претпоставићу да већ имате инсталиран Ноде.јс на вашем систему. Ако не, можете једноставно пратити упутства овде .

Подешавање нашег директоријума апликација

Мораћемо да креирамо фасциклу, која ће садржати основне датотеке наше апликације.

mkdir site

Слободно замените siteбило којим другим именом које желите за именик. Затим ћемо морати да иницијализујемо нашу датотеку пакета Ноде.јс. Пређите у директоријум који сте управо креирали, покрените 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"
}

Инсталирање Коа.јс

Сада када смо поставили наш директоријум, можемо да наставимо са инсталацијом Коа.јс. У тренутном радном директоријуму /site, откуцајте следеће.

npm install koa

Ово ће преузети модул Коа.јс са НПМ-а и инсталирати га у наш директоријум пројекта за будућу употребу. Затим ћемо креирати нашу датотеку узорка апликације која ће садржати наш код апликације. Да бисте то урадили, креирајте 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у конзоли.

Инсталирање Апацхе-а

Сада када знамо да је наша веб локација функционална, можемо да наставимо да инсталирамо Апацхе и његове зависности.

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

Да бисмо користили функцију обрнутог проксија која се налази у Апацхе-у, мораћемо да омогућимо потребне модуле.

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

Неки од ових модула су можда већ били омогућени, али увек је добро да их још једном проверите.

Сада морамо да уредимо подразумевану конфигурациону датотеку за Апацхе.

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и ProxyPassReverseИП. Пошто је то исти порт на којем покрећемо нашу Коа.јс апликацију, императив је да унесемо исправан порт.

Када промене буду на месту, мораћемо да поново покренемо Апацхе и поново покренемо нашу Коа.јс апликацију.

sudo systemctl restart apache2

Ово ће осигурати да је наша конфигурациона датотека активна и спремна за рад када покренемо нашу Коа.јс апликацију. Када се Апацхе поново покрене, вратите се до директоријума ваше веб локације и покрените Коа.јс апликацију као што смо раније радили. Из вашег веб претраживача идите на http://yourdomainили http://yourip:, и видећете „Здраво, свет“.

Управљање нашом апликацијом помоћу системд-а

Сада када смо покрили основе креирања узорка Коа.јс апликације, схватамо да је у производном окружењу покретање апликације као што смо сада непрактично. Менаџер процеса је дефинитивно услов. Ту системд долази у игру. Једноставно речено, системд се састоји од софтвера који обезбеђује градивне блокове за Линук систем. Слично као "инит", обезбеђује систем за управљање корисничким процесима након покретања система. У случају наше апликације, системд нам омогућава да аутоматски покренемо нашу веб локацију након што се систем поново покрене, у случају да дође до догађаја који поремети рад система. Такође пружа скуп алата који могу бити од користи приликом управљања нашом апликацијом. Најбољи део је чињеница да је уграђен у Убунту 16.04 ЛТС, тако да не морамо да инсталирамо никакав додатни софтвер.

Креирајте системски сервис

Све што нам је потребно да покренемо нашу апликацију биће садржано у датотеци под називом 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 - Ово обавештава системд да сачека док мрежни интерфејс не буде спреман пре него што покрене нашу апликацију.
  • Environment- Овде можемо одредити променљиве окружења за нашу апликацију. Наш Ноде.јс порт је један од њих.
  • Type - Ово информише системд да се наша апликација може само покренути, без раздвајања корисничких привилегија и слично.
  • User- Ово говори системд-у да желимо да покренемо апликацију под нашим корисничким налогом, што се препоручује. Покретање апликација као роот корисник може довести до многих безбедносних компромиса.
  • ExecStart - У суштини команда коју ће системд покренути да покрене нашу апликацију, слично као што смо је раније покретали ручно.
  • Restart- Говори системд-у под којим условима да поново покрене нашу апликацију. У овом случају желимо да се наша веб локација поново покрене у случају грешке.

Покрените системд услугу

Сада смо спремни да покренемо нашу системд услугу.

sudo systemctl daemon-reload

Ово је неопходно кад год се системски фајл сервиса промени да би системд регистровао све нове промене.

Затим покрените апликацију.

sudo systemctl start site

Идите до сајта у свом претраживачу још једном да бисте проверили да ли све ради.

Кључне системске функције управљања

  • stop - Потпуно зауставља апликацију.
  • restart - Зауставља апликацију и поново је покреће под новим процесом.
  • enable - Каже системд-у да покрене апликацију сваки пут када покренете рачунар.
  • status - Приказује информације о тренутно покренутој апликацији, као што су време рада, стање апликације и још много тога.

Да бисте користили било коју од ових функција, покрените следеће.

systemctl <function> site

Закључак

Успешно смо поставили Коа.јс апликацију и научили како да је поништимо, као и да управљамо њоме помоћу системд-а. Сада сте спремни да проширите своју апликацију и надоградите овај пример. Ако желите да сазнате више о Коа.јс-у и више ствари са којима можете да урадите, посетите њихову веб локацију за више корисних информација. Поред тога, ако желите да сазнате више о Системд-овом менаџеру процеса, прочитајте документацију за њега овде . Коначно, ако желите да сазнате више о Апацхе-овом обрнутом проксију, слободно их погледајте овде .

Остави коментар

Успон машина: Примене вештачке интелигенције у стварном свету

Успон машина: Примене вештачке интелигенције у стварном свету

Вештачка интелигенција није у будућности, она је овде управо у садашњости. У овом блогу Прочитајте како су апликације вештачке интелигенције утицале на различите секторе.

ДДОС напади: кратак преглед

ДДОС напади: кратак преглед

Да ли сте и ви жртва ДДОС напада и збуњени сте методама превенције? Прочитајте овај чланак да бисте решили своја питања.

Да ли сте се икада запитали како хакери зарађују новац?

Да ли сте се икада запитали како хакери зарађују новац?

Можда сте чули да хакери зарађују много новца, али да ли сте се икада запитали како зарађују толики новац? Хајде да причамо.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Гоогле-ови револуционарни изуми који ће вам олакшати живот.

Да ли желите да видите револуционарне изуме Гугла и како су ти изуми променили живот сваког људског бића данас? Затим читајте на блогу да бисте видели Гооглеове изуме.

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Фридаи Ессентиал: Шта се десило са аутомобилима које покреће вештачка интелигенција?

Концепт самовозећих аутомобила који путују на путеве уз помоћ вештачке интелигенције је сан који већ неко време имамо. Али упркос неколико обећања, њих нема нигде. Прочитајте овај блог да сазнате више…

Технолошка сингуларност: далека будућност људске цивилизације?

Технолошка сингуларност: далека будућност људске цивилизације?

Како се наука развија великом брзином, преузимајући многе наше напоре, расте и ризик да се подвргнемо необјашњивој сингуларности. Прочитајте шта би сингуларност могла да значи за нас.

Функционалности слојева референтне архитектуре великих података

Функционалности слојева референтне архитектуре великих података

Прочитајте блог да бисте на најједноставнији начин упознали различите слојеве у архитектури великих података и њихове функционалности.

Еволуција складиштења података – Инфографика

Еволуција складиштења података – Инфографика

Методе складиштења података су се развијале можда од рођења података. Овај блог покрива еволуцију складиштења података на основу инфографике.

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

6 невероватних предности поседовања паметних кућних уређаја у нашим животима

У овом дигиталном свету, паметни кућни уређаји постали су кључни део живота. Ево неколико невероватних предности паметних кућних уређаја о томе како они чине наш живот вредним живљења и једноставнијим.

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Ажурирање додатка за мацОС Цаталина 10.15.4 изазива више проблема него што их решава

Недавно је Аппле издао мацОС Цаталина 10.15.4 додатак за исправку проблема, али изгледа да ажурирање изазива више проблема који доводе до квара Мац машина. Прочитајте овај чланак да бисте сазнали више