====== Установка приложения на NodeJS - Ackee ====== В данной статье мы будем работать с хостингом через терминал.\\ Предполагается, что вы уже умеете [[ssh|подключаться к терминалу]]. Перед установкой Ackee нам потребуется установить зависимости. * MongoDB (v4.4 или выше) -- [[mongodb|инструкция по установке MongoDB]] * NodeJS (v14 или выше) -- [[nodejs|инструкция по установке NodeJS]] * yarn -- [[yarn|инструкция по установке yarn]] ---- ==== Установка Ackee ==== Официальный репозиторий приложения на github: https://github.com/electerious/Ackee\\ Создаем директорию для будущего приложения на nodeJs -- Ackee, скачиваем последний релиз: mkdir -p ~/nodejs-apps cd ~/nodejs-apps wget https://github.com/electerious/Ackee/archive/refs/tags/v3.4.1.tar.gz tar -xvf v3.4.1.tar.gz rm v3.4.1.tar.gz -f Создадим пользователя сервера баз данных MongoDB.\\ Сервер MongoDB должен быть запущен, как это описано [[mongodb|в инструкции по установке и запуску сервера]].\\ Порт и имя основного пользователя могут отличаться: $ mongosh --port 27100 -u admin Enter password: > use ackee switched to db ackee ackee> db.createUser( { user: "ackee", pwd: "123456789", roles: [ { role: "readWrite", db: "ackee" } ] } ) ackee> .exit Мы создали пользователя "ackee" с паролем "123456789" для базы "ackee" с правами "readWrite". ---- Далее, в соответствие с инструкцией Ackee, нам необходимо создать файл с именем **.env** в корневой директории программы: cd ~/nodejs-apps/Ackee-3.4.1/ touch .env Откроем файл в редакторе **nano** и добавим в него начальную конфигурацию: $ nano .env ACKEE_MONGODB=mongodb://ackee:123456789@localhost:27100/ackee ACKEE_PORT=8100 ACKEE_USERNAME=admin ACKEE_PASSWORD=hardpassword ACKEE_ALLOW_ORIGIN=http://example.com,https://example.com Описание параметров:\\ **ACKEE_MONGODB** -- строка подключения к MongoDB, порт сервера 27100 может отличаться.\\ **ACKEE_PORT** -- выберите порт приложения Ackee в рекомендуемом диапазоне 8000-10000.\\ **ACKEE_USERNAME** -- желаемое имя пользователя панели управления Ackee.\\ **ACKEE_PASSWORD** -- желаемый пароль для пользователя ACKEE_USERNAME.\\ **ACKEE_ALLOW_ORIGIN** -- перечисление доменов, которые будут использовать трекер для аналитики. Ackee поддерживает автоматическую настройку Access-Control-Allow-Origin заголовка с опцией **ACKEE_AUTO_ORIGIN=true**, но на момент написания статьи опция не работала должным образом. Сохраним файл комбинацией клавиш CTRL+O, далее: CTRL+X для выхода из nano. ---- Установим зависимые пакеты: yarn install Протестируем запуск сервера командой ''yarn start'': $ yarn start yarn run v1.22.19 warning ../../package.json: No license field $ npm run build && npm run server > ackee@3.4.1 build > node build.js [Ackee] › … awaiting Building and writing 'dist/index.html' [Ackee] › ✔ success Finished building 'dist/index.html' > ackee@3.4.1 server > node src/index.js [Ackee] › … awaiting Connecting to mongodb://localhost:27100/ackee [Ackee] › ✔ success Connected to mongodb://localhost:27100/ackee [Ackee] › ▶ start Starting the server [Ackee] › … watching Listening on http://localhost:8100 Сервер запустился. Остановим его комбинацией клавиш **CTRL+C**. ---- ==== Старт приложения через менеджер процессов pm2 ==== Подразумевается, что вы уже установили pm2, когда следовали [[mongodb|инструкции по установке MongoDB]]. Запустим Ackee через pm2 и сохраним список процессов командой ''pm2 save'': $ cd ~/nodejs-apps/Ackee-3.4.1/ $ pm2 start src/index.js --name Ackee [PM2] Starting /home/www/test/data/nodejs-apps/Ackee-3.4.1/src/index.js in fork_mode (1 instance) [PM2] Done. $ pm2 save ---- ==== Проксирование до приложения на NodeJS ==== Мы установили и запустили приложение на NodeJS.\\ Финальным этапом является проксирование на порт приложения 8100. * В панели управления ISPManager создайте WWW-домен. * В директории WWW домена создайте файл с именем **.htaccess** Добавьте в файл .htaccess следующие строки: Header set Access-Control-Allow-Methods: "GET,POST,PATH,OPTIONS" Header set Access-Control-Allow-Credentials: true Header set Access-Control-Allow-Headers: "Content-Type, Authorization, Time-Zone" Header set Access-Control-Max-Age: 3600 DirectoryIndex disabled RewriteEngine On RewriteBase / RewriteRule ^(.*)$ http://localhost:8100%{REQUEST_URI} [L,P] ---- ==== Проверка работы ==== Зайдем по адресу домена в браузере: {{::ackee-login.png?400|}} Готово! Сайт работает.\\ Форма авторизации, где необходимо ввести **ACKEE_USERNAME** и **ACKEE_PASSWORD** для дальнейшей эксплуатации приложения. Скорее всего вы пожелаете, чтобы сайт работал по протоколу HTTPS.\\ Выпустите и установите сертификат Let's Encrypt согласно [[free_ssl|инструкции]]. Затем измените файл **.htaccess** следующим образом, добавив принудительную переадресацию на HTTPS-протокол: Header set Access-Control-Allow-Methods: "GET,POST,PATH,OPTIONS" Header set Access-Control-Allow-Credentials: true Header set Access-Control-Allow-Headers: "Content-Type, Authorization, Time-Zone" Header set Access-Control-Max-Age: 3600 DirectoryIndex disabled RewriteEngine On RewriteBase / RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,NC,R=301] RewriteRule ^(.*)$ http://localhost:8100%{REQUEST_URI} [L,P] > [[start|Вернуться к главной странице Wiki]]