W tym artykule omówię hosting aplikacji Node.js na współdzielonych serwerach hostingowych Namecheap przy użyciu cPanel. W tym artykule nie będę omawiał konfigurowania serwera bazy danych ani interfejsu React dla Twojej aplikacji internetowej. Zamiast tego chcę skupić się na wyzwaniach, z którymi możesz się spotkać podczas uruchamiania aplikacji Node w środowisku hostingu współdzielonego. == Nie zwlekaj, gospodarzu już dziś! == Zanim posuniesz się zbyt daleko na ścieżce tworzenia aplikacji internetowej, dobrze jest umieścić stabilną wersję online. Może to mieć miejsce w Twoim środowisku produkcyjnym lub w środowisku przejściowym, które jest podobne do Twojego środowiska produkcyjnego. Większość ludzi będzie czekać, aż ich aplikacja będzie prawie ukończona, zanim umieści ją online – i właśnie to zrobiłem, tworząc moją pierwszą aplikację internetową React i Node. Jednak w tym momencie miałem wiele wyzwań związanych z uruchomieniem mojego serwera Node API, a także musiałem wprowadzić wiele zmian w mojej aplikacji React. Dlatego zalecam wczesne umieszczenie wersji online, aby można było wprowadzić poprawki przed napisaniem zbyt dużej ilości kodu. == Korzystanie z usługi hostingu współdzielonego == Współdzielone serwery hostingowe Namecheap używają cPanel jako interfejsu panelu sterowania do zarządzania serwerem Apache. Te instrukcje powinny również pomóc każdemu, kto korzysta z usługi hostingu współdzielonego z cPanel, takiej jak A2 Hosting i GoDaddy. Mam też skonfigurowany serwer Namecheap z certyfikatem SSL, a cPanel domyślnie przekierowuje cały ruch HTTP do HTTPS. Więc cały ruch do mojego serwera jest bezpieczny. Znajdziesz wiele przewodników instruujących, jak hostować aplikację Node w usłudze hostingowej VPS (Virtual Private Server), takiej jak DigitalOcean. Jeśli zaczynasz od zera, hosting za pomocą takiej usługi zapewni Ci większą kontrolę. Ale zwykle jest droższy niż hosting współdzielony. A w moim przypadku już zapłaciłem za usługę hostingu współdzielonego Namecheap. Niektóre zalety korzystania z cPanel i hostingu współdzielonego: - Zarządzane za pomocą prostej internetowej konsoli zarządzania - Łatwy w konfiguracji - Tanie, zwłaszcza jeśli już hostujesz witrynę / domenę - Może łatwo konfigurować dynamiczne strony internetowe przy użyciu innych technologii, takich jak PHP itp., Jeśli badasz różne technologie Niektóre wady: - Mniej kontroli, ponieważ nie masz dostępu do bazowego systemu operacyjnego - Nie skalowalny == Gdzie wszystko idzie? == Najpierw musisz utworzyć folder dla wszystkich plików źródłowych dla aplikacji Node. Utworzyłem folder o nazwie âÃÂÃÂnodejsâÃÂàw katalogu /home/username, a następnie w tym folderze tworzę podfolder dla każdej aplikacji. Teraz prześlij wszystkie pliki źródłowe do tego podfolderu. Upewnij się, że dołączasz również plik package.json. Nie przesyłaj folderu âÃÂÃÂnode_modulesâÃÂÃÂ, ponieważ zostanie on utworzony za pomocą menedżera pakietów później. Pamiętaj, że w naszym przykładzie architektury aplikacji internetowej hostujemy tylko serwer Node API. Nie będziemy hostować aplikacji React za pomocą Node (więcej na ten temat w następnym artykule). httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Układ folderów pokazuje pliki źródłowe Node w folderze /home/username/nodejs/mynodeapi i tam jest Plik .htaccess w folderze /home/username/public_html/myapi == Problem — aplikacja Node nie może uzyskać dostępu do portów == Największym wyzwaniem było uruchomienie mojej aplikacji Node API. Problem polegał na tym, że przykładowy kod podany w dokumentacji wsparcia Namecheap po prostu nie działał! Próbuje utworzyć serwer https do nasłuchiwania na porcie 80 i serwer http **s** na porcie 443. Jednak zawsze otrzymuję błąd EACCESS mówiący, że nie mam uprawnień korzystać z tych portów. == Rozwiązanie Węzeł nie musi mieć dostępu do portu! == W końcu znalazłem rozwiązanie, czytając komentarz użytkownika SibProgrammer w wątku o Plesk, innym hostingowym panelu kontrolnym. cPanel używa serwera aplikacji Phusion Passenger do hostowania aplikacji Node, podobnie jak Plesk. W podsumowaniu: Gdy wysyłasz żądanie z przeglądarki, trafia ono do serwera Apache, następnie do Phusion Passenger, a następnie do Twojej aplikacji Node. Twoja aplikacja Node nie musi być właścicielem portu, ponieważ jest obsługiwana przez serwery aplikacji Apache i Phusion Passenger. Upraszcza to kod tworzenia serwera https w pliku www.js (lub app.js): * www.js * Testowanie tworzenia serwera http dla Namecheap. * Dave */ const http = require('http http.createServer(function(request, response) { response.writeHead(200, {'Content-Type': 'text/html response.endh1>Hello Worldh1 Listen(process.env .PORT); console.log('Aplikacja jest uruchomiona Kilka rzeczy do zapamiętania: - Słuchaj na process.env.PORT (zamiast ręcznego ustawiania 80 lub 443). Podczas testowania zauważyłem, że process.env.PORT jest niezdefiniowany! Ale co ciekawe, nie ma to znaczenia w tym przypadku. - Używaj serwera http, nawet jeśli masz skonfigurowany protokół SSL. cPanel skonfigurował Apache tak, aby przekierowywał cały ruch HTTP do HTTPS i w konsekwencji odpowiadał na wszystkie żądania HTTPS. Nie musisz ręcznie konfigurować aplikacji Node, aby skonfigurować serwer https i odczytywać certyfikaty SSL. == Ostatnie kroki dla serwera Node API == Teraz powinien to być stosunkowo prosty proces, zgodnie z instrukcjami, aby skonfigurować aplikację węzła. httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Zrzut ekranu strony konfiguracji Node.js cPanelâÃÂÃÂs - Wybierz odpowiednią wersję Node.js i tryb aplikacji (zalecana wersja produkcyjna). - âÃÂÃÂAplikacja głównaâÃÂàbędzie folderem, do którego wcześniej przesłałeś pliki źródłowe (âÃÂànodejs/mynodeapiâÃÂàw powyższym przykładzie). - âÃÂÃÂApplication URLâÃÂàbędzie adresem URL używanym do uzyskiwania dostępu do interfejsu API (âÃÂÃmyapià ¢ÃÂàw przykładzie). Nazwa podana w tym polu zostanie użyta do utworzenia podfolderu w folderze /home/username/public_html. Nie musi to być taka sama nazwa jak folder główny aplikacji (ale często będzie). - Plik startowy aplikacji âÃÂàbędzie miał postać www.js lub app.js, w zależności od tego, jak utworzyłeś aplikację Node. - To zależy od Ciebie, jak chcesz skonfigurować plik dziennika pasażera. - Po utworzeniu aplikacji zobaczysz przycisk „Uruchom instalację NPM” ¢ÃÃ. Uruchom to, a utworzy folder âÃÂÃÂnode_modulesâÃÂàze wszystkimi modułami zależnymi, których potrzebuje Twoja aplikacja. Po skonfigurowaniu i uruchomieniu aplikacji Node utworzy ona podfolder w folderze /home/public_html. Musisz teraz przejść do tego folderu i edytować plik .htaccess i dodać następujący wiersz: Przepisz Wyłącz silnik Zapobiega to przepisaniu (lub przekierowaniu) przez serwer Apache jakichkolwiek żądań, które muszą trafić do twojego serwera API w stanie nienaruszonym. I to jest to! Teraz Twoja aplikacja Node API powinna działać i odpowiadać na wywołania API. == Więc co dalej? == Teraz, gdy mamy skonfigurowany serwer Node API, możemy zmienić interfejs React w naszym środowisku programistycznym, aby wskazywał ten serwer API. Lub możemy użyć Postmana do przetestowania naszych wywołań API. W następnym artykule przyjrzymy się hostowaniu aplikacji React na Namecheap i cPanel.