Установка Kbin · 15 min read · Dec 18, 2025

Как установить агрегатор контента Kbin, похожий на Reddit, на Ubuntu 22.04

Kbin — это платформа для агрегирования контента и микроблогинга с открытым исходным кодом, похожая на Reddit, для федиверса. Она позволяет создавать и модерировать сообщества и может взаимодействовать с другими сервисами ActivityPub, включая Mastodon, Pleroma и Peertube.

Хотя существуют популярные инстансы Kbin, к которым вы можете присоединиться и использовать, вы также можете запустить свой собственный инстанс Kbin для своих друзей и семьи. В этом руководстве вы узнаете, как установить Kbin на сервере Ubuntu 22.04.

Предварительные требования

  • Сервер с установленной Ubuntu 22.04.
  • Пользователь с правами sudo, не являющийся root.
  • Полностью квалифицированное доменное имя (FQDN), например, example.com.
  • Убедитесь, что все обновлено. $ sudo apt update $ sudo apt upgrade
  • Несколько пакетов, необходимых вашей системе. $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Некоторые из этих пакетов могут уже быть установлены в вашей системе.
  • Наша установка также требует, чтобы работали списки управления доступом (ACL). Установите его. $ sudo apt install acl

Шаг 1 - Настройка брандмауэра

Первый шаг — настроить брандмауэр. Ubuntu по умолчанию поставляется с ufw (Uncomplicated Firewall).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Вы получите следующий вывод.

Status: inactive

Разрешите порт SSH, чтобы брандмауэр не разорвал текущее соединение при его включении.

$ sudo ufw allow OpenSSH

Также разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Включите брандмауэр

$ sudo ufw enable
Команда может нарушить существующие ssh-соединения. Продолжить операцию (y|n)? y
Брандмауэр активен и включен при запуске системы

Проверьте статус брандмауэра снова.

$ 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 - Установка Git

Git обычно устанавливается с сервером Ubuntu, но если он не установлен, вы должны установить его с помощью следующей команды.

$ sudo apt install git

Проверьте установку.

$ git --version
git version 2.34.1

Настройте Git с основной информацией.

$ git config --global user.name "Ваше Имя"
$ git config --global user.email "[email protected]"

Шаг 3 - Установка Nginx

Ubuntu поставляется с устаревшей версией Nginx. Чтобы установить последнюю версию, вам нужно загрузить официальный репозиторий Nginx.

Импортируйте ключ подписи Nginx.

$ 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

Установите Nginx.

$ sudo apt install nginx

Проверьте установку.

$ nginx -v
nginx version: nginx/1.24.0

Запустите сервер Nginx.

$ sudo systemctl start nginx

Шаг 4 - Установка PHP и настройка PHP

Ubuntu 22.04 поставляется с версией PHP 8.1.2, которая немного устарела. Мы установим последнюю версию PHP 8.2 с помощью репозитория PHP Ondrej.

$ sudo add-apt-repository ppa:ondrej/php

Далее установите PHP и его расширения, необходимые для Kbin.

$ sudo apt install php8.2-common php8.2-fpm php8.2-cli php8.2-amqp php8.2-pgsql php8.2-gd php8.2-curl php8.2-simplexml php8.2-dom php8.2-xml php8.2-redis php8.2-mbstring php8.2-intl unzip

Проверьте установку.

$ php --version
PHP 8.2.7 (cli) (built: Jun  8 2023 15:27:40) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.7, Copyright (c), by Zend Technologies

Откройте файл /etc/php/8.2/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.2/fpm/pool.d/www.conf

Нам нужно установить Unix пользователя/группу процессов PHP на nginx. Найдите строки user=www-data и group=www-data в файле и измените их на nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Найдите строки listen.owner = www-data и listen.group = www-data в файле и измените их на nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Увеличьте лимит памяти для PHP-FPM с 128 МБ до 512 МБ.

$ sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/' /etc/php/8.2/fpm/php.ini

Увеличьте размер загружаемого файла до 8 МБ.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/8.2/fpm/php.ini

Перезапустите службу PHP-FPM.

$ sudo systemctl restart php8.2-fpm

Измените группу каталога сессий PHP на Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Шаг 5 - Установка Composer

Composer — это инструмент управления зависимостями для PHP и он необходим для установки Kbin. Получите файл установки composer.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Запустите установщик, чтобы сгенерировать бинарный файл Composer.

$ php composer-setup.php

Удалите файл установки.

$ php -r "unlink('composer-setup.php');"

Переместите бинарный файл composer.phar в директорию /usr/local/bin.

$ sudo mv composer.phar /usr/local/bin/composer

Проверьте установку Composer.

$ composer --version
Composer version 2.5.8 2023-06-09 17:13:21

Шаг 6 - Установка и настройка PostgreSQL

Ubuntu 22.04 по умолчанию поставляется с PostgreSQL 14. Мы будем использовать PostgreSQL 15 вместо этого.

Запустите следующую команду, чтобы добавить GPG-ключ PostgreSQL.

$ 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 Sat 2023-06-17 09:15:50 UTC; 3h 40min ago
   Main PID: 26989 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Jun 17 09:15:50 nspeaks systemd[1]: Starting PostgreSQL RDBMS...
Jun 17 09:15:50 nspeaks systemd[1]: Finished PostgreSQL RDBMS.

Вы можете видеть, что служба включена и работает по умолчанию.

Запустите оболочку PostgreSQL.

$ sudo -i -u postgres psql

Создайте базу данных Kbin.

postgres=# CREATE DATABASE kbin;

Создайте пользователя Kbin и выберите надежный пароль.

postgres-# CREATE USER kbinuser WITH PASSWORD 'Ваш_Пароль';

Измените владельца базы данных на пользователя Kbin.

postgres-# ALTER DATABASE kbin OWNER TO kbinuser;

Выйдите из оболочки.

postgres-# \q

Проверьте, работают ли ваши учетные данные.

$ psql --username kbinuser --password --host localhost kbin
Password:
psql (15.3 (Ubuntu 15.3-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

kbin=>

Выйдите из оболочки, набрав \q.

Шаг 7 - Установка Nodejs и Yarn

Ubuntu 22.04 поставляется с Node v12, который устарел. Мы установим последнюю LTS-версию Node, которая на момент написания этого руководства составляет v18.

Получите установщик Node v18 от NodeSource.

$ curl -sL https://deb.nodesource.com/setup_lts.x -o nodesource_setup.sh

Запустите скрипт установщика.

$ sudo bash nodesource_setup.sh

Установите Node.js.

$ sudo apt install nodejs

Проверьте версию Node.js.

$ node -v
v18.16.1

Удалите файл установщика.

$ rm nodesource_setup.sh

Шаг 8 - Установка Yarn

Импортируйте GPG-ключ для Yarn.

$ curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null

Добавьте источник Yarn в список системных репозиториев.

$ echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

Обновите список системных репозиториев.

$ sudo apt update

Установите Yarn

$ sudo apt install yarn

Проверьте установку.

$ yarn --version
1.22.19

Шаг 8 - Установка Redis

Magento использует Redis для хранения сессий и кэша. Это совершенно необязательно, и вы можете использовать базу данных для хранения сессий. Но Redis работает лучше. Последняя версия Magento работает с Redis 7.0. Ubuntu поставляется с Redis 6.0, поэтому мы будем использовать репозиторий Redis для установки.

Импортируйте официальный GPG-ключ Redis.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

Добавьте репозиторий APT в ваш список источников.

$ echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

Обновите список системных репозиториев.

$ sudo apt update

Выполните следующую команду для установки сервера Redis.

$ sudo apt install redis

Подтвердите версию Redis.

$ redis-server -v
Redis server v=7.0.11 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=3af367a78d5e21e9

Давайте проверим соединение службы, используя следующую команду.

$ redis-cli

Вы перейдете в оболочку Redis.

Первый шаг — установить пароль для пользователя по умолчанию Redis. Замените Ваш_Пароль_Redis на надежный пароль по вашему выбору. Убедитесь, что вы добавили к паролю символ >.

127.0.0.1:6379> acl setuser default >Ваш_Пароль_Redis

Проверьте аутентификацию Redis.

127.0.0.1:6379> AUTH Ваш_Пароль_Redis
OK

Пинг службе.

127.0.0.1:6379> ping
PONG

Выйдите из службы, набрав exit.

Если хотите, вы можете использовать следующую команду для генерации пароля Redis.

$ openssl rand 60 | openssl base64 -A
OaYOuq6J9HhxMV0sGCeZbaGecphCl4GBfVkCOPkNjkQE1FX9DKpGSCJcDb8UV+AuFKA8tR1PgjGequn1

Шаг 9 - Установка и настройка RabbitMQ

Kbin требует RabbitMQ для целей очереди сообщений. Мы установим его из репозитория Ubuntu.

$ sudo apt install rabbitmq-server

Создайте пользователя Rabbit. Выберите надежный пароль.

$ sudo rabbitmqctl add_user kbin StrongPassword

Сделайте пользователя администратором.

$ sudo rabbitmqctl set_user_tags kbin administrator

Шаг 10 - Загрузка Kbin

Перед загрузкой Kbin нам нужно создать учетную запись пользователя Kbin.

$ adduser kbin

Добавьте пользователя kbin в группу sudo.

$ sudo usermod -aG sudo kbin

Войдите как пользователь kbin.

$ su - kbin

Создайте каталог /var/www/html/kbin.

$ sudo mkdir /var/wwww/html/kbin -p

Перейдите в каталог.

$ cd /var/www/html/kbin

Дайте соответствующие разрешения для папки, чтобы текущий вошедший пользователь мог выполнять задачи.

$ sudo chown $USER:$USER kbin

Клонируйте репозиторий Kbin Git в текущую папку. Убедитесь, что вы добавили точку (.) в конце команды, чтобы указать на текущую папку.

$ git clone https://codeberg.org/Kbin/kbin-core.git .

Создайте каталог public/media.

$ mkdir public/media

Дайте ему полные права.

$ chmod 777 public/media

Шаг 11 - Настройка файла окружения

Сгенерируйте секретный ключ Mercure JWT.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Сгенерируйте секрет приложения, используя ту же команду снова.

$ node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Создайте и откройте файл .env для редактирования в каталоге Kbin.

$ nano .env

Вставьте следующий код в него. Используйте сгенерированные выше ключи в следующем файле.

# Запустите "composer dump-env prod", чтобы скомпилировать .env файлы для производственного использования (требуется symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration

# переменные kbin
SERVER_NAME="nspeaks.xyz" # производственный
KBIN_DOMAIN=nspeaks.xyz
KBIN_TITLE=Howtoforge
KBIN_DEFAULT_LANG=en
KBIN_FEDERATION_ENABLED=true
[email protected]
[email protected]
KBIN_JS_ENABLED=true
KBIN_REGISTRATIONS_ENABLED=true
KBIN_API_ITEMS_PER_PAGE=25
#KBIN_STORAGE_URL=/media
KBIN_META_TITLE="Kbin Lab"
KBIN_META_DESCRIPTION="агрегатор контента и платформа микроблогинга для федиверса"
KBIN_META_KEYWORDS="kbin, агрегатор контента, открытый исходный код, федиверс"
KBIN_HEADER_LOGO=false
KBIN_CAPTCHA_ENABLED=false

# Redis
REDIS_PASSWORD=ВашПарольRedis
REDIS_DNS=redis://default:${REDIS_PASSWORD}@localhost:6379

###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=427f5e2940e5b2472c1b44b2d06e0525
###< symfony/framework-bundle ###

###> doctrine/doctrine-bundle ###
# Формат описан на https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# ВАЖНО: вы ДОЛЖНЫ настроить версию вашего сервера, либо здесь, либо в config/packages/doctrine.yaml
#
POSTGRES_DB=kbin
POSTGRES_USER=kbin
POSTGRES_PASSWORD=Ваш_Пароль
POSTGRES_VERSION=15
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}?serverVersion=${POSTGRES_VERSION}&charset=utf8"
###< doctrine/doctrine-bundle ###

###> symfony/messenger ###
# Выберите один из транспортов ниже
RABBITMQ_PASSWORD=ПарольRabbitMQ
MESSENGER_TRANSPORT_DSN=amqp://kbin:${RABBITMQ_PASSWORD}@rabbitmq:5672/%2f/messages
#MESSENGER_TRANSPORT_DSN=doctrine://default
#MESSENGER_TRANSPORT_DSN=redis://${REDIS_PASSWORD}@redis:6379/messages
###< symfony/messenger ###

###> symfony/mailgun-mailer ###
#MAILER_DSN=mailgun+smtp://[email protected]:key@default?region=us
MAILER_DSN=smtp://AKIA3FIG4NVFH4TXXEXY:BJQvNI9U6JqSuUFQ9Ffd22Dvom/8KNwk7EIrFTRai02/@email-smtp.us-west-2.amazonaws.com:465
###< symfony/mailgun-mailer ###

###> symfony/mercure-bundle ###
# См. https://symfony.com/doc/current/mercure.html#configuration
# URL хаба Mercure, используемого приложением для публикации обновлений (может быть локальным URL)
MERCURE_URL=https://example.com/.well-known/mercure
# Публичный URL хаба Mercure, используемый браузером для подключения
MERCURE_PUBLIC_URL=https://example.com/.well-known/mercure
# Секрет, используемый для подписи JWT
MERCURE_JWT_SECRET="!ИзменитеЭтотСекретКлючJWTХабаMercure!"
###< symfony/mercure-bundle ###

###> symfony/lock ###
LOCK_DSN=flock
###< symfony/lock ###

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Шаг 12 - Установка Kbin

Установите пакеты, необходимые для Kbin, с помощью Composer.

$ composer install --prefer-dist --no-dev
$ composer dump-env prod

Очистите кэш.

$ APP_ENV=prod APP_DEBUG=0 php bin/console cache:clear
$ composer clear-cache

Дайте соответствующие разрешения для папки media.

$ sudo chown kbin:nginx public/media

Установите правильные разрешения для файлов и каталогов, используя команду setfacl. Следующая команда определяет текущий веб-сервер (Nginx) и устанавливает разрешения для существующих и будущих файлов и папок.

$ HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var

Создайте и мигрируйте базу данных PostgreSQL.

$ php bin/console doctrine:database:create
$ php bin/console doctrine:migrations:migrate

Вам будет предложено, хотите ли вы продолжить миграцию данных. Наберите yes, чтобы продолжить.

WARNING! Вы собираетесь выполнить миграцию в базе данных "kbin", которая может привести к изменениям схемы и потере данных. Вы уверены, что хотите продолжить? (yes/no) [yes]:
 > yes

[notice] Миграция до DoctrineMigrations\Version20230615203020
[notice] завершено за 1373.9ms, использовано 24M памяти, 79 миграций выполнено, 667 sql запросов

[OK] Успешно мигрировано до версии: DoctrineMigrations\Version20230615203020

Установите и соберите публичный интерфейс для сайта Kbin.

$ yarn install
$ yarn build

Создайте нового администратора для Kbin.

$ php bin/console kbin:user:create username [email protected] password

Предоставьте административные привилегии пользователю.

$ php bin/console kbin:user:admin username

Обновите ключи.

$ php bin/console kbin:ap:keys:update

Шаг 13 - Установка SSL

Нам нужно установить Certbot для генерации SSL-сертификата. Вы можете установить Certbot, используя репозиторий Ubuntu, или загрузить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd.

Ubuntu 22.04 поставляется с установленным Snapd по умолчанию. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core && sudo snap refresh core

Установите Certbot.

$ 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 [email protected] -d example.com

Вышеуказанная команда загрузит сертификат в директорию /etc/letsencrypt/live/example.com на вашем сервере.

Сгенерируйте сертификат Diffie-Hellman group.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

$ sudo systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из служб, запланированных для выполнения.

NEXT                        LEFT          LAST                        PASSED       UNIT                       ACTIVATES
Wed 2023-06-28 10:09:00 UTC 20min left    Wed 2023-06-28 09:39:00 UTC 9min ago     phpsessionclean.timer      phpsessionclean.service
Wed 2023-06-28 11:13:02 UTC 1h 24min left Wed 2023-06-28 04:41:28 UTC 5h 7min ago  ua-timer.timer             ua-timer.service
Wed 2023-06-28 12:11:00 UTC 2h 22min left n/a                         n/a          snap.certbot.renew.timer   snap.certbot.renew.service

Выполните пробный запуск процесса, чтобы проверить, работает ли обновление SSL.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, вы готовы. Ваш сертификат будет автоматически обновляться.

Шаг 14 - Настройка Nginx

Создайте и откройте файл /etc/nginx/conf.d/kbin.conf для редактирования.

$ sudo nano /etc/nginx/conf.d/kbin.conf

Вставьте следующий код в него.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  example.com;

    access_log  /var/log/nginx/kbin.access.log;
    error_log   /var/log/nginx/kbin.error.log;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    ssl_session_timeout  1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    # используйте https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, это бесплатно и безопасно
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;

    root /var/www/html/kbin/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php;
    }

    # Передать PHP-скрипты серверу FastCGI
    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Зависит от версии PHP
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
    }

    # запретить доступ к записываемым файлам/каталогам
    location ~* ^/sites/*/(documents|edi|era) {
        deny all;
        return 404;
    }

    # запретить доступ к определенным каталогам
    location ~* ^/(contrib|tests) {
        deny all;
        return 404;
    }

    # В качестве альтернативы можно запретить доступ ко всем этим файлам
    location ~* ^/(admin|setup|acl_setup|acl_upgrade|sl_convert|sql_upgrade|gacl/setup|ippf_upgrade|sql_patch)\.php {
        deny all;
        return 404;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt  {
        log_not_found off;
        access_log off;
    }

    location ~ \. {
        deny all;
    }
}

# принудить HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  example.com;
    return 301   https://$host$request_uri;
}

Обратите внимание, что корневой каталог, который будет использоваться в конфигурации Nginx, — это /var/www/html/kbin/public/.

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено, после завершения.

Откройте файл /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, когда будет предложено.

Проверьте синтаксис конфигурационного файла Nginx.

$ sudo nginx -t
nginx: конфигурационный файл /etc/nginx/nginx.conf синтаксически верен
nginx: тест конфигурационного файла /etc/nginx/nginx.conf успешен

Перезапустите службу Nginx.

$ sudo systemctl restart nginx

Шаг 15 - Установка и настройка Supervisor

Supervisor — это менеджер процессов, и мы будем использовать его в качестве монитора процессов для рабочего сообщения (RabbitMQ) для Kbin. Первый шаг — установить Supervisor.

$ sudo apt install supervisor

Создайте файл /etc/supervisor/conf.d/messenger-worker.conf и откройте его для редактирования.

$ sudo nano /etc/supervisor/conf.d/messenger-worker.conf

Вставьте следующий код в него.

[program:messenger-kbin]
command=php /var/www/html/kbin/bin/console messenger:consume async --time-limit=3600
user=kbin
numprocs=2
startsecs=0
autostart=true
autorestart=true
startretries=10
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log
stdout_logfile_maxbytes=10MB

[program:messenger-ap]
command=php /var/www/html/kbin/bin/console messenger:consume async_ap --time-limit=3600
user=kbin
numprocs=2
startsecs=0
autostart=true
autorestart=true
startretries=10
process_name=%(program_name)s_%(process_num)02d
stderr_logfile=/var/log/supervisor/%(program_name)s_stderr.log
stderr_logfile_maxbytes=10MB
stdout_logfile=/var/log/supervisor/%(program_name)s_stdout.log
stdout_logfile_maxbytes=10MB

Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.

Выполните следующие команды, чтобы перечитать и обновить новый конфигурационный файл.

$ sudo supervisorctl reread
$ sudo supervisorctl update

Запустите все службы Supervisor.

$ sudo supervisorctl start all

Шаг 16 - Доступ к Kbin

Откройте URL https://example.com, и вы увидите следующую домашнюю страницу Kbin.

Домашняя страница Kbin

Нажмите на ссылку Войти вверху, чтобы открыть страницу входа.

Страница входа Kbin

Введите учетные данные, созданные на шаге 12, и нажмите кнопку Войти, чтобы продолжить. Вы вернетесь на домашнюю страницу Kbin. Вы можете начать использовать Kbin с этого момента.

Заключение

Это завершает наше руководство по установке агрегатора контента Kbin, похожего на Reddit, на сервере Ubuntu 22.04. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.