Ubuntu 22.04にRedditのようなフェディバースコンテンツ集約ツールKbinをインストールする方法
Ubuntu 22.04にRedditのようなフェディバースコンテンツ集約ツールKbinをインストールする方法
このページで
- 前提条件
- ステップ1 - ファイアウォールを設定する
- ステップ2 - Gitをインストールする
- ステップ3 - Nginxをインストールする
- ステップ4 - PHPをインストールしてPHPを設定する
- ステップ5 - Composerをインストールする
- ステップ6 - PostgreSQLをインストールして構成する
- ステップ7 - NodejsとYarnをインストールする
- ステップ8 - Yarnをインストールする
- ステップ8 - Redisをインストールする
- ステップ9 - RabbitMQをインストールして設定する
- ステップ10 - Kbinをダウンロードする
- ステップ11 - 環境ファイルを設定する
- ステップ12 - Kbinをインストールする
- ステップ13 - SSLをインストールする
- ステップ14 - Nginxを設定する
- ステップ15 - Supervisorのインストールと設定
- ステップ16 - Kbinにアクセスする
- 結論
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をインストールするためのチュートリアルを締めくくります。質問がある場合は、下のコメント欄に投稿してください。

