ウェブサイト検索

Ubuntu 22.04にRedditのようなフェディバースコンテンツ集約ツールKbinをインストールする方法


Ubuntu 22.04にRedditのようなフェディバースコンテンツ集約ツールKbinをインストールする方法

このページで

  1. 前提条件
  2. ステップ1 - ファイアウォールを設定する
  3. ステップ2 - Gitをインストールする
  4. ステップ3 - Nginxをインストールする
  5. ステップ4 - PHPをインストールしてPHPを設定する
  6. ステップ5 - Composerをインストールする
  7. ステップ6 - PostgreSQLをインストールして構成する
  8. ステップ7 - NodejsとYarnをインストールする
  9. ステップ8 - Yarnをインストールする
  10. ステップ8 - Redisをインストールする
  11. ステップ9 - RabbitMQをインストールして設定する
  12. ステップ10 - Kbinをダウンロードする
  13. ステップ11 - 環境ファイルを設定する
  14. ステップ12 - Kbinをインストールする
  15. ステップ13 - SSLをインストールする
  16. ステップ14 - Nginxを設定する
  17. ステップ15 - Supervisorのインストールと設定
  18. ステップ16 - Kbinにアクセスする
  19. 結論

Kbinは、fediverse向けのオープンソースのRedditのようなコンテンツ集約およびマイクロブログプラットフォームです。それは、コミュニティを作成し管理することを可能にし、Mastodon、Pleroma、Peertubeなどの他のActivityPubサービスと通信することができます。

人気のあるKbinインスタンスに参加して使用することができますが、友人や家族のために自分のKbinインスタンスを運営することもできます。このチュートリアルでは、Ubuntu 22.04サーバーにKbinをインストールする方法を学びます。

前提条件

    Ubuntu 22.04を実行しているサーバー。

    非ルートのsudoユーザー。

    完全修飾ドメイン名(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(簡易ファイアウォール)が付属しています。

ファイアウォールが実行中かどうか確認してください。

sudo ufw status

次の出力が得られます。

Status: inactive

ファイアウォールがSSHポートを有効にした際に現在の接続を切断しないように、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 - Gitをインストールする

Gitは通常、Ubuntuサーバーにインストールされていますが、もしインストールされていない場合は、以下のコマンドを使用してインストールする必要があります。

sudo apt install git

インストールを確認してください。

git --version
git version 2.34.1

基本情報でGitを設定します。

git config --global user.name "Your Name"
git config --global user.email "[email "

ステップ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バージョンが含まれています。OndrejのPHPリポジトリを使用して最新のPHP 8.2バージョンをインストールします。

sudo add-apt-repository ppa:ondrej/php

次に、Kbinに必要なPHPおよびその拡張機能をインストールします。

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

PHPプロセスのUnixユーザー/グループを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のメモリ制限を128MBから512MBに増やします。

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

ファイルアップロードサイズを8MBに増やしてください。

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を使用します。

次のコマンドを実行して、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 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 'Your_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をインストールします。

NodeSourceからNode v18インストーラーを取得してください。

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をインストールする

YarnのGPGキーをインポートします。

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リポジトリを使用します。

公式のRedis GPGキーをインポートします。

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のデフォルトユーザーのパスワードを設定することです。Your_Redis_Passwordをお好みの強力なパスワードに置き換えてください。パスワードの前に>文字を付けることを忘れないでください。

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Redisの認証をテストする。

127.0.0.1:6379> AUTH Your_Redis_Password
OK

サービスにpingを送信します。

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

ウサギユーザーを作成します。強力なパスワードを選んでください。

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'))"

Kbinディレクトリ内に.envファイルを作成して編集のために開いてください。

nano .env

次のコードをそこに貼り付けてください。上記で生成されたキーを次のファイルに使用します。

Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration

kbin variables
SERVER_NAME="nspeaks.xyz" # production
KBIN_DOMAIN=nspeaks.xyz
KBIN_TITLE=Howtoforge
KBIN_DEFAULT_LANG=en
KBIN_FEDERATION_ENABLED=true
[email 
[email 
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="content aggregator and micro-blogging platform for the fediverse"
KBIN_META_KEYWORDS="kbin, content agregator, open source, fediverse"
KBIN_HEADER_LOGO=false
KBIN_CAPTCHA_ENABLED=false

Redis
REDIS_PASSWORD=YourRedisPassword
REDIS_DNS=redis://default:${REDIS_PASSWORD}@localhost:6379

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

###> doctrine/doctrine-bundle ###
Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
POSTGRES_DB=kbin
POSTGRES_USER=kbin
POSTGRES_PASSWORD=Your_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 ###
Choose one of the transports below
RABBITMQ_PASSWORD=RabbitMQPassword
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 :key@default?region=us
MAILER_DSN=smtp://AKIA3FIG4NVFH4TXXEXY:BJQvNI9U6JqSuUFQ9Ffd22Dvom/8KNwk7EIrFTRai02/@email-smtp.us-west-2.amazonaws.com:465
###< symfony/mailgun-mailer ###

###> symfony/mercure-bundle ###
See https://symfony.com/doc/current/mercure.html#configuration
The URL of the Mercure hub, used by the app to publish updates (can be a local URL)
MERCURE_URL=https://example.com/.well-known/mercure
The public URL of the Mercure hub, used by the browser to connect
MERCURE_PUBLIC_URL=https://example.com/.well-known/mercure
The secret used to sign the JWTs
MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!"
###< symfony/mercure-bundle ###

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

Ctrl + X を押してファイルを保存し、促されたらYと入力します。

ステップ12 - Kbinをインストールする

Composerを使用してKbinに必要なパッケージをインストールしてください。

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

キャッシュをクリアしてください。

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

メディアフォルダーに適切な権限を与えてください。

sudo chown kbin:nginx public/media

適切なファイルとディレクトリのパーミッションを setfacl コマンドを使用して設定します。次のコマンドは、現在使用中のWebサーバー(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! You are about to execute a migration in database "kbin" that could result in schema changes and data loss. Are you sure you wish to continue? (yes/no) [yes]:
 > yes

[notice] Migrating up to DoctrineMigrations\Version20230615203020
[notice] finished in 1373.9ms, used 24M memory, 79 migrations executed, 667 sql queries

[OK] Successfully migrated to version : DoctrineMigrations\Version20230615203020

Kbinサイトのパブリックフロントエンドをインストールしてビルドします。

yarn install
yarn build

Kbinの新しい管理者ユーザーを作成します。

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

ユーザーに管理者権限を付与します。

php bin/console kbin:user:admin username

キーを更新してください。

php bin/console kbin:ap:keys:update

ステップ13 - SSLをインストールする

SSL証明書を生成するためにCertbotをインストールする必要があります。Ubuntuのリポジトリを使用してCertbotをインストールするか、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  -d example.com

上記のコマンドは、サーバーの/etc/letsencrypt/live/example.comディレクトリに証明書をダウンロードします。

ディフィー・ヘルマン群証明書を生成します。

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

Certbotの更新スケジューラーサービスを確認してください。

sudo systemctl list-timers

snap.certbot.renew.serviceが実行される予定のサービスの1つとして見つかります。

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;
    # use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure
    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;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_index  index.php;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version
        fastcgi_param SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        include fastcgi_params;
    }

    # deny access to writable files/directories
    location ~* ^/sites/*/(documents|edi|era) {
        deny all;
        return 404;
    }

    # deny access to certain directories
    location ~* ^/(contrib|tests) {
	    deny all;
        return 404;
    }

    # Alternatively all access to these files can be denied
    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;
    }
}

enforce 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: 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

ステップ15 - Supervisorのインストールと設定

スーパーバイザーはプロセスマネージャーであり、Kbinのメッセージワーカー(RabbitMQ)のプロセスモニターとして使用します。最初のステップはスーパーバイザーをインストールすることです。

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

すべてのスーパーバイザーサービスを開始します。

sudo supervisorctl start all

ステップ16 - Kbinにアクセスする

URL https://example.com を開くと、次の Kbin ホームページが表示されます。

画面上部のログインリンクをクリックして、ログインページを表示させてください。

ステップ12で作成した資格情報を入力し、ログインボタンをクリックして続行してください。Kbinのホームページに戻ります。ここからKbinの使用を開始できます。

結論

これでUbuntu 22.04サーバーにRedditのようなコンテンツ集約ツールKbinをインストールするためのチュートリアルを締めくくります。質問がある場合は、下のコメント欄に投稿してください。

関連記事: