Найти тему
КиберНиндзя

Быстрая настройка сервера и поднятие сайта на NodeJS

Оглавление

Привет, друзья!

В предыдущей статье я сравнивал современные сайтовые движки в экосистеме NodeJS и остановился на ApostropheCMS (кстати, от создателей PNG и GD Library), как на одном из наиболее продвинутых, функциональных и универсальных, и состоящим из Javascript на 100%.

Сейчас я начинаю цикл уроков, в которых пошагово опишу весь процесс поднятия полноценного сайта с нуля (на примере блога, побуду банальным) на этой замечательной CMS, а заодно расскажу о множестве полезных инструментов, которые помогут веб-мастеру эффективнее работать вообще с любыми движками, и не только на NodeJS.

Поднимать сайт мы будем на примере выделенного сервера под управлением Ubuntu 20.04. Если вы захотите повторить все описанные шаги, но у вас нет под рукой своего сервера, очень выгодные условия на VPS предоставляет хостинг FirstVDS.

Кстати, если вы еще не являетесь его клиентом, можете воспользоваться при заказе промокодом 648545457. Вы получите скидку 25% при оплате сервера на 1-й месяц.

Итак, в этом уроке мы развернем площадку разработки на NodeJS, установим ApostropheCMS 2 и подготовим окружение для его работы.

Для примера будет использоваться домен demosite.com. Если у вас нет своих доменов, то на большинстве хостингов при регистрации предоставляют домен 3-го уровня либо технический. Используйте его.

Примечание. Все описанные ниже действия крайне желательно исполнять не под root-пользователем.

Установка необходимого ПО

Для начала установим все необходимые приложения:

sudo apt install nodejs npm mongodb nginx imagemagick git

Для облегчения конфигурирования сервера и работы нашего NodeJS-приложения установим дополнительные полезные утилиты.

sudo npm install -g --unsafe-perm mechanic
sudo npm install -g --unsafe-perm pm2
sudo npm install -g apostrophe-cli

Первая из них предназначется для практически мгновенной настройки Nginx-сервера в качестве прокси.

Вторая - менеджер NodeJS-приложений (и не только) для контроля над ними и автозапуска после перезагрузки сервера.

Третья - специальная утилита ApostropheCMS для его установки и настройки.

Настройка и защита базы MongoDB

Затем включим у mongodb доступ по паролю, подготовим базу и создадим учетки админа и отдельного пользователя для нашего сайта. Это очень важный шаг, связанный с безопасностью, но многие почему-то об этом забывают.

Войдем в консоль MongoDB:

mongo

Создадим админскую учетку root и пользователя demodb_user для нашей будущей базы demodb:

use admin
db.createUser(
{
user: "root",
pwd: "ПарольАдмина",
roles: [ "root" ]
}
)
use demodb
db.createUser(
{
user: "demodb_user",
pwd: "ПарольПользователя",
roles: [ { role: "readWrite", db: "demodb" } ]
}
)
exit

Теперь пропишем в конфигурации mongodb обязательность аутентификации.

sudo nano /etc/mongodb.conf

Найдите и раскоментируйте строчку

auth = true

Осталось перезапустить базу.

sudo service mongodb restart

Если вам потребуется снова войти в консоль MongoDB, после активации парольного доступа это можно сделать так:

mongo -u root -p 'ПарольАдмина' --authenticationDatabase "admin"

Установка ApostropheCMS

Наконец, все готово для самого главного. Создадим директорию под наш сайт и установим ApostropheCMS.

cd ~
mkdir www
cd www
apos create-project demosite.com

Теперь весь код нашего сайта находится в ~/www/demosite.com, осталось совсем чуть-чуть. Пропишем нестройки для соединения с базой.

cd demosite.com
mkdir data
nano data/local.js

Внесите следующее содержимое и сохраните файл.

module.exports = {
modules: {
'apostrophe-db': {
uri: 'mongodb://demodb_user:ПарольПользователя@localhost:27017/demodb'
}
}
};

Дозавершим установку и создадим пользователя для админки ApostropheCMS (введите пароль админа когда он будет запрошен).

npm install
node app.js apostrophe-users:add admin admin

Настройка прокси-сервера и публикация сайта

Для того, чтобы сайт увидел свет, нам осталось только запустить наше NodeJS-приложение и связать с ним Nginx в качестве proxy. Для этого воспользуемся установленными в самом начале утилитами mechanic и pm2.

Если у вас нет домена, можете прописать на вашем локальном компьютере в файле hosts (гугл в помощь) строчку:

<ip_вашего_сервера> demosite.com

Пропишем конфигурацию прокси в nginx:

sudo mechanic add mysite --host=demosite.com --aliases=www.demosite.com --backends=3000 --static=/путь/до/корня/demosite.com/public
И запустим node-приложение:
cd ~/www/demosite.com
pm2 start app.js
pm2 startup

Далее скопируйте и выполните команду, которая будет вам предложена (после вызова startup) и сохраните конфигурацию:

pm2 save

Готово! Теперь можете открыть в браузере demosite.com и увидите приглашение в админку только что созданного сайта.апущеный сайт приветствует мир ))

Наш новый сайт приветствует мир ))
Наш новый сайт приветствует мир ))

На этом пока закончим.

В следующей статье я опишу процесс создания и навешивание шаблона на базе Bootstrap 4, заведение первых страниц и установку модуля блога:

Как наверняка заметили искушенные админы, я не затронул некоторые дополнительные, но очень важные темы, как например установку SSL-сертификата для перевода сайта на https или логирование ошибок NodeJS с ротацией логов.

Если вам интересно, как создать и настроить бесплатный сертификат Let's encrypt для нашего сайта или сделать что-то еще - пишите пожелания в комментариях, и я обязательно затрону эти темы в будущих выпусках.