w Praktyce
10 godz. 44 min · Node.js · Full-stack i Programowanie
Piotr PalarzWeb DeveloperW kursie tym poznasz platformę Node.js od podstaw, aż po bardziej zaawansowane koncepcje. Zaczniemy od omówienia czym jest Node, a także jakie może być zastosowanie tej technologii. Następnie przejdziemy przez proces instalacji i napisanie swojego pierwszego skryptu. Już na samym początku dokładnie omówimy tworzenie własnych modułów, gdyż jest to wiedza niezbędna, by dobrze zrozumieć funkcjonowanie Node. Następnie dowiesz się czym są zdarzenia, jak działa model “publish / subscribe”, a także czym jest “event-driven development”. Chwilę później omówimy pracę z buforami, stream’ami, a także ze standardowym wejściem i wyjściem. Ta wiedza pozwoli Ci zrozumieć jak tworzone aplikacje mogą otrzymywać od użytkownika dane oraz jak je wyświetlają.
Niezwykle ważnym rozdziałem będzie ten, poświęcony pracy z systemem plików. Szczególnie dla dewelopera, pracującego dotychczas z językiem JavaScript wyłącznie w środowisku przeglądarki internetowej. Node pozwala bowiem tworzyć nowe pliki, zapisywać w nich dane oraz odczytywać i usuwać pliki i katalogi. Przy wszystkich tych operacjach, niezwykle ważna jest jednak asynchroniczna natura Node. Dowiesz się jak działa, a także jakie są jej zalety. Na tym etapie nie zabraknie oczywiście praktycznego projektu, którym będzie aplikacja typu CLI (Command Line Interface). Pozwoli nam ona grupowo zmienić nazwy wielu plików, według podanego wzorca.
W kolejnym rozdziale poruszymy fundamentalną dla Node kwestię, mianowicie tworzenie serwerów sieciowych. Zaczniemy od najniższego poziomu, tworząc prosty serwer bazujący na protokole TCP/IP. Wiedza w jaki sposób Node radzi sobie z takim zadaniem, pozwoli później lepiej zrozumieć wyższe warstwy, takie jak np. HTTP czy WebSockets. Chwilę później stworzymy swój pierwszy serwer HTTP, do którego będzie można wysyłać zapytania wprost z przeglądarki internetowej. Omówimy również jak w Node wykorzystać bezpieczne szyfrowanie HTTPS.Na tym etapie będziesz już miał solidną wiedzę jak pracować z Node, jednak zanim przejdziemy dalej, zatrzymamy się, by omówić jak dokładnie działa Node.js, a także jak ta platforma została zbudowana. Dwie dość obszerne lekcje, będą być może jednymi z najważniejszych w tym kursie. Dowiesz się w nich czym jest, a także jak działa jednowątkowa pętla zdarzeń, czym jest proces i wątek, a także zobaczysz kod źródłowy Node.js i wszystkie bloki budulcowe, z jakich Node się składa. To naszym zdaniem niezwykle ważny temat, często jednak pomijany w wielu materiałach. Dzięki dogłębnemu zrozumieniu jednowątkowej natury języka JavaScript i asynchroniczności Node, będziesz mógł tworzyć dużo lepsze aplikacje.
Node.js posiada kilkanaście wbudowanych modułów, z których w dowolnej chwili można skorzystać. Wszystkie jednak dają nam dużą, niskopoziomową kontrolę, ale czasami sporo kodu należy napisać, by zrealizować jakieś zadanie. Jest to jednak świadomy wybór twórców Node, gdyż całą resztę świetnych rozwiązań, dopisuje nieustannie ogólnoświatowa społeczność deweloperów. Zdecydowana większość z modułów ląduje w rejestrze npm. Jest to genialny package manager, który pozwoli nam wyszukiwać, pobierać i aktualizować niezliczoną ilość modułów. Dowiesz się zatem jak korzystać z npm, a chwilę później zaczniemy wykorzystywać zgromadzone tam moduły w dalszej pracy.Jednym z najpopularniejszych modułów jest express.js, który pozwala w bardzo prosty sposób tworzyć serwery HTTP. Grzechem byłoby zatem z niego nie skorzystać. Dowiesz się wszystkiego co niezbędne, by zacząć tworzyć własne aplikacje bazujące na protokole HTTP z użyciem express.js, a także kilku dodatków do tego systemu. Zobaczysz jak routować zapytania, jak korzystać z middleware czy serwować statyczne pliki. Następnie omówimy współpracę z bazą danych MongoDB i z jej wykorzystaniem stworzymy API typu REST. Stworzona aplikacja pozwoli odczytywać dane z bazy i przesyłać je do klienta w formacie JSON, a także dodawać nowe dane, aktualizować i usuwać je. Wszystko to zgodnie z dobrymi praktykami pracy z REST.
Chwilę później czeka Cię kolejny praktyczny projekt - skracacz linków. Stworzymy wspólnie aplikację, która pozwoli skrócić dowolny adres URL do krótkiej formy. Oczywiście będzie działać również w drugą stronę! Kiedy przejdziemy pod skrócony adres, przekieruje nas do odpowiedniej witryny. Node.js to platforma wręcz stworzona do tworzenia aplikacji typu real-time, dlatego w kolejnym rodziale podejmiemy temat technologii WebSockets. Dowiesz się jakie są jej zalety, a także jak pracować z nią po stronie serwera i klienta. Tutaj czeka nas kolejny praktyczny, niezwykle ciekawy projekt. Wykonamy bowiem czat grupowy. Aplikacja ta pozwoli dowolnej ilości użytkowników podłączyć się do czatu podając swój nick, a następnie wysyłać widoczne dla wszystkich wiadomości. Zaimplementujemy nawet takie rozwiązania jak wyświetlanie statusów o dołączeniu kogoś do czatu, a także o jego opuszczeniu.W przedostatnim rodziale tego kursu podejmiemy tematykę dobrych praktyk pracy z Node.js. Na początku omówimy najważniejsze konstrukcje nowej specyfikacji EcmaScript 2015, które są znakomicie wspierane w Node. Chwilę później omówimy jak korzystanie z Promises uprości, a także ulepszy nasz kod. Wśród dobrych praktyk nie zabraknie również informacji o debugowaniu aplikacji. Zobaczysz sprawdzone sposoby, by znaleźć błędy lub lepiej, krok po kroku, zrozumieć jak działa napisany wcześniej kod. Dowiesz się również jak pracować z błędami, by Twoje aplikacje działały w sposób przewidywalny.
Ostatni rozdział w całości został poświęcony temu, co zwykle jest pomijane w innych materiałach, mianowicie wdrażaniu aplikacji do produkcji. Przez cały ten kurs pracować będziemy lokalnie, lecz kiedy aplikacje są już gotowe, wypadałoby udostępnić je światu. Wdrażanie aplikacji napisanych z użyciem Node.js nie jest jednak tak oczywiste, jak np. wgrywanie WordPress’a u wybranego hostingodawcy. Ty będziesz miał jednak możliwość zobaczyć, jak wdrożyć napisany przez nas grupowy czat na platformie Heroku. Jest to bardzo popularny serwis działający jako PaaS (Platform as a Service). Za darmo będziesz mógł w ciągu kilku chwil uruchomić swoją aplikację.Zobaczysz o co należy zadbać, by wszystko poszło gładko. Serwisy typu PaaS dbają o bardzo wiele aspektów wdrażania i serwowania naszych aplikacji, takich jak bezpieczeństwo oraz nieustanną dostępność. Mają jednak pewne ograniczenia. Z tego powodu, dowiesz się również jak wdrożyć swoją aplikację na serwerze wirtualnym VPS z systemem Ubuntu Server. Takie rozwiązanie daje nam całkowitą kontrolę, ale także obarczone jest większą odpowiedzialnością. Zaczniemy od instalacji na serwerze platformy Node.js, systemu kontroli wersji GIT, a także innych niezbędnych modułów
Następnie zobaczysz jak skonfigurować swoje lokalne środowisko tak, by za pomocą GIT’a wysyłać kod do zdalnego serwera, a potem jednym poleceniem wdrażać go do produkcji. Dowiesz się również jak jednocześnie serwować wersję produkcyjną oraz developmencką. W rodziale tym poruszymy również inne kwestie, takie jak procesy potomne czy tworzenie klastrów. Dzięki tej wiedzy, będziesz mógł maksymalnie wykorzystać dostępne zasoby serwera. Na sam koniec tego kursu rzucimy okiem również na inne, nie przedstawione wcześniej zastosowania Node, a także nakreślimy dalszą drogę nauki w tym zakresie.
Kurs ten jest dla wszystkich osób, które dobrze czują się w technologiach frontendowych, tj. HTML, CSS i JavaScript, a teraz chcą rozpocząć swoją przygodę z back-endem. Im zatem lepiej znasz język JavaScript, tym więcej wyciśniesz z Node, natomiast nie jest wymagana bardzo zaawansowana wiedza z zakresu tego języka.
W tej oraz w kolejnej lekcji pokażę ci coś, co jest często niestety pomijane w różnych publikacjach na
temat Node.js.
Mianowicie jak wdrożyć swoją aplikację do produkcji.
Bo fajnie, że mogliśmy ją stworzyć i przetestować na localhost,
ale chciałbym teraz czat, który napisaliśmy wcześniej, wdrożyć sobie do produkcji, aby rzeczywiście można było
w internecie z niego korzystać. I teraz możliwości są dwie: albo będziemy korzystać z platform, które nazywa
się z angielskiego PaaS, czyli Platform as a Service.
Taką jest np. Heroku.
Pozwala nam ona uruchomić sobie własne aplikacje Node i zarządza bardzo wieloma rzeczami, o których jeszcze
później powiem. Albo możemy uruchomić to wszystko na własnym serwerze wirtualnym, co pokażę w lekcji kolejnej.
Ale będzie to bardziej skomplikowane, bardziej narażone na błędy i będzie wymagać większej wiedzy z zakresu
administrowania serwerem.
Natomiast będę chciał, abyśmy skorzystali w tej lekcji z Heroku, bo Heroku jest bardzo popularny. Dlatego, proszę,
załóż sobie teraz konto darmowe na Heroku i następnie się zaloguj.
Ja teraz przejdę do logowania i będę chciał się zalogować. I zobaczymy, jak wygląda dashboard. Jeśli utworzysz
konto i się poprawnie zalogujesz, to będziesz widział mniej więcej coś takiego jak ja. I teraz jeszcze jeden
powód, dla którego wybrałem Heroku.
Muszę ci powiedzieć o tym, że jeżeli piszemy np. aplikacje z użyciem języka PHP, to od lat nie mamy problemów
czy na polskim czy na światowym rynku znaleźć sobie dowolny, bardzo tani hosting, na którym możemy sobie hostować takie
aplikacje.
Natomiast jeżeli będziesz szukał hostingu Node.js, to jest już dużo, dużo trudniej.
Dlatego pokazuję ci Heroku, a także dlatego, że zobaczysz, jak możemy łatwo i przyjemnie pracować z takim
oto systemem.
Dlatego teraz będziemy chcieli utworzyć sobie nową aplikację, klikając tutaj Create New App.
Nie będziemy podawać jej nazwy, bo ona musi być unikalna.
Wybierzemy sobie jedynie lokalizację jako Europę i kliknięcie Create App. Aplikacja została utworzona, a oto
jest jej nazwa.
I teraz pokażę ci, jak możemy zainstalować sobie w systemie potrzebne Heroku CLI i jak z tego będziemy za moment
korzystać.
Nieważne czy jesteś na Windowsie, czy na Macu.
To będzie tak samo działać, jak pokażę ci za moment. Tutaj widzimy bardzo fajne kroki.
Tak naprawdę tylko sobie je odtworzymy. Download and install, czyli pobierzemy sobie Heroku CLI.
Otworzę to w nowej karcie i tutaj musimy wybrać instalator dla swojego systemu. Ja chcę dla Maca, więc
klikamy OS X installer. Po chwili, kiedy on się pobrał, to po prostu chcę go uruchomić.
I tutaj będziemy mieli taką standardową instalację. Na Windowsie też będziesz miał po prostu next, next.
Więc spokojnie sobie poradzisz.
Instalacja się zakończyła, więc teraz możemy przejść do terminala i będziemy mieli dostęp do polecenia
Heroku.
Wejdźmy sobie tutaj i zobaczysz. Możemy od razu wpisać heroku login i tutaj poprosi nas o wpisanie swoich danych do
logowania. Ale za moment, najpierw sobie jeszcze pobierze odpowiedni Heroku CLI.
Jak widzisz, wyskoczyła prośba o podanie e-maila. I teraz hasło. Wpisujemy, ale ono nie jest widoczne.
Wpisałem, wciskam Enter i widzimy, że jesteśmy zalogowani i ten proces się zakończył. I teraz będziemy mogli
korzystać dalej.
Natomiast żeby Heroku działał poprawnie, musisz mieć jeszcze Gita.
W przypadku Windowsa zostanie on, jeżeli go nie miałeś, zainstalowany razem z Heroku, tak powinno przynajmniej
być. Wyczyszczę sobie
ten ekran i teraz widzimy tutaj dokładnie to, co będziemy chcieli zrobić.
Czyli ja jestem w katalogu 45 i mamy tutaj aplikację, którą napisaliśmy wcześniej.
Jest to nasz czat, który doskonale działał. Pokażę ci, jak przenieść go do internetu.
Natomiast utworzymy sobie w tym katalogu nowe repozytorium Gita, wpisując git init.
Jeśli nie wiesz jeszcze, jak działa Git, to na eduweb.pl znajdziesz warsztat mojego autorstwa, który w
niecałą godzinę omawia podstawy pracy z Gitem. Wpiszemy git init
i mamy teraz tutaj nowe repozytorium utworzone.
Teraz jeżeli wpiszę git status, to pokaże mi, że mamy tutaj pliki, które są nieśledzone.
Pokażę ci jeszcze, co by było gdybyśmy sobie wpisali npm install, żeby pojawił się katalog node_modules. Bo to jest też
dosyć istotne.
Ok. Zainstalowaliśmy. I teraz jeśli wpiszę git status, to pokaże mi nieśledzone pliki, również node_modules.
Pamiętaj, że nigdy tego katalogu node_modules nie chcemy zapisywać w repozytorium, bo nie jest to konieczne. Możemy
komuś udostępnić nasz kod.
Wpiszę sobie npm install i wszystko mu się wgra. Czyli chciałbym go teraz wykluczyć, a więc utworzę
sobie plik .gitignore.
Jest to plik właśnie o takiej nazwie - .gitignore. I wpiszę tutaj node_modules.
Tutaj możemy wpisywać pliki, które mają być nieśledzone przez Gita.
Teraz jeżeli wpiszę git status, to już nie będziemy tutaj mieli tego pliku.
Teraz jest wszystko w porządku.
Wróćmy sobie. Zerknijmy, co oni nam tutaj sugerują.
No właśnie, musimy sobie dodać wszystko do tego repozytorium Gita, czyli
git add.
Teraz git status pokaże nam, że faktycznie te pliki będą śledzone.
Teraz zrobimy sobie pierwszy commit, czyli git commit, pauza, tutaj m, żeby podać wiadomość. Wpiszemy: Initial commit. Takie
rzeczy tłumaczę we wspomnianym wcześniej warsztacie.
Zobaczymy. Git status teraz nam pokaże, że wszystko jest w porządku, a w git log możemy zobaczyć, że pierwszy
commit wykonaliśmy.
Mogę tutaj wcisnąć q, żeby to zakończyć.
I teraz bardzo ważna linijka, którą zobaczysz w tym miejscu. Ja to zrobiłem w trochę innej kolejności, ale
to nie miało znaczenia.
Musimy sobie wpisać to, co widzisz tutaj. U ciebie będzie to inaczej, bo tutaj jest podana od razu nazwa
aplikacji. Twoja będzie się nazywać inaczej.
Dlatego ten kod możemy od razu sobie skopiować i wkleić tutaj. Wciskam Enter. I takie repozytorium, które
jest na serwerze Heroku, zostało jakby tutaj zapisane - w tym sensie, że jeżeli teraz będziemy wysyłać kod
za pomocą git push, to zostanie to tam wysłane.
I teraz wystarczy wpisać git push heroku master, czyli gałąź master chcemy tam wysłać. Zobaczysz, że zostanie
ona tam wysłana. I zaraz ci pokażę, jakie jeszcze będziemy mieli problemy.
Natomiast jeżeli chodzi o deployment, to jest to takie proste, jak tutaj widzisz. Wszystko jest tam wysyłane
i mamy odpowiednie logi. Zrobię sobie tutaj trochę więcej miejsca w tej konsoli.
Zerknijmy, co tutaj jest. Bo tutaj u góry była ciekawa informacja m.in. taka, że Heroku zainstalowało
nam automatycznie wszystko, co było w package.json. Czyli mówiłem ci, że wykluczamy sobie z Gita katalog node_modules, czyli on tam
nie został wysłany, mógłbym go nawet usunąć.
I właśnie to jest fajne w takim deploymencie jak Heroku, że wysłaliśmy naszą aplikację i oni zadbali o to,
żeby wszystko zainstalować,
co mamy tutaj, w dependencies.
Jest to bardzo ważna informacja.
Zobaczmy jednak, co jest na dole.
Wszystko się udało i teoretycznie Heroku zostało uruchomione.
Możemy nawet zobaczyć. Tutaj mamy adres, który jeżeli przejdziemy do przeglądarki, to powinien nam pokazać
naszą aplikację już działającą.
Zobaczmy. Jednak widzisz, że mamy Application Error.
I nam to nie zadziałało.
Jak możemy sprawdzić, co tam poszło nie tak?
Otóż wpiszmy sobie heroku log albo heroku logs.
I wczytają nam się tutaj wszystkie logi.
Co mogło pójść ewentualnie nie tak?
Zerknijmy sobie do samej góry.
Postaram się to jeszcze powiększyć, aby to było bardziej czytelne. I zobaczmy niżej, gdzieś tutaj będzie
taki błąd.
Być może on się nawet nie pojawi tutaj od razu, ale zapewniam cię, że pojawi się jeden specyficzny błąd,
który dotyczy - i znajdziesz go tutaj - który dotyczy portu, jaki my mamy zdefiniowany.
Na razie może go jeszcze tutaj nie ma.
Wpiszę jeszcze raz.
Na pierwszy rzut oka go tutaj nie widzę, ale gwarantuję ci, że on gdzieś się pojawi, bo wcześniej już go miałem.
Pokażę ci teraz w kodzie, jaki mamy problem. Otóż wysłaliśmy naszą aplikację, którą chcemy uruchomić na
porcie 8080. Ale nie tak prędko, Heroku nam nie pozwoli tego zrobić.
Poza tym zauważ, że podał nam adres do naszej aplikacji i tutaj nie ma żadnego portu, czyli jest to domyślnie
port 80.
Ale znowu to jeszcze nie jest tak proste, bo tutaj powinniśmy skorzystać z tego, co Heroku nam zwróci jako
zmienną środowiskową. Czyli możemy się odwołać do process.env.port.
O tych zmiennych jeszcze w jednej z kolejnych lekcji powiem, natomiast właśnie Heroku, uruchamiając
naszą aplikację, zadba o to, żeby tutaj przekazać odpowiedni port i dopiero tutaj będą go mógł podać.
Dodam coś takiego.
Czyli gdyby przypadkiem tutaj była wartość undefined, to wtedy chcę skorzystać z 8080. Na Heroku i tak to nie
zadziała, ale u nas lokalnie by zadziałało, bo process.env.port będzie miało wartość undefined, jeżeli sobie to u
siebie uruchomię.
Więc to jest pierwsza rzecz. Ten console.log możemy sobie trochę zmienić. Chociaż w zasadzie on i tak dla nas
nie będzie widoczny. Chyba że wpiszesz heroku logs, to gdzieś tam w logach on się pojawi. I teraz jeszcze
jedna ważna informacja, żeby nasz czat działał.
Otóż być może pamiętasz, że po stronie klienta w pliku chat.js, który mieliśmy tutaj, łączyliśmy się przez io.connect
z takim adresem.
Tutaj znowu powinniśmy podać adres do Heroku, ale jeżeli nic nie podamy, to jest też ważne, to io zrobi coś,
co nazywa się autodiscovery i znajdzie sobie odpowiedni port
czy w zasadzie odpowiedni adres, na którym powinien zostać uruchomiony.
Jeżeli to zrobimy, przejdziemy tutaj, wpiszę git status, to Git nam pokaże, że sobie zaktualizowałem niektóre pliki, więc
muszę je teraz dodać. I można to zrobić w skrócie, wpisując git commit -am, czyli add oraz message.
I tutaj napiszemy sobie cokolwiek: poprawione pliki. Te wiadomości powinny być lepsze, ale w tym przypadku nie
ma to znaczenia.
Zostało to dodane i znowu wpiszemy git push heroku master.
Raz jeszcze to zostanie wysłane do Heroku.
Upewnijmy się tutaj po odświeżeniu, że ta aplikacja nadal nie działa.
Jak widzisz, tak jest. To się tam wyśle, zbuduje i teoretycznie teraz powinno być już ok.
Ok, udało się to uruchomić. Spróbuję tutaj odświeżyć.
Na razie jeszcze mamy Application Error. On powinien za chwilę zniknąć.
Spróbujmy może na porcie HTTP tylko się połączyć. Czy ma to jakieś znaczenie?
Na razie mamy cały czas błąd, więc poczekamy jeszcze chwilkę.
Ok. Ta aplikacja nam się nie uruchomi. Teraz tutaj w logach zauważyłem jeszcze jeden problem. Ja wyprzedziłem
fakty, mówiąc ci o tym, że w logach znajdziesz problem z portem 8080. I znalazłbyś go tam, ale pierwszy problem,
który się pojawia, jest tutaj i możesz sobie to przeczytać.
Otóż nie wie Heroku, jak uruchomić naszą aplikację. My ją uruchamialiśmy, wpisując node index.
Ale oni nie wiedzą, bo domyślnie, jeśli dobrze pamiętam, powinniśmy plik nazwać app.js.
Ale to nie jest również takie istotne. Natomiast jak to naprawić? Musimy przejść sobie do kodu i do pliku package.json
przynajmniej zobaczysz, jakie błędy mi się pojawiały, więc w przyszłości może i tobie uratuje to
trochę czasu.
I tutaj gdzie mamy npm scripts, to możemy sobie wpisać start i następnie napiszemy node index.js najlepiej.
Czyli to jest dokładnie to, co chcemy wpisać.
Npm scripts działają w ten sposób, że jeżeli w pliku package.json je sobie zdefiniujesz, to później tutaj będąc,
mogę wpisać npm start i zostanie wykonany skrypt start,
czyli to, co zostanie wpisane tutaj. W zasadzie będzie to po prostu polecenie dla wiersza poleceń.
Jeżeli coś takiego zrobimy, to teraz Heroku już powinien nam to poprawnie wszystko uruchomić.
Więc raz jeszcze git status, git commit -am - napiszemy: poprawiony package.json. Ok. I teraz znowu git push
heroku master.
I teraz już ta aplikacja powinna zadziałać.
Ok. Spróbujmy teraz w przeglądarce sobie odświeżyć i czekamy chwilkę.
Być może wreszcie nasz czat się pojawi.
Dokładnie tak się stało - czat działa.
Spróbujmy do niego dołączyć. Podamy sobie nick czatownik. Udało się dołączyć, dlatego teraz otworzę nową
przeglądarkę i spróbujemy przejść pod ten sam adres.
To już jest w internecie na serwerach Heroku. Dołączymy sobie tutaj. Maciej. Ok.
I jak widzisz, wszystko działa.
Teraz możemy korzystać z naszego czatu uruchomionego już na Heroku.
Tutaj oczywiście można by było podłączyć własną domenę.
Jak zatem widzisz, w ten prosty sposób możemy tworzyć sobie aplikacje i z użyciem Heroku robić deployment.
Jest to bardzo proste, no i cały czas będzie ta aplikacja działać. Czyli ludzie się do niej podłączają,
a my możemy zrobić deployment nowej aplikacji i tak naprawdę będziemy mieli zero sekund jakby, kiedy nasz serwer
nie działa.
Jest to bardzo istotne w momencie, kiedy pliki są podmieniane. Heroku o to wszystko zadba.
Czyli takie platformy jak Heroku - bo znajdziesz jeszcze inne - są świetne, bo po pierwsze zajmą się tym,
że możemy wysłać tam z użyciem Gita wszystkie pliki, a oni zainstalują nam potrzebne dependencies z pliku package.json,
a po drugie zadbają o to, żeby to wszystko działało od razu. Aby ten deployment został do produkcji wdrożony.
Heroku jest płatny,
jeżeli będziesz chciał korzystać z bardziej zaawansowanych rzeczy. Taki darmowy jaki my uruchomiliśmy,
jeżeli przez pół godziny nie otrzyma żadnych połączeń, to zostanie wyłączony, musisz go później ręcznie
uruchomić. Chciałbym ci jeszcze tylko w konfiguracji pokazać jedną ciekawą rzecz, mianowicie zmienne środowiskowe.
Przejdziemy tutaj do Settings i gdybyśmy np. korzystali z bazy danych, to mówiłem ci, że nie jest dobrym
pomysłem zapisywanie gdzieś tutaj, gdzie łączyliśmy się z bazą danych, hasła oraz użytkownika, tak jak robiliśmy to
np. w MongoDB.
Lepiej skorzystać ze zmiennych środowiskowych.
No i tutaj jedną taką zmienną jest process.env.port.
I możemy takie zmienne sobie zdefiniować, które Heroku nam tutaj przekaże.
Jak to zrobić?
Otóż przeszedłem sobie tutaj do Settings.
Możemy przejść niżej, poszukamy sobie tutaj odpowiedniej sekcji. Ok.
Tutaj to mamy - Reveal Config Vars. I mogę sobie dodać dowolną, na przykład napiszę sobie tutaj DB_USER i napiszemy
powiedzmy Piotr.
Dodam jeszcze jedno DB_PASSWORD. Napiszemy sobie: kurs_node, tak jak mieliśmy wcześniej do MongoDB.
I teraz jeżeli to zrobię, to powinno to zostać do naszej aplikacji automatycznie dopisane. Natomiast żeby sobie
to wyświetlić, to gdzieś tutaj - może gdzie ten czat sobie wstawialiśmy. Przejdziemy do pliku views > home. I tu,
gdzie mieliśmy nagłówek tego chatu, to chciałbym dodać jeszcze coś takiego.
Czyli użytkownik bazy danych DB_USER i hasło DB_PASSWORD to jest w widoku handlebars, dlatego musimy to
tutaj przekazać. Pamiętasz, że w tym miejscu to przekazywaliśmy. Więc zróbmy to: dbUser: process.env.DB_USER i
to samo zrobię dla hasła. Czyli tutaj powinno to zostać podstawione przez Heroku poprawnie. Przejdziemy do
terminala i Gitem znowu sobie zrobimy commit -am.
Env sobie napiszę i jeszcze raz git push heroku master. Po chwili to wszystko zostało wysłane
i uruchomione poprawnie.
Dlatego możemy tutaj odświeżyć i powinniśmy zobaczyć użytkownik bazy danych: piotr, a hasło to kurs_node.
Dokładnie w ten sposób to działa.
A zatem w naszym repozytorium i w naszym kodzie źródłowym nigdy tak ważnych informacji jak hasło czy
użytkownik bazy danych nie przechowujemy. Możemy je tutaj przekazać.
To jest już wszystko, co chciałem ci pokazać,
jeżeli chodzi o deployment na Heroku. Jak widzisz, jest to dziecinnie proste.
Polecam ci więcej z tym poeksperymentować i zobaczyć jeszcze bardziej zaawansowane opcje lub skorzystać z innych
usługodawców, którzy działają podobnie. W lekcji kolejnej natomiast pokażę ci, jak na własnym serwerze
VPS z Linux-em Ubuntu możemy sobie wdrożyć taką aplikację w trochę podobny sposób, ale będzie to trochę
trudniejsze.