openSUSE TumbleweedでNextcloud
CentOS8で立てたらハシゴ外されてて移民したCentOS Stream8ももうEoLまで2ヶ月切ってたのでなんとかするかのノリで何故かTumbleweed入れてたのでメモ。リバプロ前提の環境ですがリバプロ自体には触れないので各自でよしなにしてください。動くよぐらいのメモ書きで。直叩きしててなんだけどYaSTべったりが正しい気がする
TumbleweedをVMにねじ込む
Hyper-Vで適当に立てます。第2世代でSecurebootのテンプレはMicrosoft UEFI 証明機関にとりあえずセットしてましたがコレで’openSUSE-Tumbleweed-NET-x86_64-Snapshot20240321-Media.iso’は起動してきてました。
サーバーモードで適当にガチャガチャしてインストールすると良いです。このときはデータvhdxは繋いでないです。
まずはSSH
confは/usr/etc/sshにあるらしい。なんで?
使ってる証明書からauthorized keysで使う公開鍵を引っぺがす
今回は適当にアレしたYubikeyの証明書を使ってます
openssl x509 -in y.crt -inform pem -pubkey -noout > y.pub.pem
ssh-keygen -i -m pkcs8 -f y.pub.pem
パスワード認証がきれないと思ったらPasswordAuthenticationだけではなくUsePAMも切らんとダメでした。ハイ
Firewallの設定変えて任意のPortのアクセスを許可する
勿論勝手にやってくれるわけではないので適当に変更
firewall-cmd --permanent --zone=public --add-port=1222/tcp
https://firewalld.org/documentation/howto/open-a-port-or-service.html
この後nginxを立てるときにも使う。
https://inaba.hatenablog.com/entry/2017/02/26/040218
がわかりやすかった
うっかり日本語でセットアップしちゃってttyが化けた
export LANG="C"`
NetworkManager
でネットワーク設定出来るので
/etc/NetworkManager/system-connectionsにある該当するconfigを適当に書き換えてnmcliのrestartなりreload鳴り唱える(https://zenn.dev/technicarium/articles/9d3ee150a3cf04#%E8%A8%AD%E5%AE%9A%E3%82%92%E5%8F%8D%E6%98%A0)
移行準備
移行元の環境を思い出す
nginx version: nginx/1.14.1
PHP 8.1.27 (cli) (built: Dec 19 2023 20:35:55) (NTS gcc x86_64)
mariadb Ver 15.1 Distrib 10.5.9-MariaDB, for Linux (x86_64) using EditLine wrapper
Linux version 4.18.0-540.el8.x86_64 (mockbuild@x86-05.stream.rdu2.redhat.com) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-21) (GCC)) #1 SMP Fri Feb 9 14:58:00 UTC 2024
mariadbは10.5から11.2とかにいきなり変えてコケても切り分けが面倒なのでdockerで10.6を、他は割と最新で大丈夫なのでそのまま動かすことにします。
横着するため既存のVMからデータぶち抜き
- nginx
confと/var/www/html以下を
- php
remiを使ってたのでconfをぶち抜き(今となってはremiじゃなくてもよかったんだなあ)
- mariadb
conf弄った覚えがなかったのでmysql_dumpする
とほほさんちをみました
mysqldumpでバックアップ・リストアする – とほほのWWW入門
ここまで出来たら、旧VMで使ってたデータ用VHDを新VMに繋ぎ直し(勿論バックアップは取る)
nginxは適当にcpしてきてconf差し替えればOK
CentOS Stream8からだと/var/wwwが/srv/wwwになるぐらい。
phpは入れ直したのでまずはsockを設定し直す
なんかコケたけど進研ゼミで見たっていおうとしてそもそもphp-fpmが上がらない状態だったのでそれ以前だった
どうやらAppArmorであれこれ制御掛かってるぽくて適当なファイル名だとコケます。
現状のconfig見た限りでは、/var/run/php-fpm/php-fpm.sockみたいにすればOKっぽい。(うっかりwww.sockとかやるとしにます。)
これ最後まで付き合うことになるので、良く考えましょう(切ろうとは言わない人)
以下でmatchするpathにするか
@{run}/php{,-fpm}/php*-fpm.sock rwlk,
適当に追記するか。結局追記することにはなるので適当にやれば良いと思います。
何度やってもうまく行かないと思ったらdbに接続出来ないのはphp8-mysqlがなかっただけでした……(このへんの抜けが無いかは確認しましょう……
phpのmoduleは警告出てから入れ直そうより、先に入れた方がいいです。最終的に入れてあったモジュールはおまけにおいておくので適当に見たり見なかったりしてください(ここを見る前に公式見た方がいいです)
特にdatabase関係でコケた場合はoccでこんな普通にコケるだけで直接モジュールがないよとは言ってくれないので。
https://docs.nextcloud.com/server/latest/admin_manual/installation/php_configuration.html
yuzuki-geeko:/srv/www/nextcloud # php8 occ
An unhandled exception has been thrown:
Doctrine\DBAL\Exception: Failed to connect to the database: An exception occurred in the driver: could not find driver in /srv/www/nextcloud/lib/private/DB/Connection.php:140
Stack trace:
#0 /srv/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1531): OC\DB\Connection->connect()
#1 /srv/www/nextcloud/3rdparty/doctrine/dbal/src/Connection.php(1029): Doctrine\DBAL\Connection->getWrappedConnection()
#2 /srv/www/nextcloud/lib/private/DB/Connection.php(262): Doctrine\DBAL\Connection->executeQuery()
#3 /srv/www/nextcloud/3rdparty/doctrine/dbal/src/Query/QueryBuilder.php(345): OC\DB\Connection->executeQuery()
#4 /srv/www/nextcloud/lib/private/DB/QueryBuilder/QueryBuilder.php(280): Doctrine\DBAL\Query\QueryBuilder->execute()
#5 /srv/www/nextcloud/lib/private/AppConfig.php(421): OC\DB\QueryBuilder\QueryBuilder->execute()
#6 /srv/www/nextcloud/lib/private/AppConfig.php(187): OC\AppConfig->loadConfigValues()
#7 /srv/www/nextcloud/lib/private/AppConfig.php(377): OC\AppConfig->getApps()
#8 /srv/www/nextcloud/lib/private/legacy/OC_App.php(803): OC\AppConfig->getValues()
#9 /srv/www/nextcloud/lib/private/Server.php(737): OC_App::getAppVersions()
#10 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\Server->OC\{closure}()
#11 /srv/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#12 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet()
#13 /srv/www/nextcloud/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query()
#14 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query()
#15 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(193): OC\AppFramework\Utility\SimpleContainer->get()
#16 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#17 /srv/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(118): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#18 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet()
#19 /srv/www/nextcloud/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query()
#20 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query()
#21 /srv/www/nextcloud/lib/private/Server.php(1131): OC\AppFramework\Utility\SimpleContainer->get()
#22 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\Server->OC\{closure}()
#23 /srv/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#24 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet()
#25 /srv/www/nextcloud/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query()
#26 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query()
#27 /srv/www/nextcloud/lib/private/Server.php(2090): OC\AppFramework\Utility\SimpleContainer->get()
#28 /srv/www/nextcloud/lib/private/Files/View.php(107): OC\Server->getLockingProvider()
#29 /srv/www/nextcloud/lib/private/Server.php(471): OC\Files\View->__construct()
#30 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(171): OC\Server->OC\{closure}()
#31 /srv/www/nextcloud/3rdparty/pimple/pimple/src/Pimple/Container.php(122): OC\AppFramework\Utility\SimpleContainer->OC\AppFramework\Utility\{closure}()
#32 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(138): Pimple\Container->offsetGet()
#33 /srv/www/nextcloud/lib/private/ServerContainer.php(171): OC\AppFramework\Utility\SimpleContainer->query()
#34 /srv/www/nextcloud/lib/private/AppFramework/Utility/SimpleContainer.php(65): OC\ServerContainer->query()
#35 /srv/www/nextcloud/lib/private/Server.php(1492): OC\AppFramework\Utility\SimpleContainer->get()
#36 /srv/www/nextcloud/lib/base.php(635): OC\Server->boot()
#37 /srv/www/nextcloud/lib/base.php(1196): OC::init()
#38 /srv/www/nextcloud/console.php(48): require_once('...')
#39 /srv/www/nextcloud/occ(11): require_once('...')
#40 {main}
ログインで無限ループはsessionsが原因なのでアクセス権を持つユーザーに合わせてあげて直しましょう
https://diary.tana3n.net/2020/03/16/nextcloud-memo/ の最後のと一緒
今回は移行なのもあってpermissionでハマりがちな気がした。
Mariadb
services:
mariadb:
image: mariadb:10.6.17
ports:
- target: 3306
published: 33306
host_ip: 127.0.0.2
protocol: tcp
mode: ingress
restart: unless-stopped
volumes:
- type: bind
source: database
target: /opt/database
- type: bind
source: ./db_data
target: /var/lib/mysql
environment:
MARIADB_ROOT_PASSWORD: example
portsをよく忘れるのでメモ
Services top-level elements | Docker Docs
調べるのが面倒で、dumpを転がしてるフォルダをマウントして手動で叩き込んでしまったんですが、よくよくみたらinitdb.dがちゃんとあるぽいのでそっち使った方が良さそうな気がします。(前はなかったっぽいけど5.5系ぽいので仕方ない気もする)
https://github.com/MariaDB/mariadb-docker/blob/master/10.6/docker-entrypoint.sh
動いたら適当にdumpしたsqlを食わせてユーザー作り直してあげればOKです。Nextcloudのdocumentにあった感じでOK(https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/linux_database_configuration.html)ですが、hogehoge@localhostで作るとホストからdocker内のdbに繋いでも入れないので要注意。これsockでなんとかできねえかなぁ
更新自体は
https://mariadb.com/kb/en/upgrading/
の通りで、このぐらいやってあれば動いた気がします。10.5→10.6→10.11は特に問題なさそうでした。
動いたら
envはこの通りです./etc/php8/fpm/php-fpm.d/www.confを適当に直してあげてください
新規でちゃんとdocument読んで立てるとphp-fpmのconfigは出来上がるんですが、こうやって移設で横着すると大体忘れられられるので気をつけましょう(1敗)
アップロードが出来ない!
> Nextcloudクライアントからの想定ファイルサイズは、280059 bytes ですが、Nextcloudストレージへの書き込みファイルサイズは 8192 bytes でした。送信側のネットワークの問題またはサーバー側のストレージへの書き込みに問題がある可能性があります。
これはtmp内でのmknodがAppArmorで蹴っ飛ばされるからなので書けば直ります。
設定画面のシステム欄が全然出ない
これもAppArmorで蹴っ飛ばされてます.適当にacceptになる条件を書くか忘れましょう
shell_exec()を使いたくない云々のissueがあってやっぱそうか……に
shell_exec · Issue #169 · nextcloud/serverinfo
cronが動いてないよ!
適当に直しちゃったんですがこれはsystemd-timerに移行しちゃってもいい気がします。のでしました。
Background jobs — Nextcloud latest Administration Manual latest documentation
redis
systemctl enable redis –nowが出来ないと思ったらconf選んどけって事らしいです(以下を見て理解した)
systemctl enable redis@default --now
https://gist.github.com/5470×3/c7b5833a2a91c0bfde0c88c79f46653c
それでもcache周りを使おうとすると502画面を拝むことになってしまうのでなんでだろうなぁって思ったらphp8-memcacheがありませんでした。入れたら直った。
sockでやりたいなって思ったので/etc/redis/default.confにある
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
みたいな行を見つけて↑みたいな感じにする。要らないならTCPのListenは閉じる。
yuzuki-geeko:~ # usermod -aG redis nginx
yuzuki-geeko:~ # groups nginx
nginx : nginx redis
yuzuki-geeko:~ # systemctl restart redis@default.service
yuzuki-geeko:~ # ls /var/run/redis/redis.sock -al
srwxrwx--- 1 redis redis 0 Mar 24 21:06 /var/run/redis/redis.sock
なんでか一旦だめだったのでnginxとphp-fpmを再起動して完
sockファイルのパーミッションを770にしてredisなグループにphp-fpmあたりが動いてるユーザーを追加してあげればOK
2024/03にこれをやったときに出来上がった環境は大体こんな感じ
nginx version: nginx/1.25.4
PHP 8.2.17 (cli) (built: Mar 19 2024 06:04:43) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.17, Copyright (c) Zend Technologies
with Zend OPcache v8.2.17, Copyright (c), by Zend Technologies
mysql Ver 15.1 Distrib 10.11.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Linux version 6.8.1-1-default (geeko@buildhost) (gcc (SUSE Linux) 13.2.1 20240206 [revision 67ac78caf31f7cb3202177e6428a46d829b70f23], GNU ld (GNU Binutils; openSUSE Tumbleweed) 2.42.0.20240130-2) #1 SMP PREEMPT_DYNAMIC Tue Mar 19 07:32:20 UTC 2024 (d922afa)
壮大にぶっ壊すのが先か、飽きるのが先か……
追記:Nextcloud27のまま運用してたらphp8.3の更新で無事爆死したのでphpをDocker化しました
(TBD)
おまけ
php8-*なパッケージ一覧
yuzuki-geeko:~ # zypper pa --installed-only | grep php
i | メインリポジトリ (オープンソース) | php8 | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8 | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-APCu | 5.1.23-1.2 | x86_64
i+ | openSUSE-20240321-0 | php8-APCu | 5.1.23-1.2 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-bcmath | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-bcmath | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-cli | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-cli | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-ctype | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-ctype | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-curl | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-curl | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-dom | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-dom | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-exif | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-exif | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-fileinfo | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-fileinfo | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-fpm | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-fpm | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-gd | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-gd | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-gmp | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-gmp | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-iconv | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-iconv | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-imagick | 3.7.0-3.1 | x86_64
i+ | openSUSE-20240321-0 | php8-imagick | 3.7.0-3.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-intl | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-intl | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-mbstring | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-mbstring | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-memcache | 8.2-1.5 | x86_64
i+ | openSUSE-20240321-0 | php8-memcache | 8.2-1.5 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-memcached | 3.2.0-4.6 | x86_64
i+ | openSUSE-20240321-0 | php8-memcached | 3.2.0-4.6 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-mysql | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-mysql | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-opcache | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-opcache | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-openssl | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-openssl | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-pcntl | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-pcntl | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-pdo | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-pdo | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-posix | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-posix | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-redis | 6.0.2-1.2 | x86_64
i+ | openSUSE-20240321-0 | php8-redis | 6.0.2-1.2 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-smbclient | 1.1.1-1.5 | x86_64
i+ | openSUSE-20240321-0 | php8-smbclient | 1.1.1-1.5 | x86_64
i | メインリポジトリ (オープンソース) | php8-sqlite | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-sqlite | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-sysvsem | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-sysvsem | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-tokenizer | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-tokenizer | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-xmlreader | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-xmlreader | 8.2.17-1.1 | x86_64
i | メインリポジトリ (オープンソース) | php8-xmlwriter | 8.2.17-1.1 | x86_64
i | openSUSE-20240321-0 | php8-xmlwriter | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-zip | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-zip | 8.2.17-1.1 | x86_64
i+ | メインリポジトリ (オープンソース) | php8-zlib | 8.2.17-1.1 | x86_64
i+ | openSUSE-20240321-0 | php8-zlib | 8.2.17-1.1 | x86_64
php-fpmのwww.confとか
yuzuki-geeko:/etc/php8/fpm/php-fpm.d # diff www.conf www.conf.bak
28,29c28,29
< user = nginx
< group = nginx
---
> user = wwwrun
> group = www
43c43
< listen = /var/run/php-fpm/php-fpm.sock
---
> listen = 127.0.0.1:9000
62c62
< listen.acl_users = nginx
---
> ;listen.acl_users =
129c129
< pm.max_children = 8
---
> pm.max_children = 5
134c134
< pm.start_servers = 4
---
> pm.start_servers = 2
139c139
< pm.min_spare_servers = 4
---
> pm.min_spare_servers = 1
144c144
< pm.max_spare_servers = 8
---
> pm.max_spare_servers = 3
148c148
< ; Note: Mandatory when p:m is set to 'dynamic'
---
> ; Note: Mandatory when pm is set to 'dynamic'
161c161
< pm.max_requests = 2000
---
> ;pm.max_requests = 500
463,467c463,467
< env[HOSTNAME] = $HOSTNAME
< env[PATH] = /usr/local/bin:/usr/bin:/bin
< env[TMP] = /tmp
< env[TMPDIR] = /tmp
< env[TEMP] = /tmp
---
> ;env[HOSTNAME] = $HOSTNAME
> ;env[PATH] = /usr/local/bin:/usr/bin:/bin
> ;env[TMP] = /tmp
> ;env[TMPDIR] = /tmp
> ;env[TEMP] = /tmp
php.iniとか
適当なので参考にしないように
yuzuki-geeko:~ # diff /etc/php8/fpm/php.ini /etc/php8/fpm/php.ini.bak
409c409
< max_execution_time = 3600
---
> max_execution_time = 30
419c419
< max_input_time = 600
---
> max_input_time = 60
435c435
< memory_limit = 2G
---
> memory_limit = 128M
703c703
< post_max_size = 20G
---
> post_max_size = 8M
855c855
< upload_max_filesize =10G
---
> upload_max_filesize = 2M
858c858
< max_file_uploads = 100
---
> max_file_uploads = 20
979c979
< date.timezone ="Asia/Tokyo"
---
> date.timezone = 'UTC'
1975,1991d1974
< ;
< opcache.enable=1
< opcache.enable_cli=1
< opcache.interned_strings_buffer=64
< opcache.max_accelerated_files=10000000
< opcache.memory_consumption=512
< opcache.save_comments=1
< opcache.revalidate_freq=60
< opcache.jit=on
< opcache.jit_buffer_size=512M
< opcache.jit = 1255
<
< apc.enable_cli=1
< apc.shm_size=32M
< apc.ttl=7200
/etc/apparmor.d/php-fpm
パスは各自差し替えて貰って
cat /var/log/audit/audit.log | grep DENIED | grep php-fpm
vim /etc/apparmor.d/php-fpm
apparmor_parser -r /etc/apparmor.d/php-fpm
↑もうちょっと良いgrepのかき方があるはずなので真似しないように
/srv/www/nextcloud** rwlk,
/mnt/data** rwlk,
/proc/uptime r,
/sys/class/thermal** r,
/usr/sbin/** ix,
/usr/bin/** rix,
/usr/bin/** ix,
/sys/devices/** rix,
/proc/** r,
/dev/tty wr,
/var/lib/php8/sessions/ r,
/tmp/** rwlk,
/usr/libexec/libheif** rm,
/etc/ImageMagick-** r,
/usr/share/ImageMagick-** r,