From 0c9fef9a4f9d910f8bf02a0917000c1ffe8aba3d Mon Sep 17 00:00:00 2001 From: Alexandre BRACH Date: Fri, 31 May 2019 19:15:26 +0200 Subject: [PATCH] PHRDPL-32 #comment fpm/nginx configuration variabilisable --- Dockerfile | 1 + docker/nginx/boot.sh | 6 + .../nginx/nginx.conf => nginx.conf.sample} | 1 + docker/phraseanet/boot.sh | 2 + docker/phraseanet/php-fpm.conf.sample | 125 ++++++++++++++++++ .../local/etc/php/php.ini => php.ini.sample} | 10 +- 6 files changed, 140 insertions(+), 5 deletions(-) create mode 100755 docker/nginx/boot.sh rename docker/nginx/{etc/nginx/nginx.conf => nginx.conf.sample} (97%) create mode 100644 docker/phraseanet/php-fpm.conf.sample rename docker/phraseanet/{usr/local/etc/php/php.ini => php.ini.sample} (99%) diff --git a/Dockerfile b/Dockerfile index 01fdec58aa..e55ffdbe17 100644 --- a/Dockerfile +++ b/Dockerfile @@ -161,3 +161,4 @@ FROM nginx:1.15 as phraseanet-nginx RUN useradd -u 1000 app ADD ./docker/nginx/ / COPY --from=builder /var/alchemy/www /var/alchemy/Phraseanet/www +CMD ["/boot.sh"] diff --git a/docker/nginx/boot.sh b/docker/nginx/boot.sh new file mode 100755 index 0000000000..4d702b6a6b --- /dev/null +++ b/docker/nginx/boot.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cat /nginx.conf.sample +cat nginx.conf.sample | sed "s/\$MAX_BODY_SIZE/$MAX_BODY_SIZE/g" > /etc/nginx/nginx.conf +cat /etc/nginx/nginx.conf +nginx -g "daemon off;" diff --git a/docker/nginx/etc/nginx/nginx.conf b/docker/nginx/nginx.conf.sample similarity index 97% rename from docker/nginx/etc/nginx/nginx.conf rename to docker/nginx/nginx.conf.sample index 791d387942..1e75ba8a8f 100644 --- a/docker/nginx/etc/nginx/nginx.conf +++ b/docker/nginx/nginx.conf.sample @@ -60,6 +60,7 @@ http { location / { # First attempt to serve request as file, then # as directory, then fall back to index.html + client_max_body_size $MAX_BODY_SIZE; try_files $uri $uri/ @rewriteapp; } diff --git a/docker/phraseanet/boot.sh b/docker/phraseanet/boot.sh index 80804ce3a9..d38c260225 100755 --- a/docker/phraseanet/boot.sh +++ b/docker/phraseanet/boot.sh @@ -1,3 +1,5 @@ #!/bin/bash +envsubst < /php.ini.sample > /usr/local/etc/php/php.ini +envsubst < /php-fpm.conf.sample > /usr/local/etc/php-fpm.conf php-fpm diff --git a/docker/phraseanet/php-fpm.conf.sample b/docker/phraseanet/php-fpm.conf.sample new file mode 100644 index 0000000000..beb7ef081f --- /dev/null +++ b/docker/phraseanet/php-fpm.conf.sample @@ -0,0 +1,125 @@ +;;;;;;;;;;;;;;;;;;;;; +; FPM Configuration ; +;;;;;;;;;;;;;;;;;;;;; + +; All relative paths in this configuration file are relative to PHP's install +; prefix (/usr/local). This prefix can be dynamically changed by using the +; '-p' argument from the command line. + +;;;;;;;;;;;;;;;;;; +; Global Options ; +;;;;;;;;;;;;;;;;;; + +[global] +; Pid file +; Note: the default prefix is /usr/local/var +; Default Value: none +;pid = run/php-fpm.pid + +; Error log file +; If it's set to "syslog", log is sent to syslogd instead of being written +; in a local file. +; Note: the default prefix is /usr/local/var +; Default Value: log/php-fpm.log +error_log = /var/lib/phraseanet/logs/php-fpm.log + +; syslog_facility is used to specify what type of program is logging the +; message. This lets syslogd specify that messages from different facilities +; will be handled differently. +; See syslog(3) for possible values (ex daemon equiv LOG_DAEMON) +; Default Value: daemon +;syslog.facility = daemon + +; syslog_ident is prepended to every message. If you have multiple FPM +; instances running on the same server, you can change the default value +; which must suit common needs. +; Default Value: php-fpm +;syslog.ident = php-fpm + +; Log level +; Possible Values: alert, error, warning, notice, debug +; Default Value: notice +log_level = $PHP_LOG_LEVEL + +; If this number of child processes exit with SIGSEGV or SIGBUS within the time +; interval set by emergency_restart_interval then FPM will restart. A value +; of '0' means 'Off'. +; Default Value: 0 +;emergency_restart_threshold = 0 + +; Interval of time used by emergency_restart_interval to determine when +; a graceful restart will be initiated. This can be useful to work around +; accidental corruptions in an accelerator's shared memory. +; Available Units: s(econds), m(inutes), h(ours), or d(ays) +; Default Unit: seconds +; Default Value: 0 +;emergency_restart_interval = 0 + +; Time limit for child processes to wait for a reaction on signals from master. +; Available units: s(econds), m(inutes), h(ours), or d(ays) +; Default Unit: seconds +; Default Value: 0 +;process_control_timeout = 0 + +; The maximum number of processes FPM will fork. This has been design to control +; the global number of processes when using dynamic PM within a lot of pools. +; Use it with caution. +; Note: A value of 0 indicates no limit +; Default Value: 0 +; process.max = 128 + +; Specify the nice(2) priority to apply to the master process (only if set) +; The value can vary from -19 (highest priority) to 20 (lower priority) +; Note: - It will only work if the FPM master process is launched as root +; - The pool process will inherit the master process priority +; unless it specified otherwise +; Default Value: no set +; process.priority = -19 + +; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging. +; Default Value: yes +;daemonize = yes + +; Set open file descriptor rlimit for the master process. +; Default Value: system defined value +;rlimit_files = 1024 + +; Set max core size rlimit for the master process. +; Possible Values: 'unlimited' or an integer greater or equal to 0 +; Default Value: system defined value +;rlimit_core = 0 + +; Specify the event mechanism FPM will use. The following is available: +; - select (any POSIX os) +; - poll (any POSIX os) +; - epoll (linux >= 2.5.44) +; - kqueue (FreeBSD >= 4.1, OpenBSD >= 2.9, NetBSD >= 2.0) +; - /dev/poll (Solaris >= 7) +; - port (Solaris >= 10) +; Default Value: not set (auto detection) +;events.mechanism = epoll + +; When FPM is build with systemd integration, specify the interval, +; in second, between health report notification to systemd. +; Set to 0 to disable. +; Available Units: s(econds), m(inutes), h(ours) +; Default Unit: seconds +; Default value: 10 +;systemd_interval = 10 + +;;;;;;;;;;;;;;;;;;;; +; Pool Definitions ; +;;;;;;;;;;;;;;;;;;;; + +; Multiple pools of child processes may be started with different listening +; ports and different management options. The name of the pool will be +; used in logs and stats. There is no limitation on the number of pools which +; FPM can handle. Your system will tell you anyway :) + +; Include one or more files. If glob(3) exists, it is used to include a bunch of +; files from a glob(3) pattern. This directive can be used everywhere in the +; file. +; Relative path can also be used. They will be prefixed by: +; - the global prefix if it's been set (-p argument) +; - /usr/local otherwise +include=etc/php-fpm.d/*.conf diff --git a/docker/phraseanet/usr/local/etc/php/php.ini b/docker/phraseanet/php.ini.sample similarity index 99% rename from docker/phraseanet/usr/local/etc/php/php.ini rename to docker/phraseanet/php.ini.sample index 40c13e19ad..13651fc1e3 100644 --- a/docker/phraseanet/usr/local/etc/php/php.ini +++ b/docker/phraseanet/php.ini.sample @@ -669,7 +669,7 @@ auto_globals_jit = On ; Its value may be 0 to disable the limit. It is ignored if POST data reading ; is disabled through enable_post_data_reading. ; http://php.net/post-max-size -post_max_size = 8M +post_max_size = $MAX_BODY_SIZE ; Automatically add files before PHP document. ; http://php.net/auto-prepend-file @@ -821,7 +821,7 @@ file_uploads = On ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize -upload_max_filesize = 2M +upload_max_filesize = $MAX_BODY_SIZE ; Maximum number of files that can be uploaded via a single request max_file_uploads = 20 @@ -1428,7 +1428,7 @@ session.referer_check = ; Set to {nocache,private,public,} to determine HTTP caching aspects ; or leave this empty to avoid sending anti-caching headers. ; http://php.net/session.cache-limiter -session.cache_limiter = off +session.cache_limiter = $SESSION_CACHE_LIMITER ; Document expires after n minutes. ; http://php.net/session.cache-expire @@ -1744,10 +1744,10 @@ ldap.max_links = -1 [opcache] ; Determines if Zend OPCache is enabled -;opcache.enable=1 +opcache.enable=$OPCACHE_ENABLED ; Determines if Zend OPCache is enabled for the CLI version of PHP -;opcache.enable_cli=0 +;opcache.enable_cli=$OPCACHE_ENABLED ; The OPcache shared memory storage size. ;opcache.memory_consumption=128