Настройте 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.

Оставете коментар

Възходът на машините: Реални приложения на 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 машини. Прочетете тази статия, за да научите повече