毎年恒例、この時期の食事会に参加しました。

まず運ばれたのが山菜の天ぷら。
- タラの芽
- しそ
- タケノコ
などの春の味覚。

岩牡蠣のグリル。焼いてなおこの大きさに驚愕でした。

メインの海鮮丼。丼と言うよりは刺身の盛り合わせであり、中トロのキッツケの鋭さも料理人の技量を窺えるものです。
ご飯が足りないという嬉しい悲鳴もあったほど。

吸い物も春の味覚たるタケノコに海老しんじょう入り。
その他デザートもあり、非常に満足いくものでした。
毎年恒例、この時期の食事会に参加しました。

まず運ばれたのが山菜の天ぷら。
などの春の味覚。

岩牡蠣のグリル。焼いてなおこの大きさに驚愕でした。

メインの海鮮丼。丼と言うよりは刺身の盛り合わせであり、中トロのキッツケの鋭さも料理人の技量を窺えるものです。
ご飯が足りないという嬉しい悲鳴もあったほど。

吸い物も春の味覚たるタケノコに海老しんじょう入り。
その他デザートもあり、非常に満足いくものでした。
本手順は、MySQLのrootパスワードを紛失し、通常の方法でログインできなくなった場合に実施する「非常時用」のリカバリ手順です。
この作業は本来ならばあってはならない作業です。パスワード失念はセキュリティ事故の筆頭。ましてやWebシステムの神に等しいDBを司る通行証が消えた。なので、
は必須ですが
往々にしてこの事故は起きます。なので、「マジで起きてしまった。取り敢えずの迅速な復旧」を望んでいる(つまり今回の私のような)方へのメモとなります。
のいずれかのみ。本番稼働中だったらまず笑えませんし、許可を得るための政治力・交渉力は甚大なものになります。筆者は「構築中」のパターンです。
mysqld_safe コマンドは廃止されているため、systemctl set-environment を使用して起動オプションを制御します。skip-grant-tables モード中でも FLUSH PRIVILEGES を実行しない限り ALTER USER コマンドが受け付けられない仕様となっています。これに尽きますが、「起きてしまったことは仕方ない。潔くサパッと止めてサクッと終わらせる」を心がけます。
sudo systemctl stop mysqld
systemctl status mysld
inactive(dead)を確認します。
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
(--skip-networkingを付けることで、作業中の外部接続を遮断し安全を確保します。)
sudo systemctl start mysqld
systemctl status mysld
active(running)を確認します。
認証がスキップされている状態でログインし、権限テーブルを強制ロードしてからパスワードを書き換えます。
mysql -u root
これでログインできたらひとまず成功です。ここからはSQL捜査を行います。
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_strong_password';
FLUSH PRIVILEGES;
exit
一時的な環境変数を削除し、通常の認証が有効な状態で再起動します。
systemctl stop mysqld
systemctl status mysld
inactive(dead)を確認します。
systemctl unset-environment MYSQLD_OPTS
sudo systemctl start mysqld
systemctl status mysld
mysql -u root -p
新しいパスワードでログインできたことを確認します。
「起きないことが第一」とは言いますが、本当にくだらない理由でこういう事象は発生します。なので
の三段活用。“全裸大佐”が言う
過ちを気に病むことはない。ただ認めて、次の糧にすればいい
という「大人の特権」をフル活用しましょう。
RHEL系のサーバ設定で結構重要になってくる「サーバがどのレポジトリを使っているか?
これを簡単に調べるワンライナーです。
Rocky Linux 9.10
echo -e "|Repo-id|Repo-name|\n|---|---|" && dnf repolist -q | awk '$1 != "repo" && NF > 1 {id=$1; $1=""; sub(/^[ \t]+/, ""); print "|" id "|" $0 "|"}'
出力結果
| Repo-id | Repo-name |
|---|---|
| appstream | Rocky Linux 9 - AppStream |
| baseos | Rocky Linux 9 - BaseOS |
| epel | Extra Packages for Enterprise Linux 9 - x86_64 |
| epel-cisco-openh264 | Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64 |
| extras | Rocky Linux 9 - Extras |
| remi-modular | Remi's Modular repository for Enterprise Linux 9 - x86_64 |
| remi-safe | Safe Remi's RPM repository for Enterprise Linux 9 - x86_64 |
| zabbix | Zabbix Official Repository - x86_64 |
| zabbix-non-supported | Zabbix Official Repository (non-supported) - x86_64 |
| zabbix-tools | Zabbix Official Repository (tools) - x86_64 |
と、このままマークダウン記事として貼り付けられるようになっています。
echo -e "|Repo-id|Repo-name|\n|---|---|"Markdown形式の表の「見出し」を無理やり作っている部分です。
echo -e: 「バックスラッシュ記法」を有効にするオプションです。\n: これがあることで、1行目の見出しと2行目の区切り線(|---|---|)の間で改行されます。dnf repolist -qシステムのレポジトリ一覧を取得するコマンドです。
repolist: 有効なレポジトリの ID と名前を表示します。-q (quiet): 「メタデータの期限切れ確認」などの余計なメッセージを非表示にし、純粋なリストの結果だけを出力します。awk '$1 != "repo" && NF > 1 { ... }'受け取ったテキストを1行ずつ加工しています。
| 要素 | 意味 |
|---|---|
$1 != "repo" | 1番目の項目(Repo-id)が "repo" という文字列ではない行だけを処理する(見出し除外)。 |
NF > 1 | 項目の数(Number of Fields)が1つより多い行=空行などを除外。 |
id=$1 | 1番目の項目(Repo-id)を変数 id にキープ。 |
$1="" | 1番目の項目をデータから消去。これで残りの $0(行全体)が Repo-name だけになります。 |
sub(/^[ \t]+/, "") | 1列目を消した後に残ってしまう「先頭の空白」を削除して綺麗にします。 |
print "|"... | 最後に、Markdownの枠組み | で囲って出力します。 |
| で挟み直す。という流れになっています。
スコットランドの氏族として経済的安定を築いていくクランズ・オブ・カレドニア。のソロプレイを行いました。
選んだ氏族はファガーソン。
という辺境の機動力を重視した氏族。
最初にワーカーが得られることと1ゲーム中1回使える港アクションが性質上近いという、ソロでも屈指の強氏族。
が功を奏しました。

最終的な結果は
| 項目 | 計算式 | 数量 | 合計得点 | 備考 |
|---|---|---|---|---|
| 基礎生産品 | 1つ1点 | 4 | 4 | 羊毛のみ |
| 加工生産品 | 1つ2点 | 4 | 8 | チーズ生産特化 |
| ゲーム終了時持ち金 | 10につき1 | 72 | 7 | |
| 栄光点 | 1つ1点 | 39 | 39 | 特に高い土地(£5~£6)の配点が大きい |
| ホップ | 1つ1点 | 14 | 14 | 輸出契約の見返り |
| サトウキビ | 1つ5点 | 3 | 15 | 最も輸入数が少ない品 |
| 綿花 | 1つ4点 | 6 | 24 | 二番目に輸入数が少ない品(同数タイ) |
| タバコ | 1つ3点 | 6 | 18 | 三番目に輸入数が少ない品(同数タイ) |
| 契約履行数 | 4つ以下は0 | 5 | 4 | 5:4点 6:8点 7以上:12点 |
| 入植数 | 1繋がりにつき可変 | 14以上 | 18 | 8~10:5点 11~13:12点 14以上:18点 |
| 総合計 | - | - | 151 | 評価:熟練者 |
なお、ランク付けがされており
このランクに基づき、「熟練者」のスコアが取れました。本作、足切りがないことや黙々と氏族の発展に集中できるのが癖になります。
連休で家にいる中でないとできない作業でした。
2,019年からのiPhoneデータ。相当に苦労しました。
Nextcloudアプリの自動アップロード機能を有効化するしていきます。
Nextcloudアプリ右下「その他(…)」 → 「設定」 → 「自動アップロード」
の画面を開きます。
iPhoneの写真アプリ内の画像・動画をNextcloudへ自動送信するため「カメラロールをアップロード」をオンにします。
必要に応じて「新しい写真のみ」「すべての写真」などの範囲を選択します。(筆者は全ての写真を選択)
誤ったフォルダを選ぶと整理が崩れるため、最も重要なステップです。
必要に応じて「カメラロール」専用フォルダをNextcloud側で作っておきましょう。
筆者は「Wi-Fi使用時のみ」をオンにしました。というのも、このNextcloudは完全に宅内で運用するからです。
これがハマりポイントでした。
iPhoneの
設定 > 画面表示と明るさ > 自動ロック
に選び「なし」に変更。その上で先のiPhoneのNextcloudアプリを開きっぱなしにしておきます。
可能であればワイヤレス充電でつけっぱなしにしておくと良いでしょう。
参考までに、宅内無線LAN環境、45,000枚ほどの画像の転送に10時間ほどかかりました。
※この作業が終わったら自動ロックの設定を元に戻すのを忘れないようにしましょう。
をインストールした状況で、「PHP-FPM」を稼働させた上でNextcloudをインストールしていくためのメモです。
Ubuntu24.04のインストール時にも言いましたが、この理論は未だに私の中では真理です。
巷では「○○の資格があればこの運用は」的な話があるようですが:そもそも運用の方針を取り違えていると思います。
「救急戦隊ゴーゴーファイブ」に曰く
「資格? 馬鹿野郎、誰もそんなもの持ってねぇんだ! いいか、あるのは責任だけだ。戦う責任! あの子を傷つけちまった責任! そいつを果たすには、この地球を守るしかねぇんだ!」
私が言いたいことはこれに尽きます。
パフォーマンスとリソース効率を向上させるためです。
従来のmod_phpでは、PHPがApacheの全プロセスに組み込まれるため、画像ファイルのリクエストのようなPHPが不要な処理でもメモリを消費し、無駄が多くなりがちでした。
一方、PHP-FPMはPHPの処理をApacheから完全に独立させた専門のプロセスとして管理します。ApacheはPHPが必要なリクエストだけをPHP-FPMに中継するため、サーバー全体の動作が軽量かつ高速になります。
www-data/home/www-dataにしています。自分の環境に合わせてください。筆者の好みでaptitudeを用いています。必要に応じてaptをご利用ください。
PHP本体、PHP-FPM、Nextcloudが必要とする各種PHPモジュールをインストールします。
sudo aptitude install php php-fpm php-opcache php-pdo php-bcmath php-calendar php-ctype php-fileinfo php-ftp php-gd php-intl php-json php-mbstring php-mysql php-posix php-readline php-sockets php-bz2 php-tokenizer php-zip php-curl php-iconv php-xml php-imagick php-gmp php-apcu memcached
バージョンを確認します。
php -v
表示例
PHP 8.5.4 (cli) (built: Apr 1 2026 09:36:11) (NTS)
Copyright (c) The PHP Group
Built by Ubuntu
Zend Engine v4.5.4, Copyright (c) Zend Technologies
with Zend OPcache v8.5.4, Copyright (c), by Zend Technologies
※Ubuntu 26.04はリポジトリを追加するまでもなくPHP8.5がインストールされます。※
従来の mod_php を無効化し、PHP-FPMとの通信に必要な proxy_fcgi モジュールなどを有効化します。
sudo a2dismod php
sudo a2enmod proxy_fcgi setenvif header rewrite
Nextcloudのパフォーマンス向上のため、PHPのメモリ制限、OPcache、APCuを設定します。
sudo sed -i 's/memory_limit = .*/memory_limit = 512M/g' /etc/php//fpm/php.ini
Nextcloud推奨の設定値を /etc/php//mods-available/ に作成・適用します。
cat <<- __EOF__ | sudo tee /etc/php//mods-available/opcache.ini
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
cat <<- __EOF__ | sudo tee /etc/php//mods-available/apcu.ini
[apcu]
apc.enabled=1 apc.shm_size=32M apc.ttl=7200 apc.enable_cli=1 apc.serializer=php __EOF__
sudo phpenmod opcache apcu
このphpenmodがハマりポイントでした。従来の ln -sではなく、専用コマンドを用いることでfpm / cli / apache-mod でも安定した運用が可能になります。
Nextcloudが使用するMySQLデータベースと専用ユーザーを作成します。
mysql -u root -p
以下のSQLコマンドを実行します。YOUR_STRONG_PASSWORD は必ず強固なパスワードに変更してください。
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Nextcloud本体をダウンロードし、Webサーバーからアクセスできる場所に配置します。
cd /tmp && pwd
任意のディレクトリを指定します。
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip
sudo mv nextcloud /home/www-data/
sudo chown -R www-data:www-data /home/www-data/nextcloud
Nextcloud用のApache設定ファイルを作成します。ここでPHP-FPMとの連携設定を組み込みます。
sudo mkdir /var/log/nextcloud
www-dataに修正。これは、後のメンテナンス性を高めるためです。
sudo chown www-data:www-data /var/log/nextcloud
/etc/apache2/sites-available/nextcloud.conf
を、teeで一気通貫で作ります。
# 【】内はご自身の環境に合わせてください
cat <<- __EOF__ | sudo tee /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
ServerName 【hoge.example.com】
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName 【hoge.example.com】
DocumentRoot 【/home/www-data/nextcloud】
CustomLog /var/log/nextcloud/nextcloud_access.log combined
ErrorLog /var/log/nextcloud/nextcloud_error.log
<Directory 【/home/www-data/nextcloud】>
Options -MultiViews
AllowOverride All
Require all granted
</Directory>
# PHP-FPM連携設定
<FilesMatch \.php$>
# SetHandlerで、phpファイルのリクエストをPHP-FPMのソケットに渡す
SetHandler "proxy:unix:/var/run/php/php8.5-fpm.sock|fcgi://localhost/"
</FilesMatch>
# --- SSL設定 ---
SSLEngine on
Protocols h2 http/1.1
SSLCertificateFile 【/etc/certs/hoge.example.com.crt】
SSLCertificateKeyFile 【/etc/private/hoge.example.com.key】
# 中間証明書が別に提供されている場合はこちらを有効化
# SSLCACertificateFile 【/etc/certs/hoge.example.com.CA.crt】
# --- 推奨SSL/TLS設定 ---
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite 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
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
# --- セキュリティヘッダー ---
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Header always set Referrer-Policy "no-referrer"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Permitted-Cross-Domain-Policies "none"
</VirtualHost>
__EOF__
※ こちらもMod_Securityによる連携は可能です。
sudo a2ensite nextcloud.conf
sudo apache2ctl configtest
Syntax OK と表示されることを確認
sudo systemctl restart php8.5-fpm.service
sudo systemctl restart apache2.service
systemctl status php8.5-fpm.service
systemctl status apache2.service
active (running)と表示されていれば正常です。
最後に、Webブラウザで https://【設定したドメイン】 にアクセスし、画面の指示に従ってNextcloudの初期設定を完了させます。
nextcloudnextcloudlocalhost (または localhost:3306)これで、PHP-FPM上で動作するNextcloud環境の構築が完了します。
以下の環境でインストールを確認しています。
sudo aptitude update
sudo aptitude install build-essential zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev mysql-server mysql-client apache2 apache2-dev libapr1-dev libaprutil1-dev imagemagick libmagick++-dev fonts-takao-pgothic subversion git ruby libruby ruby-dev libmysqlclient-dev
sudo aptitude install libapache2-mod-passenger
sudo gem install bundler racc mysql2
「3 gems installed」が表示されればインストール成功です。
mysql_secure_installationによる初期設定を行います。
うまくいかない場合は以下を参照してください。
https://barrel.reisalin.com/books/bbf94/page/mysql-secure-installation
sudo mysql -u root -p
上記で設定した「mysqlのrootパスワード」を入力し、mysqlにログインします
CREATE DATABASE redmine character set utf8mb4;
DB "redmine" を作成します
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password';
ユーザ "redmine"を作成し、パスワードを設定します。
この'password'は任意のパスワードに変更してください
GRANT ALL ON redmine.* TO 'redmine'@'localhost';
flush privileges;
exit
mysql -u redmine -p
SHOW DATABASES;
exit
sudo mkdir -p /home/www-data/redmine
自分の環境に合わせます。
sudo chown -R www-data:www-data /home/www-data
sudo -u www-data svn co https://svn.redmine.org/redmine/branches/6.1-stable /home/www-data/redmine
sudo -u www-data cp -pi /home/www-data/redmine/config/database.yml.example /home/www-data/redmine/config/database.yml
/home/www-data/redmine/config/database.yml
このファイルを教義・信仰に従ったエディタで編集してください。
production:
adapter: mysql2
database: redmine
host: localhost
username: redmine
# rootからredmineに変更します
password: "redmine用のパスワード"
encoding: utf8mb4
# 本番環境(production)のみ設定を行います
cd /home/www-data/redmine/ && pwd
/home/www-data/redmine/ (Redmineを配置したディレクトリ)であることを確認します
※26.04でハマったところです。Bundlerの設定を行う必要がありました。
sudo -u www-data bundle config set --local path 'vendor/bundle' && sudo -u www-data bundle config set --local without 'development test'
※これが一番ハマった部分です。Redmineが必要とするライブラリとUbuntu26.04のRubyのgemに齟齬があったため、これに気づかずエラーを繰り返しました。
sudo -u www-data bundle update stringio
sudo -u www-data bundle install
sudo -u www-data bundle exec rake generate_secret_token RAILS_ENV=production
sudo -u www-data bundle exec rake redmine:load_default_data RAILS_ENV=production
sudo -u www-data RAILS_ENV=production REDMINE_LANG=ja bundle exec rake redmine:load_default_data
※これもハマりました。表示エラーが出てきました。
sudo -u www-data bundle exec rake assets:precompile RAILS_ENV=production
【】を自分の作成したRedmineのサーバ名/ドメイン名に変更します。
cat <<- __EOF__ | sudo tee -a /etc/apache2/sites-available/redmine.conf
<VirtualHost *:80>
ServerName 【hoge.example.com】
# ServerNameは自身が設定したredmineに読み替えてください。
DocumentRoot /home/www-data/redmine/public
<Directory /home/www-data/redmine/public>
Options -MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
__EOF__
ls -l /etc/apache2/sites-available/redmine.conf
sudo a2ensite redmine.conf
sudo a2dissite 000-default.conf
sudo a2dissite default-ssl.conf
sudo apache2ctl configtest
Syntax OK を確認します
systemctl status apache2.service
active(running)を確認します
sudo systemctl restart apache2.service
systemctl status apache2.service
active(running)を確認します
http://設定したRedmineドメイン
でRedmineのトップページが表示されれば成功です。
直ちにadmin/adminでログインし、強固なパスワードを設定し直します。
前々から気になっていたデッキが再販かかっていたので注文しました。

エンチャントに奇跡を持たせるというデッキ。そのため、ライブラリー操作も多め。
悪さができるエンチャントには尽きないので、これは結構いじりがいが理想です。
QNAPの構築も一段落したため、やりたいこと「LinuxサーバとQNAPをつなぎ、冗長化を持たせた大容量ストレージにする」を開始します。
NFSは、主にUNIXやLinuxなどのOS間でファイルを共有するために開発されたプロトコルです。
一番の特徴は、リモート(NASなど)にあるフォルダを、自分のコンピュータのディレクトリツリー(/mnt/qnap など)の一部として組み込めることです。
一度マウントしてしまえば、ユーザーやアプリからはそれがネットワーク経由であるということを意識せず、通常のファイル操作と同じコマンド(ls, cp, mvなど)で扱えるようになります。
よく比較されるものに、Windowsで一般的に使われる SMB (Server Message Block) があります。QNAPはどちらも使えますが、以下のような違いがあります。
| 特徴 | NFS | SMB (Windows共有) |
|---|---|---|
| 主なOS | Linux / UNIX | Windows (Linuxでも可) |
| 設定のしやすさ | 非常にシンプル(IPベース) | ユーザー名/パスワードが基本 |
| パフォーマンス | Linux間なら非常に高速 | 以前は遅かったが今は高速 |
| 権限管理 | LinuxのUID/GIDに依存 | WindowsのACLに依存 |
以下、作業メモです。
NFS)の「アクセス権の編集」を開く。*(またはLinuxのIP)を入力。/NFS)をメモする。sudo apt install nfs-common (Ubuntu/Debian)sudo yum install nfs-utils (RHEL/CentOS)sudo mkdir -p /mnt/qnapsudo mount -t nfs QNAPのIP、ホスト名:/NFS /mnt/qnapdf -h を実行し、ファイルシステム欄に QNAP のパスと容量が表示されれば成功。サーバー再起動後も自動で接続されるよう設定します。
※/etc/fstabは正直編集したくないファイル筆頭です。可能な限り先にやっておくことを強く勧めます。
/etc/fstabバックアップ※バックアップと言ったところで、失敗した瞬間にサーバが立ち亜が楽なるは普通に発生します。慎重を期してください。
sudo cp -pi /etc/fstab /path/to/backup/fstab.$(date +%Y%m%d)
diff -u /path/to/backup/fstab.$(date +%Y%m%d) /etc/fstab
差分がないことを確認します。
/etc/fstab追記:QNAPのIP、ホスト名:/NFS /mnt/qnap nfs defaults,_netdev 0 0
※自分の環境に合わせます。
/etc/fstab追記確認:diff -u /path/to/backup/fstab.$(date +%Y%m%d) /etc/fstab
以下の差分を確認します。
+ QNAPのIP、ホスト名:/NFS /mnt/qnap nfs defaults,_netdev 0 0
sudo umount /mnt/qnap
sudo mount -a
df -h
は味気ないので
{
echo "| デバイスパス | タイプ | 全サイズ | 使用率 | マウントポイント |"
echo "| --- | --- | --- | --- | --- |"
df -hPT | grep -vE 'tmpfs|shm|devtmpfs' | tail -n +2 | awk '{printf "| %s | %s | %s | %s | %s |\n", $1, $2, $3, $6, $7}'
}
のワンライナーを用います。
| デバイスパス | タイプ | 全サイズ | 使用率 | マウントポイント |
|---|---|---|---|---|
| /dev/sda2 | ext4 | 233G | 6% | / |
| efivarfs | efivarfs | 256K | 12% | /sys/firmware/efi/efivars |
| /dev/sda1 | vfat | 1.1G | 1% | /boot/efi |
| QNAP:/NFS | nfs4 | 4.2T | 30% | /mnt/qnap |
などが表示されればOKです。
この段階で
sudo reboot
をかけておきます。序盤でfstabの不具合に気づかないと、後のサーバ運用そのものが詰みます。
Ubuntu 26.04でWebアプリ(Nextcloudを想定)を動かす際の柱であるPHPのインストールを行います。
2026/04/23にリリースされた26.04。導入されるミドルウェアの最新性がキモでした。
筆者が前項でやったレポジトリ追加は「26.04には対応してない。そもそもミドルウェアが合ってない」など言われましたが、
「リポジトリを追加するまでもなく最新版がインストールされる」ことに気づきませんでした。
まずは標準リポジトリを最新の状態にします。
sudo aptitude update
メタパッケージ(バージョン指定なし)を使用することで、OSが最適な 8.5 系を自動選択します。
sudo aptitude install php php-fpm php-common php-cli php-readline redis-server
当初筆者はPHP8.4を選択していたのですが、そこが盛大なはまりポイントでした。(PHPの動向を追っていなかったという失態もあります)
Nextcloudの動作に不可欠なモジュール群を一括で導入します。
sudo aptitude install php-{bcmath,bz2,curl,gd,gmp,intl,ldap,mbstring,mysql,sockets,xml,zip,imagick,redis,apcu,memcached}
Apacheで PHP 8.5 を FPM 経由で動作させる設定です。
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.5-fpm
sudo systemctl restart apache2
Nextcloudの警告を消し、パフォーマンスを最大化するための設定です。
cat <<- __EOF__ | sudo tee /etc/php/8.5/mods-available/opcache.ini > /dev/null
; configuration for php opcache module
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.memory_consumption=256
opcache.save_comments=1
opcache.revalidate_freq=1
__EOF__
→ 既にあるファイルを上書きます。(切り戻し想定せず)
cat <<- __EOF__ | sudo tee /etc/php/8.5/mods-available/apcu.ini > /dev/null
extension=apcu.so
[apcu]
apc.enabled=1 apc.shm_size=32M apc.ttl=7200 apc.enable_cli=1 apc.serializer=php __EOF__
設定の有効化
sudo phpenmod opcache apcu
このphpenmodもハマりポイントでした。従来の ln -sではなく、専用コマンドを用いることでfpm / cli / apache-mod でも安定した運用が可能になります。
sudo systemctl restart php8.5-fpm
sudo systemctl restart redis-server
sudo systemctl restart apache2
php -v
※ with Zend OPcache v8.5.4 等 と表示されれば正解です。
Apacheの各サイト設定ファイル (/etc/apache2/sites-available/*.conf) 内で、必ず 8.5 のソケットを指定してください。
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php8.5-fpm.sock|fcgi://localhost/"
</FilesMatch>
これを入れないと、
The requested URL was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
の非情なるメッセージが返ってきます。
Powered by WordPress & Theme by Anders Norén