Настройте Keystone.js сървър с помощта на Nginx Reverse Proxy на Ubuntu 16.04

В този урок ще настроим уеб сървър с обратен прокси. CMS, който ще използваме, е Keystone.js, добре позната рамка за уеб приложения, базирана на Express.js. Обратният прокси, който ще използваме, е Nginx, който е безплатен обратен прокси с отворен код, както и HTTP сървър. Базата данни, която ще използваме, е MongoDB, база данни за документи NoSQL. Това ще изисква да имате настроен домейн със записи. Ако нямате този комплект, продължете и се погрижете за това и се върнете към този урок.

Инсталиране на Node

Първо, ще инсталираме Node.js, който е интерпретатор на Javascript, базиран на двигателя Chrome V8 Javascript.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo apt-get install -y build-essential

Инсталиране на Nginx

След това ще инсталираме Nginx, нашия обратен прокси.

sudo apt update
sudo apt install nginx

Това ще актуализира списъците с пакети и ще инсталира Nginx. След като инсталацията приключи, ще настроим нашия проект за възел.

Инициализираме нашия проект Keystone

Създайте нашия проект за възел. За да направите това, просто създайте нова папка.

mkdir website

След това ще създадем нашия package.jsonфайл. За да направите това, просто стартирайте npm initвъв вашия терминал, попълнете полетата и отговорете с „ yes“, за да потвърдите. След като създадете package.jsonфайла, ние ще инсталираме следните модули на възел.

sudo npm install -g generator-keystone
sudo npm install -g yo

След като те приключат с изтеглянето, изпълнете следното.

yo keystone

Попълнете задължителните полета. Ще ви поиска project name, template engine, emailза контролен панел и т.н. Ако не знаете какво да изберете, тогава настройките по подразбиране ще бъдат добре. След като сте конфигурирали вашата keystone настройка, можем да тестваме дали сървърът ни работи, като напишете, за node keystoneда стартирате приложението си. По подразбиране вашето приложение ще работи на localhost, на порт 3000. Имайте предвид, че ако нямате инсталиран MongoDB, база данни няма да бъде налична за вас веднага. Можете да научите как да го инсталирате по-късно в урока.

Ето основното оформление на директорията за Keystone.js:

  • /lib - Тук ще съхранявате вашите персонализирани библиотеки и друг код.

  • /models- Тук ще съхранявате моделите на базата данни на вашето приложение. KeystoneJS използва MongoDB като доставчик на база данни.

  • /public - Тук ще се съхраняват вашите статични файлове (CSS, JS, изображения и т.н.).

  • /routes/api - Тук ще се съхраняват API контролерите на вашето приложение.

  • /routes.views - Тук ще се съхраняват контролери за изглед на приложения.

  • /templates - Тук ще се съхраняват всички шаблонни файлове на вашето приложение.

  • /updates - Тук ще се съхраняват вашите скриптове за миграция.

  • package.json - Това е вашият npm конфигурационен файл, който генераторът генерира за нас.

  • keystone.js - Нашият основен стартов файл, стартираме го, когато стартираме уебсайта.

Инициализираме нашата база данни

Както споменахме по-рано, нашата база данни, която ще използваме, е MongoDB, която е надеждна NoSQL, документно-ориентирана база данни. Ако вече имате инсталиран MongoDB, можете да пропуснете този раздел. Ако не, ето как да го инсталирате на Ubuntu 16.04.

Импортирайте публичния ключ, използван за пакета mongoDB.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Създайте списъчния файл, използван за инсталиране на пакета.

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list

Актуализирайте списъците си с пакети с помощта на apt.

sudo apt update

Накрая инсталирайте MongoDB.

sudo apt install mongodb-org -y

Когато тази инсталация приключи, стартирайте MongoDB.

sudo service mongod start

Това ще стартира процеса на MongoDB на порта 27017.

MongoDB ще се използва в цялото приложение и ще се използва за съхраняване на информация, която използваме за нашите модели, например Userмодел. Keystone го използва като избрана база данни и в момента не можете да използвате други доставчици на бази данни.

Инсталиране на PM2

Сега е време да инсталирате PM2 (Process Manager 2.) PM2 е мениджър на процеси за приложения Node.js, под формата на npm модул. Той предоставя лесен начин да управлявате приложенията си и да ги изпълнявате във фонов режим. Тъй като е в NPM, всичко, което трябва да направим, за да го инсталираме, е да изпълним следното.

sudo npm install pm2 -g

Това казва на npm да го инсталира глобално, за да можем да го използваме навсякъде в нашата система.

Изпълнение/Управление на приложение на PM2

По-рано стартирахме нашето уеб приложение с node keystone. С PM2 е малко по-различно. Сега стартираме нашето приложение за възел със следното.

pm2 start keystone.js

Това ще добави нашето приложение PM2 към нашия списък с процеси и ще се покаже малко поле, за да можете да видите, че наистина е онлайн. Обърнете внимание на полето, обозначено idза вашия процес. Дръжте това близо, тъй като по-късно ще правим много препратки към това.

За да видите регистрационните файлове за вашето приложение.

pm2 logs [id]

Например, pm2 logs 0ако това е първото ви приложение за PM2.

За да спрете вашето уеб приложение по всяко време.

pm2 stop [id]

За да изтриете напълно приложението си.

pm2 delete [id]

PM2 дори има табло за наблюдение, ако искате да видите някои основни статистически данни за вашето приложение и можете да получите достъп до него с него.

pm2 monit

Това ще покаже основна информация като използване на RAM, използване на процесора и време за работа.

Страхотна функция, която PM2 предлага е watching. По същество гледането е, когато PM2 автоматично открива промени в някой от файловете в същата директория като началния ви файл и автоматично ще рестартира приложението ви. За да го активирате, просто рестартирайте приложението си, но му предайте флаг за часовник.

pm2 restart [id] --watch

За да деактивирате гледането, след като е активирано, просто изпълнете същата команда отново и гледането ще бъде деактивирано.

В този урок ще оставим гледането изключено.

Настройване на вашия обратен прокси

Уверете се, че имате инсталиран Nginx. Ако по някаква причина не е, вижте стъпките по-горе.

Коригирайте настройките на защитната си стена. В Ubuntu ufwе официалната защитна стена. По подразбиране връзките са блокирани на порт 80. Трябва да добавим изключение за Nginx на порт 80, на който ще работи нашето уеб приложение.

sudo ufw allow 'Nginx HTTP'

Проверете дали вашият Nginx сървър работи.

systemctl status nginx

Под Activeсекцията, ако видите active (running), значи сте готови. Ако не, можете да опитате да рестартирате услугата.

systemctl restart nginx

Изтрийте конфигурационния файл на Nginx по подразбиране.

sudo rm /etc/nginx/sites-available/default

Създайте нов и просто го наречете node.

sudo nano /etc/nginx/sites-available/node

Поставете следното във файла и го заменете example.comс домейна на вашия уебсайт.

listen 80;

server_name example.com;

    location / {

        proxy_set_header   X-Forwarded-For $remote_addr;

        proxy_set_header   Host $http_host;

        proxy_pass         "http://127.0.0.1:3000";
    }
}

Обърнете внимание, че proxy_passобозначава IP адреса, на който нашето приложение Keystone работи локално, което е localhostна порт 3000. listen 80е портът, към който искаме да бъде насочено приложението, което в този случай е port 80.

След това трябва да създадем символна връзка или символна връзка към папка, наречена sites-enabled. Разликата между sites-enabledи sites-availableе, че sites-enabledвсъщност се зарежда от Nginx.

sudo ln -s /etc/nginx/sites-available/node /etc/nginx/sites-enabled/node

Сега вашият конфигурационен файл sites-availableще бъде готов за използване и ще бъде зареден от sites-enabled. За да приложите конфигурацията, така че да влезе в сила, просто рестартирайте Nginx.

sudo systemctl restart nginx

Накрая рестартирайте приложението си PM2

pm2 restart [id]

Сега можете да навигирате до вашия домейн в браузър и ще видите Welcome to Keystoneекран с панел, за да влезете.

Ако го видите, значи успешно сте настроили производствен уеб сървър на Node.js. Ако не, тогава може да сте направили една стъпка неправилно и може да искате да се върнете и да следвате всяка стъпка внимателно.

Можете да научите повече за Nginx, като посетите техния уебсайт .

Надявам се, че ви е харесал този урок и се надявам, че това ви е помогнало да настроите свой собствен уеб сървър за производство на вашия Vultr VPS.


Как да инсталирате Thelia 2.3 на Debian 9

Как да инсталирате Thelia 2.3 на Debian 9

Използване на различна система? Thelia е инструмент с отворен код за създаване на уебсайтове за е-бизнес и управление на онлайн съдържание, написано на PHP. Изходен код на Thelia i

Как да инсталирате Microweber на CentOS 7

Как да инсталирате Microweber на CentOS 7

Използване на различна система? Microweber е CMS и онлайн магазин с отворен код за плъзгане и пускане. Изходният код на Microweber се хоства на GitHub. Това ръководство ще ви покаже

Инсталиране на Microweber на Ubuntu 16.04

Инсталиране на Microweber на Ubuntu 16.04

Използване на различна система? Microweber е CMS и онлайн магазин с отворен код за плъзгане и пускане. Изходният код на Microweber се хоства на GitHub. Това ръководство ще ви покаже

Как да инсталирате dotCMS на Ubuntu 16.04

Как да инсталирате dotCMS на Ubuntu 16.04

Използване на различна система? DotCMS е система за управление на съдържанието от корпоративен клас с отворен код, написана на Java. Той съдържа почти всички необходими функции

Как да инсталирате Pagekit 1.0 CMS на FreeBSD 11 FAMP VPS

Как да инсталирате Pagekit 1.0 CMS на FreeBSD 11 FAMP VPS

Използване на различна система? Pagekit 1.0 CMS е красива, модулна, разширяема и лека, безплатна система за управление на съдържанието (CMS) с отворен код с

Как да инсталирате BigTree CMS на Fedora 26 LAMP VPS

Как да инсталирате BigTree CMS на Fedora 26 LAMP VPS

Използване на различна система? BigTree CMS 4.2 е бърза и лека, безплатна и с отворен код, корпоративна система за управление на съдържанието (CMS) с обширна

Инсталиране на Pagekit CMS на Ubuntu 16.04 LTS

Инсталиране на Pagekit CMS на Ubuntu 16.04 LTS

Използване на различна система? Pagekit е CMS с отворен код, написан на PHP. Изходният код на Pagekit се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате

Как да инсталирате PyroCMS на Ubuntu 16.04

Как да инсталирате PyroCMS на Ubuntu 16.04

Използване на различна система? PyroCMS е CMS с отворен код, написан на PHP. Изходният код на PyroCMS се хоства на GitHub. В това ръководство добре се разходете из целия

Как да инсталирате Subrion 4.1 CMS на FreeBSD 11 FAMP VPS

Как да инсталирате Subrion 4.1 CMS на FreeBSD 11 FAMP VPS

Използване на различна система? Subrion 4.1 CMS е мощна и гъвкава система за управление на съдържанието (CMS) с отворен код, която носи интуитивно и ясно съдържание

Как да инсталирате Backdrop CMS 1.8.0 на Debian 9 LAMP VPS

Как да инсталирате Backdrop CMS 1.8.0 на Debian 9 LAMP VPS

Използване на различна система? Backdrop CMS 1.8.0 е проста и гъвкава, удобна за мобилни устройства, безплатна система за управление на съдържанието (CMS) с отворен код, която ни позволява

Как да инсталирате Roadiz CMS на Debian 9

Как да инсталирате Roadiz CMS на Debian 9

Използване на различна система? Въведение Roadiz е модерна CMS, предназначена да обработва много видове услуги. Въз основа на компонентите на Symfony и Doctrine ORM, т.е

Инсталиране на Microweber на Debian 9

Инсталиране на Microweber на Debian 9

Използване на различна система? Microweber е CMS и онлайн магазин с отворен код за плъзгане и пускане. Изходният код на Microweber се хоства на GitHub. Това ръководство ще ви покаже

Как да инсталирате Grav CMS на Fedora 28

Как да инсталирате Grav CMS на Fedora 28

Използване на различна система? Grav е CMS с плосък файл с отворен код, написан на PHP. Изходният код на Grav се хоства публично на GitHub. Това ръководство ще ви покаже как т

Как да инсталирате Grav CMS на Debian 9

Как да инсталирате Grav CMS на Debian 9

Използване на различна система? Grav е CMS с плосък файл с отворен код, написан на PHP. Изходният код на Grav се хоства публично на GitHub. Това ръководство ще ви покаже как т

Как да инсталирате Automad CMS на CentOS 7

Как да инсталирате Automad CMS на CentOS 7

Използване на различна система? Automad е файлова система за управление на съдържанието (CMS) с отворен код и шаблонна машина, написана на PHP. Изходният код на Automad i

Как да инсталирате Raneto на Ubuntu 17.10

Как да инсталирате Raneto на Ubuntu 17.10

Raneto е безплатна база от знания с отворен код, изградена на Node.js, която е лесна за настройка и използване, както и лесна за администриране. Категории и страници ar

Как да инсталирате Thelia 2.3 на Ubuntu 16.04

Как да инсталирате Thelia 2.3 на Ubuntu 16.04

Използване на различна система? Thelia е инструмент с отворен код за създаване на уебсайтове за е-бизнес и управление на онлайн съдържание, написано на PHP. Изходен код на Thelia i

Как да инсталирате октомври 1.0 CMS на Debian 9 LAMP VPS

Как да инсталирате октомври 1.0 CMS на Debian 9 LAMP VPS

Използване на различна система? Октомври 1.0 CMS е проста и надеждна, безплатна и отворена система за управление на съдържанието (CMS), изградена върху рамката Laravel

Как да инсталирате ImpressPages CMS 5.0 на Ubuntu 16.04 LAMP VPS

Как да инсталирате ImpressPages CMS 5.0 на Ubuntu 16.04 LAMP VPS

Използване на различна система? ImpressPages CMS 5.0 е проста и ефективна, безплатна и с отворен код, лесна за потребителя, базирана на MVC, система за управление на съдържанието (CMS)

How to Install CMS Made Simple 2.2 on a Debian 9 LAMP VPS

How to Install CMS Made Simple 2.2 on a Debian 9 LAMP VPS

Using a Different System? CMS Made Simple 2.2 is a flexible and extensible, free and open source Content Management System (CMS) intelligently designed to b

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече