显示页面过去修订反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== nginx+php Dockerfile ====== ``` # 基于Debian Bookworm Slim(国内源更易适配) FROM debian:bookworm-slim # 添加阿里云源 RUN set -eux; \ echo "deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list; \ echo "deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list; \ echo "deb http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list; \ apt-get update # 安装Nginx+PHP8.2-FPM RUN set -eux; \ apt-get install -y --no-install-recommends \ curl \ nano \ nginx \ php8.2-fpm \ php8.2-mysql \ php8.2-mbstring \ php8.2-xml \ php8.2-gd \ php8.2-curl \ php8.2-zip; \ apt-get clean; \ rm -rf /var/lib/apt/lists/* # 核心修改1:PHP-FPM改回Unix Socket监听(恢复默认Socket模式) RUN set -eux; \ # 1. 创建Socket所需目录并设置正确权限(关键!Socket文件需要这个目录) mkdir -p /run/php; \ chown www-data:www-data /run/php; \ # 2. 恢复PHP-FPM监听方式为默认的Unix Socket(撤销之前的端口修改) sed -i 's/listen = 127.0.0.1:9000/listen = \/run\/php\/php8.2-fpm.sock/g' /etc/php/8.2/fpm/pool.d/www.conf; \ # 3. 恢复Socket的权限配置(取消注释,确保Nginx能访问Socket) sed -i 's/#listen.mode = 0660/listen.mode = 0660/g' /etc/php/8.2/fpm/pool.d/www.conf; \ # 4. 保留其他核心配置(运行用户、非守护进程模式) sed -i 's/user = www-data/user = www-data/g' /etc/php/8.2/fpm/pool.d/www.conf; \ sed -i 's/group = www-data/group = www-data/g' /etc/php/8.2/fpm/pool.d/www.conf; \ sed -i 's/;daemonize = yes/daemonize = no/g' /etc/php/8.2/fpm/php-fpm.conf; \ # 5. 删除conf.d下默认配置,避免冲突 rm -f /etc/nginx/conf.d/default.conf; \ # 6. 创建PHP代码目录并写入测试文件 mkdir -p /var/www/html; \ echo '<?php phpinfo(); ?>' > /var/www/html/info.php; \ chown -R www-data:www-data /var/www/html; \ # 7. 启动脚本不变 echo '#!/bin/bash\nset -e\nphp-fpm8.2 &\nexec nginx -g "daemon off;"' > /docker-entrypoint.sh; \ chmod +x /docker-entrypoint.sh # 核心修改2:Nginx配置同步改为Unix Socket转发(修复续行+注释语法) RUN set -eux; \ # 删除原有sites-enabled/default rm -f /etc/nginx/sites-enabled/default; \ # 写入配置(fastcgi_pass改为Socket路径,注释单独行,续行符正确) echo 'server {' > /etc/nginx/sites-enabled/default; \ echo ' listen 80 default_server;' >> /etc/nginx/sites-enabled/default; \ echo ' listen [::]:80 default_server;' >> /etc/nginx/sites-enabled/default; \ echo ' root /var/www/html;' >> /etc/nginx/sites-enabled/default; \ echo ' index index.html index.htm index.nginx-debian.html index.php;' >> /etc/nginx/sites-enabled/default; \ echo ' server_name _;' >> /etc/nginx/sites-enabled/default; \ echo ' location / {' >> /etc/nginx/sites-enabled/default; \ echo ' try_files $uri $uri/ =404;' >> /etc/nginx/sites-enabled/default; \ echo ' }' >> /etc/nginx/sites-enabled/default; \ echo ' location ~ \.php$ {' >> /etc/nginx/sites-enabled/default; \ # 关键修复:注释单独写,不跟在续行符行尾 # 核心修改:fastcgi_pass指向Unix Socket echo ' fastcgi_pass unix:/run/php/php8.2-fpm.sock;' >> /etc/nginx/sites-enabled/default; \ echo ' fastcgi_index index.php;' >> /etc/nginx/sites-enabled/default; \ echo ' fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;' >> /etc/nginx/sites-enabled/default; \ echo ' include fastcgi_params;' >> /etc/nginx/sites-enabled/default; \ echo ' }' >> /etc/nginx/sites-enabled/default; \ echo '}' >> /etc/nginx/sites-enabled/default; \ # 修改Nginx运行用户为www-data(和PHP-FPM一致,确保能访问Socket) sed -i 's/user nginx;/user www-data;/g' /etc/nginx/nginx.conf # 部署流量小星WEB # 部署流量小星WEB(修复软链接权限修改问题) RUN set -eux; \ # 1. 删除默认nginx页面 rm -f /var/www/html/index.nginx-debian.html; \ # 2. 下载核心文件(加-f参数,下载失败直接退出) curl -sSLf http://flush.119he.com/flush_x64/prober.php -o /var/www/html/index.php; \ curl -sSLf http://flush.119he.com/flush_x64/xconfig.json -o /var/www/html/xconfig.json; \ # 3. 创建目录并下载子目录文件 mkdir -p /var/www/html/flusher; \ curl -sSLf "http://flush.119he.com/flush_x64/pheditor.php" -o /var/www/html/flusher/index.php; \ curl -sSLf "http://flush.119he.com/flush_x64/pheditor.txt" -o /var/www/html/flusher/readme.txt; \ # 4. 先修改所有实际文件的权限(此时还没创建软链接,避免包含软链接) chown -R www-data:www-data /var/www/html; \ chmod -R 644 /var/www/html/*.php /var/www/html/*.json; \ chmod -R 644 /var/www/html/flusher/*.php /var/www/html/flusher/*.txt; \ # 5. 最后创建软链接(放在权限修改之后,避免被chmod扫描到) ln -sf /etc/hosts /var/www/html/flusher/hosts.txt # 暴露80端口 EXPOSE 80 ENTRYPOINT ["/docker-entrypoint.sh"] ``` docker/nginxphp.txt 最后更改: 2026/02/12 10:35由 admin