Utwórz aplikację internetową Hapi.js za pomocą Node.js na Ubuntu 16.04

Hapi.js to bogata, solidna i wydajna platforma Node.js przeznaczona do budowania aplikacji internetowych w ekosystemie Node.js. Prosta konstrukcja ułatwia rozpoczęcie pracy. Hapi korzysta z wielu najnowszych funkcji JavaScript ES6, takich jak obietnice ES6. Dla tych, którzy korzystali wcześniej z Express, Hapi pozwala wypróbować coś nowego i poznać wszystkie najnowsze funkcje JavaScript.

W tym samouczku naszym celem będzie skonfigurowanie podstawowej strony internetowej Hapi.js, która jest hostowana z naszego Vultr VPS na Ubuntu 16.04 LTS. Dla tych, którzy mają domenę dla swojej witryny, będziemy używać odwrotnego proxy do połączenia naszej domeny z naszą witryną. Na koniec nauczymy się, jak nim zarządzać z menedżerem procesów. Teraz, gdy już to zrobiliśmy, zacznijmy.

Instalowanie Node.js

Będziemy musieli zainstalować Node.js. Aby to zrobić w systemie Ubuntu 16.04 LTS, postępuj zgodnie z tymi instrukcjami.

Dodawanie repozytorium

Będziemy musieli dodać repozytorium APT NodeSource, które zawiera najnowszą wersję Lode Node.js.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

Pobieramy skrypt, którego użyjemy do dodania repozytorium do naszej listy źródeł, a także instalujemy Node.js z repozytorium NodeSource.

Instalowanie narzędzi do budowania

Oprócz instalacji samego Node.js, będziemy również musieli zainstalować niezbędne narzędzia do budowania, które pomogą w budowaniu modułów, które mogą być konieczne.

sudo apt-get install -y build-essential

To po prostu pobiera i instaluje narzędzia do budowania z repozytorium.

Konfigurowanie katalogu aplikacji

Dobrą praktyką jest wyznaczenie folderu, który będzie używany dla naszej aplikacji, który będzie zawierał wszystkie dane naszej aplikacji, takie jak pliki konfiguracyjne i skrypty startowe. Utwórz folder, nadając mu nazwę dowolną. Na potrzeby tego samouczka zakładam, że nazwałeś go site.

mkdir site

Po utworzeniu folderu możemy go teraz zmienić. Upewnij się, że znajdujesz się w właśnie utworzonym katalogu, uruchom kreatora pakietu NPM.

npm init

Poprosi Cię o podanie kilku różnych rzeczy, takich jak nazwa aplikacji, plik startowy, licencja i tak dalej. Większość pól możesz pozostawić domyślną, z wyjątkiem bardziej oczywistych pól, takich jak nazwa aplikacji. Na koniec będzie wyglądać tak:

{
  "name": "site",
  "version": "1.0.0",
  "description": "Hapi.js site",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "rich",
  "license": "MIT"
}

Gdy wynik będzie satysfakcjonujący, kliknij, ENTERaby zapisać plik.

Instalowanie Hapi.js

Po pomyślnym utworzeniu katalogu możemy przystąpić do instalacji Hapi.js. Jak wspomniano wcześniej, wykorzystamy NPM do pobrania pliku Hapi.js oraz jego zależności dla naszego projektu. W katalogu projektu uruchom następujące polecenie.

npm install hapi.js

Spowoduje to pobranie pliku Hapi.js z programu NPM i zainstalowanie go w naszym katalogu projektu. W tym samym cyklu wszelkie zależności, na których może polegać Hapi.js, są również pobierane dla naszej wygody.

Konfigurowanie naszej przykładowej aplikacji

Teraz nadszedł czas, aby skonfigurować nasz podstawowy plik aplikacji Hapi.js. Będzie zawierał cały nasz kod aplikacji. W dalszej części możemy rozszerzyć nasz kod aplikacji i dodać do niego więcej elementów, jeśli uznamy to za stosowne.

Następnie utworzymy nasz plik początkowy. Wróć do mainsekcji package.jsonpliku, aby dokładnie określić, jak nazwać plik. Ponieważ użyłem domyślnego schematu nazewnictwa, nasz plik zostanie wywołany index.js.

nano index.js

Gdy znajdziesz się w edytorze nano tekstowym, utwórz swój podstawowy kod aplikacji.

const Hapi=require('hapi');
const server=Hapi.server({
    host:'localhost',
    port: 3000
});

server.route({
    method:'GET',
    path:'/',
    handler:((request,h)) => {
        return 'Sample Hapi.js Application';
    }
});
async function start() {

    try {
        await server.start();
    } catch (err) {
        console.log(err);
        process.exit(1);
    }
    console.log(`Our server is running! ${server.info.uri}`);
};

start();

Najpierw importujemy moduł Hapi. Następnie inicjalizujemy konstruktora serwera, który zawiera host, na którym chcemy uruchomić serwer, a także port, który jest 3000przeznaczony dla tego samouczka. Następnie skonfigurowaliśmy podstawowy router, co oznacza, że ​​za każdym razem, gdy ktoś odwiedza witrynę, zostanie powitany prostą wiadomością. Na dodatek mamy funkcję asynchroniczną, aby uruchomić nasz serwer, który zaloguje się do konsoli, na której działa nasz serwer. Po zakończeniu zapisz i zamknij plik ( CTRL+ X)

Po skonfigurowaniu naszego głównego pliku jesteśmy gotowi do uruchomienia naszej aplikacji.

node index.js

Jeśli zobaczysz „ Our server is running!” w konsoli, oznacza to, że serwer uruchomił się pomyślnie.

Zainstaluj Nginx

Ponieważ Nginx jest dostępny w domyślnych repozytoriach Ubuntu, instalacja jest prosta. Po prostu zaktualizuj listy pakietów i zainstaluj ją.

sudo apt update
sudo apt install nginx -y 

Po odświeżeniu list pakietów, Nginx i jego zależności zostaną zainstalowane.

Skonfiguruj Nginx

Aby Nginx mógł odwrócić proxy naszej aplikacji, musimy utworzyć plik konfiguracyjny. Ten plik konfiguracyjny będzie zawierał informacje o naszej aplikacji, której Nginx użyje do zwrotnego proxy.

Usuń domyślną konfigurację utworzoną przez Nginx, ponieważ później zastąpimy ją własną.

sudo rm /etc/nginx/sites-enabled/default

Utwórz nowy plik w sites-availablefolderze. Jeśli chodzi o nazewnictwo, możemy trzymać się po prostu site, dla uproszczenia.

sudo nano /etc/nginx/sites-available/site

W pliku wklej następujące i zapisz.

server {
    listen 80;
    location / {
          proxy_set_header X-Real-IP 
          $remote_addr;
          proxy_set_header 
          X-Forwarded-For 
          $proxy_add_x_forwarded_for;
          proxy_set_header Host 
          $http_host;
          proxy_set_header 
        X-NginX-Proxy true; proxy_pass 
       http://127.0.0.1:3000/;
    proxy_redirect off;
    proxy_http_version 1.1;
    proxy_set_header Upgrade 
     $http_upgrade;
    proxy_set_header Connection 
    "upgrade";
    proxy_redirect off;
    proxy_set_header 
   X-Forwarded-Proto $scheme;
    }
}

W tym pliku mówimy Nginx, aby nasłuchiwał na porcie 80. Ustawiamy również przekazywanie proxy na localhostadres i port 3000, który jest tym samym portem, co nasza aplikacja Hapi.

Teraz możesz wrócić do katalogu aplikacji i uruchomić witrynę. Po uruchomieniu witryny przejdź do http://yourdomain.comlub http://yourip, a zobaczysz tekst „ Hello World”.

Zainstaluj PM2

PM2 można znaleźć w repozytorium NPM i można go zainstalować globalnie, aby był dostępny z dowolnego miejsca, np.

sudo npm install pm2 -g

-gFlagi na końcu oznacza, że chcemy zainstalować moduł do folderu globalnych modułów, co pozwoli nam go używać poza naszym katalogu projektu. Jest to używane, aby nasz projekt zachowywał się jak normalna aplikacja systemowa.

Uruchomienie naszej aplikacji z PM2

Po zainstalowaniu PM2 przejdź z powrotem do katalogu projektu. Składnia do uruchomienia naszej aplikacji będzie teraz nieco inna. Tak właśnie zrobimy z PM2.

pm2 start index.js --name site

Używamy funkcji startowej PM2, która w zasadzie tworzy profil dla naszej aplikacji pod nazwą site. Po uruchomieniu tego polecenia uruchomi się witryna, ale zauważysz, że dzienniki się nie wyświetlają. Jest tak, ponieważ sposób, w jaki teraz przeglądamy dzienniki, jest inny.

pm2 logs site

Za pomocą --linesargumentu możesz nawet określić liczbę wierszy dzienników, które chcesz wyświetlić .

Wniosek

Udało Ci się skonfigurować serwer WWW Hapi.js, odwrócić proxy z Nginx i nauczyć się, jak lepiej nim zarządzać za pomocą PM2. Dzięki tej wiedzy możesz dalej rozwijać ten samouczek i tworzyć bardzo zaawansowaną aplikację Hapi.js. Aby dowiedzieć się więcej o możliwościach Hapi, odwiedź ich oficjalną dokumentację . Jeśli chcesz dowiedzieć się więcej o możliwościach PM2, zapoznaj się z ich krótkim przewodnikiem .



Leave a Comment

Jak zainstalować platformę koszyków LiteCart na Ubuntu 16.04

Jak zainstalować platformę koszyków LiteCart na Ubuntu 16.04

LiteCart to darmowa i otwarta platforma koszyka na zakupy napisana w PHP, jQuery i HTML 5. Jest to prosty, lekki i łatwy w użyciu program do handlu elektronicznego

Jak zainstalować Anchor CMS na CentOS 7 LAMP VPS

Jak zainstalować Anchor CMS na CentOS 7 LAMP VPS

Używasz innego systemu? Anchor CMS to bardzo prosty i niezwykle lekki, darmowy i otwarty system zarządzania treścią (CMS) Blog Engine, który

Skonfiguruj udział NFS na Debianie

Skonfiguruj udział NFS na Debianie

NFS to oparty na sieci system plików, który umożliwia komputerom dostęp do plików w sieci komputerowej. Ten przewodnik wyjaśnia, w jaki sposób możesz udostępniać foldery w NF

Jak zainstalować Matomo Analytics na Fedorze 28

Jak zainstalować Matomo Analytics na Fedorze 28

Używasz innego systemu? Matomo (wcześniej Piwik) to platforma analityczna typu open source, otwarta alternatywa dla Google Analytics. Źródło Matomo jest hostowane o

Skonfiguruj serwer TeamTalk w systemie Linux

Skonfiguruj serwer TeamTalk w systemie Linux

TeamTalk to system konferencyjny, który pozwala użytkownikom na wysokiej jakości rozmowy audio / wideo, czat tekstowy, przesyłanie plików i udostępnianie ekranów. To ja

Jak uzyskać dostęp do Vultr VPS

Jak uzyskać dostęp do Vultr VPS

Vultr oferuje kilka różnych sposobów uzyskiwania dostępu do VPS w celu konfiguracji, instalacji i użytkowania. Poświadczenia dostępu Domyślne poświadczenia dostępu dla twojego VPS ar

Jak zainstalować Ranger Terminal File Manager w systemie Linux

Jak zainstalować Ranger Terminal File Manager w systemie Linux

Ranger to oparty na linii poleceń menedżer plików z powiązaniami klawiszy VI. Zapewnia minimalistyczny i ładny interfejs curses z widokiem na hierarchię katalogów

Skonfiguruj klaster RethinkDB w CentOS 7

Skonfiguruj klaster RethinkDB w CentOS 7

Wprowadzenie RethinkDB to baza danych NoSQL, która przechowuje dane jako dokumenty JSON. Ma bardzo intuicyjny język zapytań i funkcje powszechnie dostępne

Skonfiguruj Magento na CentOS 6

Skonfiguruj Magento na CentOS 6

Niezależnie od tego, czy chcesz umieścić zapasy sklepów online, czy po prostu prosty sklep z akcesoriami technicznymi, Magento jest doskonałym rozwiązaniem dla eCommerce online. Ten artykuł

Jak zbudować Brotli ze źródła na Ubuntu 18.04 LTS

Jak zbudować Brotli ze źródła na Ubuntu 18.04 LTS

Używasz innego systemu? Brotli to nowa metoda kompresji z lepszym współczynnikiem kompresji niż GZIP. Jego kod źródłowy jest publicznie hostowany na tym Githu

Korzystanie z widoków MySQL w Debianie 7

Korzystanie z widoków MySQL w Debianie 7

Wprowadzenie MySQL ma świetną funkcję znaną jako widoki. Widoki są przechowywane zapytania. Pomyśl o nich jako o aliasie dla długiego zapytania. W tym przewodniku

Wyłącz lub ogranicz logowanie roota przez SSH w systemie Linux

Wyłącz lub ogranicz logowanie roota przez SSH w systemie Linux

Zezwolenie na logowanie roota przez SSH jest powszechnie uważane za słabą praktykę bezpieczeństwa w branży technologicznej. Zamiast tego możesz wykonać delikatną administrację

Jak zainstalować Neos CMS na CentOS 7

Jak zainstalować Neos CMS na CentOS 7

Neos to innowacyjny system zarządzania treścią typu open source, który doskonale nadaje się do tworzenia i edytowania treści online. Z myślą o autorach i redaktorach, Neo

Jak zainstalować Vtiger CRM Open Source Edition na CentOS 7

Jak zainstalować Vtiger CRM Open Source Edition na CentOS 7

Vtiger CRM to popularna aplikacja do zarządzania relacjami z klientami, która może pomóc przedsiębiorstwom zwiększyć sprzedaż, zapewnić obsługę klienta i zwiększyć zyski. ja

Jak zainstalować DokuWiki na Ubuntu 16.04 LTS

Jak zainstalować DokuWiki na Ubuntu 16.04 LTS

Używasz innego systemu? DokuWiki to program wiki typu open source napisany w PHP, który nie wymaga bazy danych. Przechowuje dane w plikach tekstowych. DokuWik

Konfigurowanie chroota w Debianie

Konfigurowanie chroota w Debianie

W tym artykule dowiesz się, jak skonfigurować więzienie chroot w Debianie. Zakładam, że używasz Debiana 7.x. Jeśli używasz Debiana 6 lub 8, może to działać, bu

Jak zainstalować PiVPN na Debianie

Jak zainstalować PiVPN na Debianie

Wprowadzenie Prostym sposobem na skonfigurowanie serwera VPN na Debianie jest PiVPN. PiVPN to instalator i opakowanie dla OpenVPN. Tworzy proste polecenia dla ciebie

Jak zainstalować MaraDNS na CentOS 6

Jak zainstalować MaraDNS na CentOS 6

MaraDNS to lekki, ale solidny program serwera DNS typu open source. W porównaniu z innymi aplikacjami tego samego rodzaju, takimi jak ISC BIND, PowerDNS i djbdns

Jak zainstalować i skonfigurować CyberPanel na Ubuntu 18.04 LTS

Jak zainstalować i skonfigurować CyberPanel na Ubuntu 18.04 LTS

Używasz innego systemu? Wprowadzenie CyberPanel jest jednym z pierwszych paneli sterowania na rynku, który jest zarówno open source, jak i wykorzystuje OpenLiteSpeed. Co ty?

Jak zainstalować forum NodeBB na Fedorze 28

Jak zainstalować forum NodeBB na Fedorze 28

Używasz innego systemu? NodeBB jest forum opartym na Node.js. Wykorzystuje gniazda sieciowe do natychmiastowych interakcji i powiadomień w czasie rzeczywistym. Kod źródłowy NodeBB i

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.