225 条记录
21 私有链接
21 私有链接
安装
apk update
apk add nginx
# 最小扩展安装PHP
apk add php81 php81-fpm php81-session php81-tokenizer php81-sqlite3 php81-pdo_sqlite
#可选其他扩展
apk add php81-mysqli php81-opcache php81-zlib php81-curl php81-xml php81-ctype php81-mbstring php81-soap php81-gd
查看系统是否存在Nginx用户和组
# 查看Nginx用户:
grep nginx /etc/passwd
# 如果输出
nginx:x:...:...:Nginx User:/var/cache/nginx:/sbin/nologin
# 说明系统中有 nginx 用户
# 查看Nginx组:
grep nginx /etc/group
# 如果输出
nginx:x:999:
# 说明系统中有 nginx 组
# 否则创建Nginx用户和组:
groupadd nginx
useradd -g nginx -s /sbin/nologin -M nginx
# 设置fpm目录权限
chown -R nginx:nginx /run/php-fpm81/
chmod 660 /run/php-fpm81/php8.1-fpm.sock
chown nginx:nginx /run/php-fpm81/php8.1-fpm.sock
配置 PHP-FPM 8.1
在 Alpine 上,PHP-FPM 的配置文件通常位于 /etc/php8.1/php-fpm.conf 和 /etc/php8.1/php-fpm.d/www.conf。你可以编辑配置文件,确保 PHP-FPM 正常工作。
vi /etc/php81/php-fpm.d/www.conf
确保以下配置是正确的:
user 和 group 设置为 nginx(因为 Nginx 会以 nginx 用户运行):
user = nginx
group = nginx
listen 设置为适当的 Unix socket 或 IP 地址端口:
listen = /run/php-fpm81/php8.1-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
配置 Nginx
Nginx 的默认配置文件位于 /etc/nginx/nginx.conf
站点的配置文件通常位于 /etc/nginx/http.d/ 目录。
vi /etc/nginx/http.d/default.conf
确保 fastcgi_pass 指向 PHP-FPM 使用的 socket 文件路径。
server {
listen 80;
server_name localhost;
root /service/wwwroot/default;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm81/php8.1-fpm.sock; # 使用 PHP-FPM 的 Unix Socket
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
启动并启用 Nginx 和 PHP-FPM
rc-service php-fpm81 start
rc-service nginx start
使服务在系统启动时自动启动,可以使用以下命令:
rc-update add php-fpm81
rc-update add nginx
测试 PHP
在 /var/www/localhost/htdocs/ 目录下创建一个 info.php 文件:
echo "<?php phpinfo(); ?>" | sudo tee /service/wwwroot/default/info.php
然后,打开浏览器,访问 http://127.0.0.1/info.php,如果你看到 PHP 信息页面,说明 PHP-FPM 配置成功。
如果不成功:
查看Nginx错误信息
tail -n 100 /var/log/nginx/error.log
chmod 660 /run/php-fpm81/php8.1-fpm.sock
chown nginx:nginx /run/php-fpm81/php8.1-fpm.sock
rc-service php-fpm81 restart
rc-service nginx reload