У цій статті я розповім про розміщення програми 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.