Strapi е рамка за управление на съдържание Node.js, посветена на създаването на API. „По средата между Node.js Framework и Headless CMS“, той е проектиран да изгражда API за секунди вместо седмици благодарение на вградените си функции: Административен панел, Управление на удостоверяване и разрешения, Съдържание Управление, API генератор и др.

Хостингът на проект Strapi е важна мисия по време на фазите на разработка и производство. Въпреки това, като разработчик, вие вероятно сте повече експерт в JavaScript, отколкото в DevOps. Не се притеснявайте, тази статия е тук, за да ви помогне.

В този урок ще научите как да разположите проект Strapi v3 за производство на чист Ubuntu сървър.

Предпоставки

На първо място, ще ви е необходим следния чист Ubuntu 16.04 сървър, конфигуриран с git инсталиран на него потребител, който не е root, имащ sudo привилегии.

Инсталирайте Node.js

Приложението Strapi не е нищо друго освен приложение Node.js. Очевидно е, че изисква Node.js (8 или по-висок).

Изпълнете следните команди, за да инсталирате Node.js:

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

Проверете дали Node е инсталиран успешно:

$ node -v

Трябва да отпечата v9.x.x.

Инсталирайте MongoDB

Strapi използва MongoDB като система за бази данни по подразбиране. Освен ако сте решили да използвате друга система от бази данни или да хоствате базата данни MongoDB на друг сървър или услуга (което силно препоръчваме), трябва да инсталирате MongoDB на сървъра на Ubuntu.

Импортирайте публичния ключ:

$ 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

Презареждане на локална база данни за пакети:

$ sudo apt-get update

Инсталирайте MongoDB пакети:

$ sudo apt-get install -y mongodb-org

Стартирайте MongoDB:

$ sudo service mongod start

Ако имате някакъв проблем тук, погледнете документацията на MongoDB.

Забележка: по подразбиране MongoDB е автоматично достъпен отвън през порт 27017. Горещо ви съветваме да ограничите достъпа, като коригирате правилата на вашата защитна стена.

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

Node.js и MongoDB са инсталирани. Време е да импортираме нашия проект Strapi.

Преместете се в домашната директория на вашия потребител и клонирайте проект на Strapi от хранилище на GitHub (или GitLab, BitBucket…).

Клонирайте вашия проект:

$ cd ~ $ git clone https://github.com/strapi/sample-strapi-app

Освен ако не искате да получите чисто приложение Strapi, заменете URL адреса по-горе с този на вашия проект.

Забележка: ако вашият проект се хоства в частно хранилище, терминалът може да поиска вашите идентификационни данни (имейл и парола).

Зависимости при инсталиране:

$ cd sample-strapi-app $ npm install --production

Стартирайте сървъра, за да се уверите, че всичко върви добре:

$ NODE_ENV=production npm start

Забележка: NODE_ENV=production информира Strapi, че приложението работи в производствен режим. Взетите под внимание конфигурационни файлове са тези, които се намират в config/environments/production.

Вашият API на Strapi трябва да е достъпен на следния URL адрес: http://yourIP:1337.

След това спрете сървъра, като изпълните ctrl + c.

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

Както може би сте видели, ако излезете от скрипта npm start или излезете от SSH връзката, процесът Node.js спира. Това е доста досадно. Освен това искаме да сме сигурни, че приложението ще се рестартира автоматично, ако се срине.

Това е мястото, където PM2, де факто мениджърът на процеси за Node.js, идва на помощ.

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

$ npm install pm2 -g

Забележка: ако срещнете проблеми с разрешенията на npm, променете разрешенията на директорията по подразбиране на npm или използвайте sudo.

Стартирайте вашия Strapi сървър:

$ NODE_ENV=production pm2 start server.js --name api

Вашият API на Strapi трябва да бъде достъпен на следния URL адрес: http://yourIP:1337.

Избройте процесите:

$ pm2 list

За да сте сигурни, че вашият API работи добре, проверете регистрационните файлове:

$ pm2 logs api

Натиснете crtl + c, за да излезете от изгледа на регистрационните файлове.

Забележка: разгледайте PM2 документацията за по-разширено използване.

Инсталирайте nginx

Вашето приложение вече е готово и работи на порт 1337. За да го направите достъпен на уеб порта (80), трябва да инсталирате обратен прокси.

За този урок ще използваме nginx: най-известният HTTP и обратен прокси сървър.

Инсталирайте го:

$ sudo apt-get update $ sudo apt-get install -y nginx

Отворете главния конфигурационен файл:

$ sudo nano /etc/nginx/sites-available/default

След това заменете съдържанието в директивата location / със следното:

proxy_pass http://localhost:1337;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;

Рестартирайте nginx:

$ sudo systemctl restart nginx

В този момент вашият API на Strapi трябва да е достъпен на следния URL адрес: http://yourIP.

Заключение

Поздравления, вие успешно внедрихте приложение Strapi на чист Ubuntu сървър!

Този урок обхваща основните части за внедряване на приложение Strapi. Горещо ви съветваме да обърнете голямо внимание на следните точки: сигурност (отворени портове, IP ограничения и т.н.), SSL, автоматично мащабиране и т.н.

За да направим живота ви още по-лесен, публикувахме „пълен bash скрипт за настройка на вашата среда“. Този скрипт инсталира Node.js, Strapi, PM2, MongoDB и nginx (правилно конфигуриран). За да опитате, изпълнете следната команда: wget -qO - https://strapi.io/install.sh | sudo -E bash && source ~/.bashrc на чист Ubuntu сървър. След като го стартирате, единственото нещо, което трябва да направите, е да настроите свой собствен Strapi проект или да създадете нов чрез CLI.

През следващите няколко седмици ще публикуваме други статии, свързани с внедряването на API на Strapi: внедряване на Strapi на Heroku, използване на mLab със Strapi, използване на Strapi с Docker, наблюдение на API на Strapi с Keymetrics и др.

Какви уроци бихте искали следващите?

Първоначално публикувано в blog.strapi.io на 31 януари 2018 г.