Nginx PHP-FPM
Nginx php
Nous allons créer un conteneur nginx capable de servir à nos utilisateurs des fichiers PHP à l'aide de PHP FPM
Question
En vous basant sur ce que vous avez appris dans le module serveur web PHP créez un conteneur Nginx et PHP FPM à partir de l'image debian:buster
Indice
Vous devez installer les packages suivants :
nginx
php7.3
php7.3-fpm
php7.3-gd
php7.3-pgsql
php7.3-xml
Indice
Pour configurer PHP-FPM, les commandes suivantes doivent être lancées
echo "cgi.fix_pathinfo = 0;" >> /etc/php/7.3/fpm/php.ini
sed -i -e "s|;daemonize\s*=\s*yes|daemonize = no|g" /etc/php/7.3/fpm/php-fpm.conf
sed -i -e "s|listen\s*=\s*127\.0\.0\.1:9000|listen = /var/run/php-fpm7.sock|g" /etc/php/7.3/fpm/pool.d/www.conf
sed -i -e "s|;listen\.owner\s*=\s*|listen.owner = |g" /etc/php/7.3/fpm/pool.d/www.conf
sed -i -e "s|;listen\.group\s*=\s*|listen.group = |g" /etc/php/7.3/fpm/pool.d/www.conf
sed -i -e "s|;listen\.mode\s*=\s*|listen.mode = |g" /etc/php/7.3/fpm/pool.d/www.conf
Indice
Vous devez configurer Nginx pour qu'il utilise PHP-FPM pour rende le PHP à l'aide du fichier de configuration suivant
daemon off;
user www-data;
worker_processes 1;
error_log stderr error;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm;
client_max_body_size 128M;
client_body_buffer_size 128k;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "memory_limit = 256M
post_max_size = 128M
upload_max_filesize = 128M
";
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location ~ /(data|conf|bin|inc)/ {
deny all;
}
}
}
Indice
Le conteneur doit lancer à la fois PHP-FPM mais aussi Nginx à l'aide des commandes suivantes :
php-fpm7.3
nginx
On fera donc un script appelé ici start.sh
qui se chargera de démarer php-fpm
en arrière plan à l'aide de l'instruction &
et qui démarre ensuite nginx
en premier plan
Solution
FROM debian:buster
RUN apt-get update && \
apt-get install -y \
php7.3 \
php7.3-fpm \
php7.3-gd \
php7.3-xml \
php7.3-pgsql \
nginx && \
mkdir -p /run/nginx /var/www /run/php
COPY nginx.conf /etc/nginx/nginx.conf
COPY start.sh /start.sh
RUN echo "cgi.fix_pathinfo = 0;" >> /etc/php/7.3/fpm/php.ini && \
sed -i -e "s|;daemonize\s*=\s*yes|daemonize = no|g" /etc/php/7.3/fpm/php-fpm.conf && \
sed -i -e "s|listen\s*=\s*127\.0\.0\.1:9000|listen = /var/run/php-fpm7.sock|g" /etc/php/7.3/fpm/pool.d/www.conf && \
sed -i -e "s|;listen\.owner\s*=\s*|listen.owner = |g" /etc/php/7.3/fpm/pool.d/www.conf && \
sed -i -e "s|;listen\.group\s*=\s*|listen.group = |g" /etc/php/7.3/fpm/pool.d/www.conf && \
sed -i -e "s|;listen\.mode\s*=\s*|listen.mode = |g" /etc/php/7.3/fpm/pool.d/www.conf && \
chmod +x /start.sh
EXPOSE 80
CMD ["/start.sh"]