Инструменты пользователя

Инструменты сайта


nodejs_ackee

Установка приложения на NodeJS - Ackee

В данной статье мы будем работать с хостингом через терминал.
Предполагается, что вы уже умеете подключаться к терминалу.

Перед установкой Ackee нам потребуется установить зависимости.


Установка 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 должен быть запущен, как это описано в инструкции по установке и запуску сервера.
Порт и имя основного пользователя могут отличаться:

$ 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.

Запустим 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_USERNAME и ACKEE_PASSWORD для дальнейшей эксплуатации приложения.

Скорее всего вы пожелаете, чтобы сайт работал по протоколу HTTPS.
Выпустите и установите сертификат Let's Encrypt согласно инструкции.

Затем измените файл .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]
nodejs_ackee.txt · Последнее изменение: 2022/12/26 07:44 — 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki