
저는 클라우드의 Arch에서 LAEMP 역방향 프록시 서버를 실행하고 있습니다.
에 연결된 nextcloud/data
의 연결된 스토리지 드라이브에 내 폴더를 마운트했습니다 ./mnt/hdd/nextcloud/data
/srv/www/nextcloud/data
이 작업을 수행하지 않고 와 nextcloud/data
동일한 디스크에 보관하면 /
이 문제가 전혀 발생하지 않습니다.
에 reboot
시스템이 시작됩니다. PHP 페이지에 오류 가 발생 httpd
하지만 . 오류는 에 있습니다 .nginx
systemctl status
php-fpm
출력 systemctl status php-fpm
:
× php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
Drop-In: /etc/systemd/system/php-fpm.service.d
└─override.conf
Active: failed (Result: exit-code) since Tue 2023-05-30 16:47:30 PDT; 14s ago
Process: 316 ExecStart=/usr/bin/php-fpm --nodaemonize --fpm-config /etc/php/php-fpm.conf (code=exited, status=226/NAMESPACE)
Main PID: 316 (code=exited, status=226/NAMESPACE)
CPU: 8ms
May 30 16:47:29 MY_HOST systemd[1]: Starting The PHP FastCGI Process Manager...
May 30 16:47:29 MY_HOST (php-fpm)[316]: php-fpm.service: Failed to set up mount namespacing: /run/systemd/unit-root/mnt/hdd/nextcloud/data: No such file or directory
May 30 16:47:29 MY_HOST (php-fpm)[316]: php-fpm.service: Failed at step NAMESPACE spawning /usr/bin/php-fpm: No such file or directory
May 30 16:47:30 MY_HOST systemd[1]: php-fpm.service: Main process exited, code=exited, status=226/NAMESPACE
May 30 16:47:30 MY_HOST systemd[1]: php-fpm.service: Failed with result 'exit-code'.
May 30 16:47:30 MY_HOST systemd[1]: Failed to start The PHP FastCGI Process Manager.
systemd
Nextcloud는 드롭인 에서 이를 가져옵니다 /etc/systemd/system/php-fpm.service.d/override.conf
.
[Service]
...
ReadWritePaths=/srv/www/nextcloud/data
을 실행하면 systemctl restart php-fpm
다음에 재부팅할 때까지 오류가 영원히 사라집니다.
서비스가 시작될 때 마운트되지 않았고 웹 폴더를 보길 원하기 때문에 php-fpm
서비스가 폴더를 찾을 수 없다고 가정합니다 . 연결된 스토리지 드라이브 를 .nextcloud
hdd/
php-fpm
php-fpm
/etc/fstab
/mnt/hdd
/etc/fstab
/mnt/hdd
다음 명령문으로 드라이브를 마운트합니다 .
/dev/vdc1 /mnt/hdd ext4 defaults,noatime,nofail 0 0
인터넷에서 검색한 내용 중 이 문제를 해결하는 방법이 나와 있지 않습니다. 검색결과의 모든 항목에는 php-fpm
또는 에 대해 관련 없는 내용이 표시됩니다 /etc/fstab
. 그럼에도 불구하고 기껏해야 스크립트 키디 답변을 얻을 수 있습니다.
런타임에 훨씬 일찍 마운트 하는 적절한 방법을 알고 싶습니다 vdc1
. 또는 적어도 php-fpm
적합성을 던지기 전에 디렉토리를 사용할 수 있을 때까지 기다려야 합니다.
답변1
기존 드롭인 파일에 다음 구성 옵션을 추가하거나 수정하지 않으려면 다른 옵션을 추가하여 마운트 후에만 시스템 장치가 시작되도록 구성할 수 있습니다.
[Unit]
After=local-fs.target
또 다른 옵션은 fstab의 마운트 정의에 다음 옵션을 추가하는 것입니다.
x-systemd.required-by=php-fpm.service
답변2
하는 동안또 다른 대답내부의 설명으로 한동안 도움이 되었지만 파일을 /etc/fstab
수정하는 .service
것이 더 안정적인 솔루션이 되었습니다...
우리는 필요하다일부 진술서비스 구성에 있지만 아래에는 다음과 [Unit]
같습니다 [Service]
.
[Unit]
Requires=local-fs.target
After=local-fs.target
그러나 문제는 그것들을 어디에 두어야 하는지, 그리고 에 대한 값은 무엇이어야 하는지 Requires=
입니다 After=
.
우리는 서비스가 필요하다드롭인 재정의 구성.
서비스는 php-fpm
이며 원래 구성 파일은 에 있습니다 /lib/systemd/system/php-fpm.service
. 그러나 이를 수정하면 업그레이드로 대체되므로 영구적이지 않습니다. 대신에 임의의 이름과 .conf
확장자를 사용하여 재정의 파일을 만들어야 했습니다 /etc/systemd/system/php-fpm.service.d/
. /etc/systemd/system/
이미 많은 항목이 포함되어 있어야 하지만 php-fpm.service.d/
하위 폴더를 만들어야 할 수도 있습니다.
기반/etc/fstab:
UUID=long-uuid-serial-c0de1 /mnt/ssd ext4 defaults,noatime,nofail,x-systemd.required-by=php-fpm.service 0 0
UUID=long-uuid-serial-c0de2 /mnt/hdd ext4 defaults,noatime,nofail,x-systemd.required-by=php-fpm.service 0 0
이것명령:
systemctl list-units --type=mount
다음을 포함하여 많은 줄을 반환합니다.
mnt-hdd.mount loaded active mounted /mnt/hdd
mnt-ssd.mount loaded active mounted /mnt/ssd
우리는 /etc/fstab
as /mnt/hdd
와 에서 인식합니다 /mnt/ssd
.
따라서 다음 파일이 필요합니다.
/etc/systemd/system/php-fpm.service.d/mount.conf:
[Unit]
Requires=mnt-hdd.mount
After=mnt-hdd.mount
Requires=mnt-ssd.mount
After=mnt-ssd.mount