DEV Community

nabbisen
nabbisen

Posted on • Edited on • Originally published at obsd.solutions

1 1 1

Joomla! 4.3 on OpenBSD 7.3: インストール

はじめに

Joomla! は、広く使われている PHP のコンテンツ管理システム (CMS) の一つです。ブログプラットフォームとしてだけでなく、ポータルサイトのような Web サイトにも適しています。最初のバージョンは 2005 年にリリースされました。そこから長い進歩を経て、最新のメジャーバージョンが 2 年前 (2021 年 8 月 17 日) にリリースしました。

Joomla! のインストールの流れを本記事で書きます。堅牢な OS である OpenBSD と PHP/PHP-FPM を使用します。いずれも現時点での最新のものです。

環境

参考記事

以下のいずれかが完了していない場合、お読みください:

  • MariaDB のインストール
  • httpd のセットアップ
  • PHP のインストール

Joomla! システム要件に関わる注意書き

PHP 8.2 の使用は、現在のところ Joomla! から公式に推奨されてはいません。 (参照: 技術要件 (英語)) しかしながら 8.2 は「サポートの強化」を 4.3 リリースで受けました。(参照: 公式 "What’s new in Joomla 4.3.0 Stable?" (英語)) PHP 8.2 を使うことは 8.1 と比べて良い選択肢になったと言えるでしょう。また 8.0 というもう 1 つの選択肢もありますが、こちらは間もなくサポートが終了します。 (参照: PHP の サポートバージョン (英語))

チュートリアル

データベースの準備

クライアントツールでサーバーに接続しましょう (たとえば mysql -u root -p を実行します):

-- データベースの作成
CREATE DATABASE <dbname> \
    CHARACTER SET utf8mb4 \
    COLLATE utf8mb4_unicode_ci;

-- ユーザーの作成
GRANT ALL PRIVILEGES \
    ON <dbname>.* \
    TO <dbuser>@'localhost' \
    IDENTIFIED BY '<dbpass>';

-- 権限をリロード
FLUSH PRIVILEGES;
Enter fullscreen mode Exit fullscreen mode

PHP エクステンションのインストールと有効化

MariaDB 接続のために mysqli を取得しましょう:

$ doas pkg_add php-mysqli
Enter fullscreen mode Exit fullscreen mode

出力内容、私の選択、および実行結果は、以下の通りでした:

quirks-6.122 signed on 2023-09-01T21:25:11Z
Ambiguous: choose package for php-mysqli
a   0: <None>
    1: php-mysqli-7.4.33
    2: php-mysqli-8.0.30
    3: php-mysqli-8.1.22
    4: php-mysqli-8.2.9
Your choice: 4
php-mysqli-8.2.9: ok
Enter fullscreen mode Exit fullscreen mode

有効化しておく必要があります (なお opcache もあわせて有効化します)。こちらを実行します:

$ doas ln -s /etc/php-8.2.sample/* /etc/php-8.2/
Enter fullscreen mode Exit fullscreen mode

これで有効化されました:

$ ls -l /etc/php-8.2
total 0
lrwxr-xr-x  1 root  wheel  30 Sep  2 10:09 mysqli.ini -> /etc/php-8.2.sample/mysqli.ini
lrwxr-xr-x  1 root  wheel  31 Sep  2 10:09 opcache.ini -> /etc/php-8.2.sample/opcache.ini
Enter fullscreen mode Exit fullscreen mode

Joomla! パッケージの取得

前提: /var/www/joomla を作業ディレクトリとします。

GitHub の releases からファイルをダウンロードするために、以下を実行します:

$ curl -LO https://github.com/joomla/joomla-cms/releases/download/4.3.4/Joomla_4.3.4-Stable-Full_Package.tar.gz
Enter fullscreen mode Exit fullscreen mode

解凍と展開と行います:

$ tar xzf Joomla_4.3.4-Stable-Full_Package.tar.gz
Enter fullscreen mode Exit fullscreen mode

パーミッションを Web ユーザー向けにします:

$ doas chown -R www:www ./*
Enter fullscreen mode Exit fullscreen mode

httpd (Web) サーバーの追加

httpd または PHP-FPM 8.2 デーモンが有効化されていない場合、まずそれを行うことが必要です。 (参照: 参考記事)

それらが完了している場合は、続行して Joomla! サーバーの定義を追加します:

$ doas nvim /etc/httpd.conf
Enter fullscreen mode Exit fullscreen mode

以下のように記述します。ここで <fqdn> は、あなた次第です。<chroot-parent-dir> は空文字列のはずです。 (これは作業ディレクトリ次第です。) さらに、TLS を有効にするためには、TLS 構成ファイルが必要です (後述)。

server "<fqdn>" {
        listen on egress tls port https
        tls {    
                certificate     "/etc/ssl/<fqdn>.crt"
                key             "/etc/ssl/private/<fqdn>.key"
        }
        log {
                access  "<fqdn>-access.log"
                error   "<fqdn>-error.log"
        }

        # `/var/www` 以下のどこを作業ディレクトリとしているかと `chroot` の設定次第です:
        root "<chroot-parent-dir>/joomla"
        directory index index.php

        location "/*.php" { 
                fastcgi socket "/run/php-fpm.sock"
        } 
        location "/*.php[/?]*" { 
                fastcgi socket "/run/php-fpm.sock"
        } 
}
Enter fullscreen mode Exit fullscreen mode

デーモンを再起動します:

$ doas rcctl restart httpd
httpd(ok)
httpd(ok)
Enter fullscreen mode Exit fullscreen mode

これで Joomla! の Web インストーラーにブラウザから接続できるようになりました。https://<fqdn>/ にアクセスしましょう !!

TLS 構成ファイル

acme-client を用いて Let's Encrypt にリクエストすることで、ファイルを取得できます。 (参照: OpenBSD acme-client の設定方法).

別の方法もあります。自己署名証明書としてつくる方法です。以下のようなコマンド操作で行えます:

$ cd /etc/ssl

$ # [ 定数 ]
$ # ksh の場合:
$ export MY_DOMAIN="..."
$ export MY_COUNTRY_CODE="XX"
$ export MY_STATE="..."
$ export MY_ORGANIZATION="..."
$ # fish の場合:
$ # set -x MY_DOMAIN "..."; (...)

$ # [ 生成 ]
$ doas openssl req -newkey rsa:2048 -new -nodes -x509 -days 36500 -keyout private/$MY_DOMAIN.key -out $MY_DOMAIN.crt \
    -subj "/C=$MY_COUNTRY_CODE/ST=$MY_STATE/L=/O=$MY_ORGANIZATION/OU=/CN=$MY_DOMAIN"
$ doas chmod 400 private/$MY_DOMAIN.key

$ # 作業ディレクトリに戻る
Enter fullscreen mode Exit fullscreen mode

TLS 接続をサポートしないサーバーの場合 (オプション)

https では無く http を使うサーバーを立てることもできます (安全性は下がります):

# httpd.conf
<         listen on egress tls port https
<         tls {    
<                 certificate     "/etc/ssl/<fqdn>.crt"
<                 key             "/etc/ssl/private/<fqdn>.key"
<         }
>         listen on egress port http
Enter fullscreen mode Exit fullscreen mode

TLS 接続あり無し両方の通信をサポートするサーバーの場合 (オプション)

それから、http リクエストをすべて https にリダイレクトさせることも、必要見合いで可能です:

# httpd.conf
server "<fqdn>" {
        listen on egress http
        # (...)
        block return 301 "https://$SERVER_NAME$REQUEST_URI"
}
server "<fqdn>" {
        listen on egress tls port https
        # (...)
}
Enter fullscreen mode Exit fullscreen mode

Web インストーラーの実行

インストーラーに従って進めれば大丈夫です。なお私の時は、上述の <fqdn>192.168.122.175 でした。

デフォルトの言語を選択して、サイト名を入力します:

joomla-4-install-01

システム管理者を作成します:

joomla-4-install-02

データベース情報を入力します。そしてボタンをクリックすると実際のインストールが始まります:

joomla-4-install-03

成功メッセージが表示されます:

joomla-4-install-04

インストール内容の検証

https://<fqdn>/ へのアクセスで、フロントページを表示できます:

joomla-4-home-01

管理画面の入口は https://<fqdn>/administrator/ です:

joomla-4-admin-01

認証が成功すると管理者パネルが表示されます:

joomla-4-admin-02

おわりに

これで最新の Joomla! を使用して Web サイトを構築する準備が整いました。非常にささいな操作に関する例を示してみます。メディアビューでメディアファイルをアップロードしてみます:

joomla-4-media-01

"Upload" をクリックして、ファイルを選択します。OpenBSD ロゴで試したところ、成功しました :)

joomla-4-media-02

本記事で示したように、httpd と PHP-FPM が構成されている場合、OpenBSD 上で PHP アプリを構築・公開するのは難しいことではありません。OpenBSD プロジェクトとコミュニティが PHP と Web サービス関連のコンポーネントをサポートしてくれているためです。

🕊 Happy serving 💫

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay