DEV Community

nabbisen
nabbisen

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

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 💫

Top comments (0)