每天 Shaarli

一天内的所有链接,汇聚在一个页面上。

October 28, 2025

Note: Alpine安装Nginx 和 PHP-FPM 8.1 服务

安装

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