Как установить Strapi CMS на Ubuntu 22.04
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установка и настройка PostgreSQL
- Шаг 3. Установите Node.js
- Шаг 4. Установите Strapi
- Шаг 5. Установите и настройте PM2
- Шаг 6. Установите Nginx
- Шаг 7. Установите SSL
- Шаг 8. Настройка Nginx
- Шаг 9. Обновите Strapi
- Заключение
Strapi — это безголовая система управления контентом (CMS) с открытым исходным кодом, созданная с использованием JavaScript. Как и другие безголовые CMS, Strapi не поставляется с интерфейсом из коробки. Он использует API для своего внешнего интерфейса, что позволяет вам создавать веб-сайт с использованием популярных фреймворков, таких как React и Next.js. Основанная на системе плагинов, Strapi представляет собой гибкую CMS, чья панель администратора и API расширяемы, и каждая часть которой настраивается в соответствии с любым вариантом использования. Strapi также имеет встроенную пользовательскую систему для подробного управления тем, к чему имеют доступ администраторы и конечные пользователи.
В этом руководстве вы узнаете, как установить общедоступную версию Strapi CMS на сервер Ubuntu 22.04 вместе с Nginx в качестве обратного прокси-сервера.
Предпосылки
-
A server running Ubuntu 22.04.
-
A non-root user with sudo privileges.
-
A fully qualified domain name (FQDN) like
strapi.example.com
. -
Make sure everything is updated.
$ sudo apt update $ sudo apt upgrade
-
Few packages that your system needs.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Some of these packages may already be installed on your system.
Шаг 1. Настройте брандмауэр
Первым шагом является настройка брандмауэра. Ubuntu по умолчанию поставляется с ufw (простой брандмауэр).
Проверьте, работает ли брандмауэр.
$ sudo ufw status
Вы должны получить следующий вывод.
Status: inactive
Разрешить порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.
$ sudo ufw allow OpenSSH
Разрешить также порты HTTP и HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Включить брандмауэр
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Еще раз проверьте состояние брандмауэра.
$ sudo ufw status
Вы должны увидеть аналогичный вывод.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Шаг 2. Установите и настройте PostgreSQL.
Strapi работает с PostgreSQL 11 и выше. Ubuntu 22.04 поставляется с PostgreSQL 14 по умолчанию. Мы будем использовать PostgreSQL 15 для нашего руководства.
Выполните следующую команду, чтобы добавить ключ PostgreSQL GPG.
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null
Добавьте репозиторий APT в список источников.
$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Обновите системный репозиторий.
$ sudo apt update
Теперь вы можете установить PostgreSQL, используя приведенную ниже команду.
$ sudo apt install postgresql postgresql-contrib
Пакет postgresql-contrib
содержит несколько дополнительных утилит.
Проверьте состояние службы PostgreSQL.
$ sudo systemctl status postgresql ? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2022-12-28 18:03:03 UTC; 17s ago Main PID: 4119 (code=exited, status=0/SUCCESS) CPU: 2ms Dec 28 18:03:03 strapi systemd[1]: Starting PostgreSQL RDBMS... Dec 28 18:03:03 strapi systemd[1]: Finished PostgreSQL RDBMS.
Вы можете видеть, что служба включена и работает по умолчанию.
Запустите оболочку PostgreSQL.
$ sudo -i -u postgres psql
Создайте базу данных Strapi.
postgres=# CREATE DATABASE strapidb;
Создайте пользователя Strapi и выберите надежный пароль.
postgres-# CREATE USER strapiuser WITH PASSWORD 'Your_Password';
Измените владельца базы данных на пользователя Strapi.
postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;
Выйдите из оболочки.
postgres-# \q
Убедитесь, что ваши учетные данные работают.
$ psql --username strapiuser --password --host localhost strapidb Password: psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. strapidb=>
Выйдите из оболочки, набрав \q
.
Шаг 3 — Установите Node.js
Ubuntu 22.04 поставляется с Node v12, который устарел. Мы установим последнюю LTS-версию Node, которая на момент написания этого руководства была v18.
Загрузите установщик Node v18 из Nodesource.
$ curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh
Запустите скрипт установки.
$ sudo bash nodesource_setup.sh
Установите Node.js.
$ sudo apt install nodejs
Проверьте версию Node.js.
$ node -v v18.12.1
Удалите установочный файл.
$ rm nodesource_setup.sh
Шаг 4 — Установите Strapi
Выполните следующую команду, чтобы установить Strapi.
$ npx howtoforge-project Need to install the following packages: Ok to proceed? (y) y
Введите y
, чтобы продолжить установку. Далее вам будет предложено выбрать тип установки. Выберите «Пользовательский», чтобы продолжить, и ответьте на вопросы следующим образом.
? Choose your installation type Custom (manual settings) ? Choose your preferred language JavaScript ? Choose your default database client postgres ? Database name: strapidb ? Host: 127.0.0.1 ? Port: 5432 ? Username: strapiuser ? Password: Your_Password ? Enable SSL connection: No
В зависимости от ваших требований вы можете выбрать Typescript или JavaScript в качестве языка для Strapi.
После завершения установки вы готовы создать свой проект Strapi.
Перейдите в каталог проекта.
$ cd howtoforge-project
Выполните следующую команду, чтобы создать проект, включая пользовательский интерфейс администратора Strapi.
$ NODE_ENV=production npm run build
Запустите сервер Strapi с помощью следующей команды.
$ node ~/howtoforge-project/node_modules/.bin/strapi start
Ваше приложение должно быть видно по URL-адресу http://
. Но сначала откройте порт в брандмауэре.
$ sudo ufw allow 1337
После того, как вы откроете URL-адрес, вы должны увидеть следующий экран.
Нажмите Ctrl + C в терминале, чтобы остановить сервер. Вы должны удалить правило брандмауэра, потому что оно нам не понадобится.
$ sudo ufw delete allow 1337
Шаг 5 — Установите и настройте PM2
Вместо того, чтобы запускать сервер вручную, мы можем использовать PM2 (Process Manager 2) для управления процессом и создания для него службы systemd.
Перейдите в домашний каталог.
$ cd ~
Установите ПМ2.
$ sudo npm install -g
Создайте и откройте файл конфигурации PM2 для редактирования.
$ sudo nano ecosystem.config.js
Вставьте следующее содержимое в файл. Обязательно введите правильное имя каталога вместе с учетными данными Postgres.
module.exports = { apps: [ { name: 'strapi', cwd: '/home/navjot/my-project', script: 'npm', args: 'start', env: { NODE_ENV: 'production', DATABASE_HOST: 'localhost', DATABASE_PORT: '5432', DATABASE_NAME: 'strapidb', DATABASE_USERNAME: 'strapiuser', DATABASE_PASSWORD: 'Your_Password', }, }, ], };
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Запустите экземпляр Strapi в фоновом режиме с помощью PM2.
$ pm2 start ecosystem.config.js
Вы получите следующий вывод.
------------- __/""""\____/"\____________/"\____/"""_____ _\/"/////////"_\/""________/""__/"///////"___ _\/"_______\/"_\/"//"____/"//"_\///______\//"__ _\/""""\/__\/"\///"/"/_\/"___________/"/___ _\/"/////////____\/"__\///"/___\/"________/"//_____ _\/"_____________\/"____\///_____\/"_____/"//________ _\/"_____________\/"_____________\/"___/"/___________ _\/"_____________\/"_____________\/"__/"""""_ _\///______________\///______________\///__\///////////////__ Runtime Edition PM2 is a Production Process Manager for Node.js applications with a built-in Load Balancer. Start and Daemonize any application: $ pm2 start app.js Load Balance 4 instances of api.js: $ pm2 start api.js -i 4 Monitor in production: $ pm2 monitor Make pm2 auto-boot at server restart: $ pm2 startup To go further checkout: http://pm2.io/ ------------- [PM2] Spawning PM2 daemon with pm2_home=/home/navjot/.pm2 [PM2] PM2 Successfully daemonized [PM2][WARN] Applications strapi not running, starting... [PM2] App [strapi] launched (1 instances) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? id ? name ? namespace ? version ? mode ? pid ? uptime ? ? ? status ? cpu ? mem ? user ? watching ? ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ? 0 ? strapi ? default ? N/A ? fork ? 4824 ? 0s ? 0 ? online ? 0% ? 31.9mb ? navjot ? disabled ? ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Приложения, работающие под управлением PM2, автоматически перезапускаются в случае сбоя или уничтожения.
Создайте сценарий запуска systemd, используя следующую команду.
$ pm2 startup
Вы получите следующий вывод.
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot
Скопируйте команду из приведенного выше вывода и запустите ее.
$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot
Сохраните список процессов PM2.
$ pm2 save
Теперь ваш сервис Strapi работает в фоновом режиме в рабочем режиме.
Шаг 6 — Установите Nginx
Ubuntu 22.04 поставляется с более старой версией Nginx. Чтобы установить последнюю версию, вам необходимо скачать официальный репозиторий Nginx.
Импортировать ключ подписи Nginxs.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Добавьте репозиторий для стабильной версии Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Обновите системные репозитории.
$ sudo apt update
Установите Нгинкс.
$ sudo apt install nginx
Проверьте установку.
$ nginx -v nginx version: nginx/1.22.1
Запустите сервер Nginx.
$ sudo systemctl start nginx
Шаг 7 — Установите SSL
Нам нужно установить Certbot для создания SSL-сертификата. Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.
Ubuntu 22.04 поставляется с установленным по умолчанию Snapd. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена. Убедитесь, что ваша версия Snapd обновлена.
$ sudo snap install core $ sudo snap refresh core
Установите Сертбот.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команда Certbot выполняется, создав символическую ссылку на каталог /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Выполните следующую команду, чтобы сгенерировать SSL-сертификат.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m -d strapi.example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/strapi.example.com
на вашем сервере.
Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Выполните пробный запуск процесса, чтобы проверить, нормально ли работает обновление SSL.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, все готово. Ваш сертификат будет продлен автоматически.
Шаг 8 — Настройте Nginx
Откройте файл /etc/nginx/nginx.conf
для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Создайте и откройте файл /etc/nginx/conf.d/strapi.conf
для редактирования.
$ sudo nano /etc/nginx/conf.d/strapi.conf
Вставьте в него следующий код.
server { # Redirect any http requests to https listen 80; listen [::]:80; server_name strapi.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name strapi.example.com; access_log /var/log/nginx/strapi.access.log; error_log /var/log/nginx/strapi.error.log; # TLS configuration ssl_certificate /etc/letsencrypt/live/strapi.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/strapi.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/strapi.example.com/chain.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:1337; } }
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Проверьте синтаксис файла конфигурации Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезапустите службу Nginx.
$ sudo systemctl restart nginx
Теперь вы можете получить доступ к Strapi CMS через URL-адрес https://strapi.example.com
. Вы увидите следующую страницу, которая показывает, что Strapi работает в рабочем режиме.
Посетите URL-адрес https://strapi.example.com/admin
, чтобы создать пользователя-администратора.
Заполните данные администратора и нажмите кнопку «Начать», чтобы перейти к экрану панели администратора.
С этого момента вы можете начать создавать контент на Strapi.
Шаг 9 — Обновите Strapi
Первым шагом в обновлении Strapi является остановка сервера.
$ cd ~ $ pm2 stop ecosystem.config.js
Перейдите в каталог проекта и откройте файл package.json
для редактирования.
$ cd howtoforge-project $ nano package.json
Обновите все номера версий пакетов Strapi до последней стабильной версии Strapi. Вы можете получить последнюю доступную версию на странице выпусков Strapis GitHub.
"devDependencies": {}, "dependencies": { "@strapi/strapi": "4.5.5", "@strapi/plugin-users-permissions": "4.5.5", "@strapi/plugin-i18n": "4.5.5", "pg": "8.6.0" },
Здесь вам нужно изменить 4.5.5
на последнюю стабильную версию. Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Установите обновленную версию.
$ npm install
Перестройте панель администратора.
$ NODE_ENV=production npm run build
Запустите сервер снова.
$ cd ~ $ pm2 start ecosystem.config.js
Теперь ваша установка Strapi обновлена и работает.
Заключение
На этом мы завершаем наше руководство по установке Strapi CMS на сервер Ubuntu 22.04 и Nginx в качестве обратного прокси-сервера. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.