У цій статті я розповім про розміщення програми Node.js на серверах спільного хостингу Namecheap за допомогою cPanel. Я не буду обговорювати налаштування сервера бази даних або інтерфейсу React для вашої веб-програми в цій статті. Натомість я хочу зосередитися на проблемах, з якими ви можете зіткнутися під час запуску програми Node у спільному хостинговому середовищі.
== Не зволікайте, приймайте сьогодні! ==
Перш ніж зайти надто далеко в розробку веб-програми, варто розмістити стабільну версію онлайн. Це може бути у вашому виробничому середовищі або в виробничому середовищі, схожому на ваше виробниче середовище. Більшість людей чекатимуть, поки їхня програма буде майже завершена, перш ніж розміщувати її онлайн âÃÂÃÂ, і це те, що я зробив, коли розробляв свою першу веб-програму React і Node. Однак на той момент у мене виникло багато проблем із запуском мого сервера Node API, і мені також довелося внести багато змін у свій додаток React. Ось чому я рекомендую розміщувати версію онлайн на ранній стадії, щоб ви могли внести зміни, перш ніж писати забагато коду.
== Використання спільного хостингу ==
Сервери спільного хостингу Namecheap використовують cPanel як інтерфейс панелі керування для керування сервером Apache. Ці інструкції також мають допомогти всім, хто користується спільною послугою хостингу з cPanel, як-от A2 Hosting і GoDaddy.
У мене також налаштовано сервер Namecheap із сертифікатом SSL, а cPanel за замовчуванням перенаправляє весь HTTP-трафік на HTTPS. Тому весь трафік до мого сервера безпечний.
Ви знайдете багато посібників з інструкціями щодо розміщення програми Node на VPS (віртуальному приватному сервері), такій як DigitalOcean. Якщо ви починаєте з нуля, то розміщення за допомогою такої служби дасть вам більше контролю. Але зазвичай це дорожче, ніж спільний хостинг. А в моєму випадку я вже заплатив за послугу спільного хостингу Namecheap.
Деякі переваги використання cPanel і спільного хостингу:
- Керується за допомогою простої веб-консолі керування
- Легко налаштувати
- Дешево, особливо якщо ви вже розміщуєте сайт/домен
- Можна легко налаштувати динамічні веб-сайти за допомогою інших технологій, таких як PHP тощо, якщо ви вивчаєте різні технології
Деякі недоліки:
- Менше âÃÂÃÂконтролю, оскільки ви не маєте доступу до основної операційної системи
- Не масштабується
== Куди все дівається? ==
Спочатку вам потрібно створити папку для всіх вихідних файлів для ваших програм Node. Я створив папку під назвою âÃÂÃÂnodejsâÃÂàу каталозі /home/username, а потім створив у цій папці вкладену папку для кожної програми. Тепер завантажте всі вихідні файли в цю підпапку. Переконайтеся, що ви також включили файл package.json. Ви не завантажуєте папку âÃÂÃÂnode_modulesâÃÂÃÂ, оскільки її буде створено за допомогою менеджера пакетів пізніше.
Пам’ятайте, що ми лише розміщуємо сервер Node API у нашому прикладі архітектури веб-програми. Ми не будемо розміщувати додаток React за допомогою Node (докладніше про цю тему в наступній статті).
httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_1.jpg Макет папки показує вихідні файли Node у папці /home/username/nodejs/mynodeapi, і там є a .htaccess у папці /home/username/public_html/myapi
== Проблема: додаток Node не може отримати доступ до портів ==
Найбільшою проблемою для мене було запустити програму Node API. Проблема полягала в тому, що зразок коду, наведений у документації підтримки Namecheap, просто не працював! Він намагається створити https-сервер для прослуховування на порту 80 і сервер http **s** на порту 443. Однак я завжди отримую помилку EACCESS про те, що у мене немає дозволу використовувати ці порти.
== Рішення âÃÂàNode не потребує доступу до порту! ==
Зрештою я знайшов рішення, прочитавши коментар користувача SibProgrammer у гілці про Plesk, іншу панель керування хостингом. cPanel використовує сервер додатків Phusion Passenger для розміщення додатків Node, як і Plesk. Підсумовуючи:
Коли ви надсилаєте запит із свого браузера, він надсилається на сервер Apache, потім у Phusion Passenger, а потім у вашу програму Node. Вашому додатку Node не потрібно володіти портом, оскільки його обробляють сервери додатків Apache і Phusion Passenger.
Це спрощує код для створення https-сервера у вашому файлі www.js (або app.js):
* www.js * Тестування створення http-сервера для 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('Програма запущена
Кілька речей, на які варто звернути увагу:
- Слухайте на process.env.PORT (замість ручного встановлення 80 або 443). Під час тестування я помітив, що process.env.PORT не визначено! Але цікаво, що в даному випадку це не має значення.
- Використовуйте http-сервер, навіть якщо у вас налаштовано SSL. cPanel налаштував Apache для перенаправлення всього HTTP-трафіку на HTTPS і відповіді на всі запити через HTTPS. Вам не потрібно вручну налаштовувати програму Node для налаштування https-сервера та читання ваших сертифікатів SSL.
== Останні кроки для сервера Node API ==
Тепер це має бути відносно простий процес, дотримуючись інструкцій, щоб налаштувати програму вузла.
httpsdavenewman.tech/wp-content/uploads/2020/06/Diagram-5_2.jpg Знімок екрана сторінки конфігурації cPanel Node.js
- Виберіть відповідну версію Node.js і режим програми (рекомендовано виробництво).
- âÃÂÃÂКорінь програмиâÃÂàбуде папкою, куди ви раніше завантажили вихідні файли (âÃÂànodejs/mynodeapiâÃÂàу прикладі вище).
- âÃÂÃÂURL-адреса програмиâÃÂàбуде URL-адресою, яка використовується для доступу до вашого API (âÃÂÃÂmyapià ¢ÃÂàу прикладі). Ім’я, яке ви вкажете в цьому полі, буде використано для створення вкладеної папки у вашій папці /home/username/public_html. Ім’я кореневої папки програми не повинно збігатися з назвою кореневої папки додатка (але часто буде).
- «Файл запуску програми» буде www.js або app.js залежно від того, як ви створили програму Node.
- Ви вирішуєте, як налаштувати файл журналу пасажирів.
- Після того, як ви створите програму, ви побачите кнопку «Запустити інсталяцію NPM». ¢ÃÂÃÂ. Запустіть це, і буде створено папку âÃÂÃÂnode_modulesâÃÂàз усіма залежними модулями, які потрібні вашій програмі.
Після того, як ви налаштуєте програму Node і запустите її, вона створить підпапку у вашій папці /home/public_html. Тепер вам потрібно буде перейти до цієї папки та відредагувати файл .htaccess і додати такий рядок:
RewriteEngine вимкнено
Це не дозволяє серверу Apache переписувати (або перенаправляти) будь-які запити, які мають надходити на ваш сервер API без змін.
І це все! Тепер ваша програма Node API має бути запущена та відповідати на ваші виклики API.
== Отже, що далі? ==
Тепер, коли ми налаштували сервер Node API, ми можемо змінити інтерфейс React у нашому середовищі розробки, щоб він вказував на цей сервер API. Або ми могли б використати Postman для перевірки наших викликів API.
У наступній статті ми розглянемо розміщення програми React на Namecheap і cPanel.