OpenSUSE php-fpm.conf 权限被拒绝
OpenSUSE php-fpm.conf permission denied
我无法在 OpenSUSE 上启动 php-fpm。
当我 运行 systemctl restart php-fpm.service
将 etc/php8/fpm/php-fpm.conf.default
复制到 etc/php8/fpm/php-fpm.conf
后,我收到以下错误
[25-Apr-2021 12:52:18] ERROR: failed to open configuration file '/etc/php8/fpm/php-fpm.conf': Permission denied (13)
[25-Apr-2021 12:52:18] ERROR: failed to load configuration file '/etc/php8/fpm/php-fpm.conf'
[25-Apr-2021 12:52:18] ERROR: FPM initialization failed
我必须切换到 php7-fpm 才能使其正常工作。
php-fpm 似乎无法在 OpenSUSE Tumbleweed 上正常工作。
apache 没问题modphp.
我有一些问题可以在你的post中找到。
我的设置:
php8 使用 nginx(fast-cgi 不使用 SOCK)在我的笔记本电脑上工作正常
硬件:HP 移动工作站 Compaq 8510w
- 是的,我知道,那不是最新的装备,但它非常坚固和稳定。
它看起来像是为 Linux!
制作的
Micros....敦促我将它从 W7 升级到 W10
但让我独自面对无法解决的问题。他们的疑难解答告诉我
“问朋友”,这就是我所做的。
朋友说,试试linux,这就是我现在来这里的原因。
我从不后悔,这是说“谢谢 Micros...”的唯一理由。
操作系统:openSUSE Tumbleweed 20210
KDE 等离子版本:5.22.5
KDE 框架版本:5.85.0
Qt 版本:5.15.2
内核版本:5.13.8-1-默认(64 位)
图形平台:X11
处理器:2 × Intel® Core™2 Duo CPU T9300 @ 2.50GHz
内存:3.8 GiB 的 RA
图形处理器:AMD RV630
为了安心:
- nginx 和 php 具有许多安全功能。
安全非常重要,因此请留意常见的 IT 安全规则,
但请注意,如果实施不当,安全规则可能会将您拒之门外。
在进行任何编辑之前备份所有原始配置文件
为方便起见:
我安装了 mc (Midnight Commander) 并使用 nano 作为编辑器。
我把自己加入了wheel组,这样不用输入密码就可以使用sudo了。
mc 对于更改目录、文件跳转和编辑配置文件非常方便,因为您可以将 mc 作为 root 使用。除此之外,您可以轻松更改为 shell 并返回 modify 权限或使用其他 shell-命令。
进一步:
我在 .bashrc 中创建了别名以启用启动、停止和检查
有快捷方式的服务。
alias sto='sudo systemctl stop '
alias str='sudo systemctl start '
alias rst='sudo systemctl restart '
alias sta='sudo systemctl status '
alias sn='sudo nano '
如何使用它们?
编辑你的 .bashrc 后做一个
source .bashrc
要使用这些别名,您需要输入别名、空格和文件路径,例如使用 nano try 编辑文件时使用 sudo:
sn /etc/rc.local
或者,只需几次按键即可检索 php-fpm 的状态:
sta php-fpm
我把/etc/php8/php.ini复制到“php.ini.commented”,并删除了原来的所有注释和不需要的选项
我还复制了 /etc/php8/cli/php.ini 到 php.ini.commented 并删除了所有
原文中的注释和非必需选项
我对 /etc/php8/fpm/php-fpm.d/www.conf
做了同样的事情
为了避免冲突:
在任何其他软件操作之前,请确保您的系统运行正在运行且没有错误。
使用
dmesg -l err
或
journalctl -b |grep error
首先解决发现的错误!
验证后你应该执行 a
sudo zypper dup
- 当 testing/modifying 您的配置时,每次试验不要更改超过 1 个参数。
在每个步骤后检查日志文件中 mod 化的结果。
- 在 mod 化的配置中写下评论,并且 - 如果使用来自网站的建议 - 将网址粘贴为评论,因为几天后您可能不记得为什么要这样配置。
- 避免在配置文件的注释中出现多个空格,这会导致“解析错误”。
我使用安装程序配置的路径名。
这样做,可以防止软件更新后出现问题。
我没有使用原始风滚草user/group“www运行”和“www”,而是在“www-”组中创建了一个用户“www-data”数据”与 Raspberry debian 10 中的完全相同。
使用以下命令
sudo chown -R www-data:www-data /srv
sudo chmod -R 755 /srv
我已经更改了所有内容的所有权和权限,这些内容将由 php-fpm 访问。
如果您将 /srv/www/public 中的 symlinks 放置到别处的文件中,您需要更改 link 指向的文件中的权限。例如,如果您在 /srv/www/public 中为您的 phpmyadmin 数据创建一个 symlink,则需要更改 /usr/share/mysql/phpmyadmin.
中所有文件的权限
您池中数据的用户 /srv/www/public 必须与 中的用户相同,在 /etc/nginx/nginx.conf 和
中定义
使用名为“public”的池时,/etc/php8/fpm/php-fpm.d/www.conf 中 [public] 部分中的用户和组也必须相同 .
这个很关键,nginx启动时出现的问题,大部分都是权限错误导致的。
循序渐进
- 从基本设置开始,没有任何特殊功能。
应朋友的要求,我在下面添加了我的功能配置文件
- 不要从网络专家那里复制配置,他们可能会做复杂或奇特的事情、代理、远程服务器等
特别是那些配置里面有不懂的表达式,最好不要用。
- 刚开始,在 nginx 运行时撤消临时解决方案,并备份第一个工作的基本配置。
在那之后——但不是更早——你可以开始试验
- 切勿在上述任何目录中使用 chmod 777,因为这是让您的系统遭到黑客攻击的邀请。
- 永远不要更改 /var/log 中的 mod 644,所有者 root:root
php-fpm 的日志文件正在由 root 创建和 mod 化。日志文件包含敏感信息。
- 验证设置是否正确:
ps -aux |grep php
结果应该类似于以下几行。这意味着 php-fpm 正在被 root:运行:
根 1262 0.0 0.3 54024 13260 ? ss 06:12 0:01 php-fpm: 主进程(/etc/php8/fpm/php-fpm.conf)
www-数据 1335 0.0 0.2 54172 9576 ? S06:120:00php-fpm:池public
允许其他任何人访问就是为黑客打开大门。请记住,您正在使用浏览器查看您的数据,但其他人也可以浏览它们。
拥有 运行ning 系统后,可以轻松添加更多步骤。
要启动,不需要在 nginx 中使用 sites-enabled
你需要在 /etc/php8/fpm/php-fpm.d/www.conf
中创建 一个池
常见错误的疑难解答:
MySql-错误:
我在这里假设您的 mariadb/mysql 已正确设置。
缺少或错误的权限将导致“未找到”错误。
mysql 中的疑难解答记录得非常好,并且 mysql 具有交互式帮助功能。按照 mysql 手册的步骤阅读文档并测试访问权限。在本文档中添加指南会太过分了。
php-fpm 未启动:
无法打开配置文件“/etc/php8/fpm/php-fpm.conf”:权限被拒绝 (13)
有
sudo systemctl status php-fpm
您会找到有关内容和方式的更多详细信息。
当 php-fpm 尝试通过 access.log = "access.$pool.log”(查看文件 www.conf)。
这个错误可以通过 apparmor 中的设置 caused/suppressed。
选项是:
- 临时 禁用 apparmor
sudo systemctl stop apparmor
sudo systemctl disable apparmor
- 在 openSUSE 中可以使用 Yast 配置 apparmor
如果您进行了 mod说明,结果可在以下位置找到:
/etc/apparmor.d/php-pfm
vim: ft=apparmor
profile php-fpm /usr/sbin/php-fpm* flags=(attach_disconnected, complain) {
include <abstractions/base>
include <abstractions/nameservice>
include <abstractions/openssl>
include <abstractions/php>
include <abstractions/ssl_certs>
include if exists <local/php-fpm>
include if exists <php-fpm.d>
capability chown,
capability dac_override,
capability kill,
capability net_admin,
capability setgid,
capability setuid,
signal send peer=php-fpm//*,
deny / rw,
/etc/php8/fpm/php-fpm.conf r,
/etc/php{,5,7}/* r,
/usr/sbin/php-fpm* rix,
owner /var/log/php*-fpm.log rw,
owner /var/log/public.acess.log rw,
@{PROC}/@{pid}/attr/{apparmor/,}current rw,
@{run}/php{,-fpm}/php*-fpm.pid rw,
@{run}/php{,-fpm}/php*-fpm.sock rwlk,
owner /etc/php8/fpm/php-fpm.d/www.conf r,
change_profile -> php-fpm//*,
}
或临时注释行
access.log = /var/log/$pool.access.log 在你的 www.conf
要开始这个文件不是绝对需要的
并评论它帮助我抑制了 "php-fpm 无法启动" 错误。
最重要和详细的日志文件是
/var/log/nginx/error.log
要调试,在每次 modification 之后你应该使用
sudo tail -1 /var/log/nginx/error.log
您会看到大多数错误都是权限错误,因为 mysql 无法访问您的数据库或 php-fpm 无法使用您的 php/html-files!
这里是我的 /etc/nginx/nginx.conf:
user www-data;
worker_processes auto;
#pid /run/nginx.pid; not required when using tcp
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etch/nginx/conf.d/*.conf;
server {
listen 80;
server_name 127.0.0.1;
root /srv/www/public; # without this root instruction nqinx will use /usr/ as prefix and you will get a not found error!
error_page 500 502 503 504 /50x.html; # redirect server error pages to the static page /50x.html
location = /50x.html {
root /srv/www/htdocs/;
}
location ~ \.php$ { # 404
try_files $fastcgi_script_name =404;
include /etc/nginx/fastcgi_params;
# default fastcgi_params
# fastcgi settings
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
# fastcgi params
fastcgi_param DOCUMENT_ROOT /srv/www/public;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
root /srv/www/public;
try_files $uri $uri/ =404;
index index.nginx-debian.html index.php index.html index.htm;
}
location ~ /\.ht {
# deny access to .htaccess files, if Apache's document root concurs with nginx's one
deny all;
}
include vhosts.d/*.conf;
}
}
/etc/php8/fpm/php-fpm.d/www.conf
的文件内容
[public]
prefix = /srv/www/$pool
user = www-data
group = www-data
listen = 127.0.0.1:9000
;use these settings only if a socket is used
;listen.owner = www-data
;listen.group = www_data
;listen.mode = 0660
pm = static
pm.max_children = 1
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
; this optional feature is well documented in the file and further instructions for how to set it up can be found on the web
pm.status_path = /status
; if fpm-phm cannot start, temporary comment the two lines access.log, but reactivate the instructions as soon as php-fpm is operational
; if there are wrong permission-settings, php-fpm will not start
access.log = /var/log/$pool.access.log
access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
catch_workers_output = yes
security.limit_extensions = .php .html
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M
文件/etc/php8/fpm/php-fpm.conf
; FPM Configuration ;
[global]
process_control_timeout = 10
process.max = 128
daemonize = no
rlimit_core = 0
rlimit_files = 1024
events.mechanism = epoll
systemd_interval = 10
include=/etc/php8/fpm/php-fpm.d/*.conf
通过此配置,我 运行 几个 mysql 数据库和内容管理以及 phpmyadmin。
下图是我使用 mysql 数据库和自行设计的 php 格式表格的内容管理系统的屏幕截图。
在位置定义中,不需要进一步的说明,既不用于加载样式表也不用于 pictures/movies。
在 Chrome 校样中使用 Google 的开发人员工具进行检查,所有对样式表、json 文件和其他目录的引用和 link 都已被删除找到并且没有错误。
当然我花了一些时间才搞定这些 运行ning.
这个答案可能会帮助每个想要设置 nginx 并节省时间的人。
nginx 和 php 的文档非常完整和优秀。大多数命令都有 --help 选项、手册页和网页.....
Yes, I know!
Help and man-pages are written by excellent IT-engineers,
some of these hexadecimal-thinking people might have difficultes
to translate their digital slang to human-understandable language.
That's why some pages are more confusing than helping.
Anyway, press the F1-key, try the help and forgive them.
Where would we be without them?
在我这里的小网络中,我使用 24/7 运行ning Raspberry Pi 3 B+ 和 64 位 OS 作为服务器,将数据存储在两个 USB 驱动器上。
这台服务器上访问本地文件的配置和我笔记本上的几乎一样。
只有两个小区别:
在“debian buster”上,应用程序 php8 被命名为 php8.0 并且一些目录具有不同的名称,因此 您可以将上述配置文件用于 Raspberry debian buster具有以下限制:相关的 'include' 行不同,需要根据配置文件的位置名称进行更改。
我的 nginx.conf 在 Raspberry-server 上有几行额外的代码,以便能够通过 DDNS 访问内容,但那是另一章。
我想强调一下,我不是 IT 专家。在我作为机械工程师的专业活动中,我积累了一些计算方面的经验,所有进一步的专业知识都来自按 F1 键、阅读论坛贡献、手册、帮助文件、网页以及 - 不要忘记 - 犯的错误。
我希望这可以鼓励其他人继续尝试。 Linux 结构非常清晰,易于理解。 Google 错误,请仔细观察您的日志文件并享受最终 运行 全面运行 php-fpm/nginx.
的乐趣
再次提醒您:
不要忘记重置所有临时解决方案。
的
干杯
这与apparmor设置有关。请编辑 /etc/apparmor.d/php-fpm
:
19 /etc/php{,5,7,8}/** r,
允许 php-fpm
进程访问目录 /etc/php8/
。
我无法在 OpenSUSE 上启动 php-fpm。
当我 运行 systemctl restart php-fpm.service
将 etc/php8/fpm/php-fpm.conf.default
复制到 etc/php8/fpm/php-fpm.conf
[25-Apr-2021 12:52:18] ERROR: failed to open configuration file '/etc/php8/fpm/php-fpm.conf': Permission denied (13)
[25-Apr-2021 12:52:18] ERROR: failed to load configuration file '/etc/php8/fpm/php-fpm.conf'
[25-Apr-2021 12:52:18] ERROR: FPM initialization failed
我必须切换到 php7-fpm 才能使其正常工作。 php-fpm 似乎无法在 OpenSUSE Tumbleweed 上正常工作。
apache 没问题modphp.
我有一些问题可以在你的post中找到。
我的设置:
php8 使用 nginx(fast-cgi 不使用 SOCK)在我的笔记本电脑上工作正常
硬件:HP 移动工作站 Compaq 8510w
- 是的,我知道,那不是最新的装备,但它非常坚固和稳定。
它看起来像是为 Linux!
制作的 Micros....敦促我将它从 W7 升级到 W10
但让我独自面对无法解决的问题。他们的疑难解答告诉我
“问朋友”,这就是我所做的。
朋友说,试试linux,这就是我现在来这里的原因。
我从不后悔,这是说“谢谢 Micros...”的唯一理由。
操作系统:openSUSE Tumbleweed 20210
KDE 等离子版本:5.22.5
KDE 框架版本:5.85.0
Qt 版本:5.15.2
内核版本:5.13.8-1-默认(64 位)
图形平台:X11
处理器:2 × Intel® Core™2 Duo CPU T9300 @ 2.50GHz
内存:3.8 GiB 的 RA
图形处理器:AMD RV630
为了安心:
- nginx 和 php 具有许多安全功能。
安全非常重要,因此请留意常见的 IT 安全规则,
但请注意,如果实施不当,安全规则可能会将您拒之门外。
在进行任何编辑之前备份所有原始配置文件
为方便起见:
我安装了 mc (Midnight Commander) 并使用 nano 作为编辑器。
我把自己加入了wheel组,这样不用输入密码就可以使用sudo了。
mc 对于更改目录、文件跳转和编辑配置文件非常方便,因为您可以将 mc 作为 root 使用。除此之外,您可以轻松更改为 shell 并返回 modify 权限或使用其他 shell-命令。
进一步:
我在 .bashrc 中创建了别名以启用启动、停止和检查
有快捷方式的服务。
alias sto='sudo systemctl stop '
alias str='sudo systemctl start '
alias rst='sudo systemctl restart '
alias sta='sudo systemctl status '
alias sn='sudo nano '
如何使用它们?
编辑你的 .bashrc 后做一个
source .bashrc
要使用这些别名,您需要输入别名、空格和文件路径,例如使用 nano try 编辑文件时使用 sudo:
sn /etc/rc.local
或者,只需几次按键即可检索 php-fpm 的状态:
sta php-fpm
我把/etc/php8/php.ini复制到“php.ini.commented”,并删除了原来的所有注释和不需要的选项 我还复制了 /etc/php8/cli/php.ini 到 php.ini.commented 并删除了所有 原文中的注释和非必需选项 我对 /etc/php8/fpm/php-fpm.d/www.conf
做了同样的事情为了避免冲突:
在任何其他软件操作之前,请确保您的系统运行正在运行且没有错误。
使用
dmesg -l err
或
journalctl -b |grep error
首先解决发现的错误!
验证后你应该执行 a
sudo zypper dup
- 当 testing/modifying 您的配置时,每次试验不要更改超过 1 个参数。 在每个步骤后检查日志文件中 mod 化的结果。
- 在 mod 化的配置中写下评论,并且 - 如果使用来自网站的建议 - 将网址粘贴为评论,因为几天后您可能不记得为什么要这样配置。
- 避免在配置文件的注释中出现多个空格,这会导致“解析错误”。
我使用安装程序配置的路径名。
这样做,可以防止软件更新后出现问题。
我没有使用原始风滚草user/group“www运行”和“www”,而是在“www-”组中创建了一个用户“www-data”数据”与 Raspberry debian 10 中的完全相同。
使用以下命令
sudo chown -R www-data:www-data /srv
sudo chmod -R 755 /srv
我已经更改了所有内容的所有权和权限,这些内容将由 php-fpm 访问。
如果您将 /srv/www/public 中的 symlinks 放置到别处的文件中,您需要更改 link 指向的文件中的权限。例如,如果您在 /srv/www/public 中为您的 phpmyadmin 数据创建一个 symlink,则需要更改 /usr/share/mysql/phpmyadmin.
中所有文件的权限
您池中数据的用户 /srv/www/public 必须与 中的用户相同,在 /etc/nginx/nginx.conf 和
中定义
使用名为“public”的池时,/etc/php8/fpm/php-fpm.d/www.conf 中 [public] 部分中的用户和组也必须相同 .
这个很关键,nginx启动时出现的问题,大部分都是权限错误导致的。
循序渐进
- 从基本设置开始,没有任何特殊功能。
应朋友的要求,我在下面添加了我的功能配置文件 - 不要从网络专家那里复制配置,他们可能会做复杂或奇特的事情、代理、远程服务器等
特别是那些配置里面有不懂的表达式,最好不要用。 - 刚开始,在 nginx 运行时撤消临时解决方案,并备份第一个工作的基本配置。
在那之后——但不是更早——你可以开始试验 - 切勿在上述任何目录中使用 chmod 777,因为这是让您的系统遭到黑客攻击的邀请。
- 永远不要更改 /var/log 中的 mod 644,所有者 root:root php-fpm 的日志文件正在由 root 创建和 mod 化。日志文件包含敏感信息。
- 验证设置是否正确:
ps -aux |grep php
结果应该类似于以下几行。这意味着 php-fpm 正在被 root:运行:
根 1262 0.0 0.3 54024 13260 ? ss 06:12 0:01 php-fpm: 主进程(/etc/php8/fpm/php-fpm.conf)
www-数据 1335 0.0 0.2 54172 9576 ? S06:120:00php-fpm:池public
允许其他任何人访问就是为黑客打开大门。请记住,您正在使用浏览器查看您的数据,但其他人也可以浏览它们。
拥有 运行ning 系统后,可以轻松添加更多步骤。 要启动,不需要在 nginx 中使用 sites-enabled 你需要在 /etc/php8/fpm/php-fpm.d/www.conf
中创建 一个池常见错误的疑难解答:
MySql-错误:
我在这里假设您的 mariadb/mysql 已正确设置。
缺少或错误的权限将导致“未找到”错误。
mysql 中的疑难解答记录得非常好,并且 mysql 具有交互式帮助功能。按照 mysql 手册的步骤阅读文档并测试访问权限。在本文档中添加指南会太过分了。php-fpm 未启动:
无法打开配置文件“/etc/php8/fpm/php-fpm.conf”:权限被拒绝 (13)
有
sudo systemctl status php-fpm
您会找到有关内容和方式的更多详细信息。
当 php-fpm 尝试通过 access.log = "access.$pool.log”(查看文件 www.conf)。
这个错误可以通过 apparmor 中的设置 caused/suppressed。
选项是:
- 临时 禁用 apparmor
sudo systemctl stop apparmor
sudo systemctl disable apparmor
- 在 openSUSE 中可以使用 Yast 配置 apparmor
如果您进行了 mod说明,结果可在以下位置找到:
/etc/apparmor.d/php-pfm
vim: ft=apparmor
profile php-fpm /usr/sbin/php-fpm* flags=(attach_disconnected, complain) {
include <abstractions/base>
include <abstractions/nameservice>
include <abstractions/openssl>
include <abstractions/php>
include <abstractions/ssl_certs>
include if exists <local/php-fpm>
include if exists <php-fpm.d>
capability chown,
capability dac_override,
capability kill,
capability net_admin,
capability setgid,
capability setuid,
signal send peer=php-fpm//*,
deny / rw,
/etc/php8/fpm/php-fpm.conf r,
/etc/php{,5,7}/* r,
/usr/sbin/php-fpm* rix,
owner /var/log/php*-fpm.log rw,
owner /var/log/public.acess.log rw,
@{PROC}/@{pid}/attr/{apparmor/,}current rw,
@{run}/php{,-fpm}/php*-fpm.pid rw,
@{run}/php{,-fpm}/php*-fpm.sock rwlk,
owner /etc/php8/fpm/php-fpm.d/www.conf r,
change_profile -> php-fpm//*,
}
或临时注释行
access.log = /var/log/$pool.access.log 在你的 www.conf
要开始这个文件不是绝对需要的 并评论它帮助我抑制了 "php-fpm 无法启动" 错误。
最重要和详细的日志文件是/var/log/nginx/error.log
要调试,在每次 modification 之后你应该使用
sudo tail -1 /var/log/nginx/error.log
您会看到大多数错误都是权限错误,因为 mysql 无法访问您的数据库或 php-fpm 无法使用您的 php/html-files!
这里是我的 /etc/nginx/nginx.conf:
user www-data;
worker_processes auto;
#pid /run/nginx.pid; not required when using tcp
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etch/nginx/conf.d/*.conf;
server {
listen 80;
server_name 127.0.0.1;
root /srv/www/public; # without this root instruction nqinx will use /usr/ as prefix and you will get a not found error!
error_page 500 502 503 504 /50x.html; # redirect server error pages to the static page /50x.html
location = /50x.html {
root /srv/www/htdocs/;
}
location ~ \.php$ { # 404
try_files $fastcgi_script_name =404;
include /etc/nginx/fastcgi_params;
# default fastcgi_params
# fastcgi settings
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;
# fastcgi params
fastcgi_param DOCUMENT_ROOT /srv/www/public;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
root /srv/www/public;
try_files $uri $uri/ =404;
index index.nginx-debian.html index.php index.html index.htm;
}
location ~ /\.ht {
# deny access to .htaccess files, if Apache's document root concurs with nginx's one
deny all;
}
include vhosts.d/*.conf;
}
}
/etc/php8/fpm/php-fpm.d/www.conf
的文件内容[public]
prefix = /srv/www/$pool
user = www-data
group = www-data
listen = 127.0.0.1:9000
;use these settings only if a socket is used
;listen.owner = www-data
;listen.group = www_data
;listen.mode = 0660
pm = static
pm.max_children = 1
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
; this optional feature is well documented in the file and further instructions for how to set it up can be found on the web
pm.status_path = /status
; if fpm-phm cannot start, temporary comment the two lines access.log, but reactivate the instructions as soon as php-fpm is operational
; if there are wrong permission-settings, php-fpm will not start
access.log = /var/log/$pool.access.log
access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
catch_workers_output = yes
security.limit_extensions = .php .html
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M
文件/etc/php8/fpm/php-fpm.conf
; FPM Configuration ;
[global]
process_control_timeout = 10
process.max = 128
daemonize = no
rlimit_core = 0
rlimit_files = 1024
events.mechanism = epoll
systemd_interval = 10
include=/etc/php8/fpm/php-fpm.d/*.conf
通过此配置,我 运行 几个 mysql 数据库和内容管理以及 phpmyadmin。 下图是我使用 mysql 数据库和自行设计的 php 格式表格的内容管理系统的屏幕截图。 在位置定义中,不需要进一步的说明,既不用于加载样式表也不用于 pictures/movies。
在 Chrome 校样中使用 Google 的开发人员工具进行检查,所有对样式表、json 文件和其他目录的引用和 link 都已被删除找到并且没有错误。
当然我花了一些时间才搞定这些 运行ning.
这个答案可能会帮助每个想要设置 nginx 并节省时间的人。
nginx 和 php 的文档非常完整和优秀。大多数命令都有 --help 选项、手册页和网页.....
Yes, I know! Help and man-pages are written by excellent IT-engineers, some of these hexadecimal-thinking people might have difficultes to translate their digital slang to human-understandable language. That's why some pages are more confusing than helping. Anyway, press the F1-key, try the help and forgive them. Where would we be without them?
在我这里的小网络中,我使用 24/7 运行ning Raspberry Pi 3 B+ 和 64 位 OS 作为服务器,将数据存储在两个 USB 驱动器上。
这台服务器上访问本地文件的配置和我笔记本上的几乎一样。
只有两个小区别:
在“debian buster”上,应用程序 php8 被命名为 php8.0 并且一些目录具有不同的名称,因此 您可以将上述配置文件用于 Raspberry debian buster具有以下限制:相关的 'include' 行不同,需要根据配置文件的位置名称进行更改。
我的 nginx.conf 在 Raspberry-server 上有几行额外的代码,以便能够通过 DDNS 访问内容,但那是另一章。
我想强调一下,我不是 IT 专家。在我作为机械工程师的专业活动中,我积累了一些计算方面的经验,所有进一步的专业知识都来自按 F1 键、阅读论坛贡献、手册、帮助文件、网页以及 - 不要忘记 - 犯的错误。
我希望这可以鼓励其他人继续尝试。 Linux 结构非常清晰,易于理解。 Google 错误,请仔细观察您的日志文件并享受最终 运行 全面运行 php-fpm/nginx.
的乐趣
再次提醒您:
不要忘记重置所有临时解决方案。
的
干杯
这与apparmor设置有关。请编辑 /etc/apparmor.d/php-fpm
:
19 /etc/php{,5,7,8}/** r,
允许 php-fpm
进程访问目录 /etc/php8/
。