├── .gitignore ├── Dockerfile ├── docker-compose.yml ├── readme.md └── resources ├── default ├── nginx.conf ├── supervisord.conf └── www.conf /.gitignore: -------------------------------------------------------------------------------- 1 | /db_password.txt 2 | /db_root_password.txt 3 | /src/ 4 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | ####################################################################### 2 | # Laravel/Lumen 5.8 Application - Dockerfile v0.5 # 3 | ####################################################################### 4 | 5 | #------------- Setup Environment ------------------------------------------------------------- 6 | 7 | # Pull base image 8 | FROM ubuntu:18.04 9 | 10 | # Install common tools 11 | RUN apt-get update 12 | RUN apt-get install -y wget curl nano htop git unzip bzip2 software-properties-common locales 13 | 14 | # Set evn var to enable xterm terminal 15 | ENV TERM=xterm 16 | 17 | # Set timezone to UTC to avoid tzdata interactive mode during build 18 | ENV TZ=Etc/UTC 19 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 20 | 21 | # Set working directory 22 | WORKDIR /var/www/html 23 | 24 | # Set up locales 25 | # RUN locale-gen 26 | 27 | #------------- Application Specific Stuff ---------------------------------------------------- 28 | 29 | # Install PHP 30 | RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php 31 | RUN apt update 32 | RUN apt-get install -y \ 33 | php7.4-fpm \ 34 | php7.4-common \ 35 | php7.4-curl \ 36 | php7.4-mysql \ 37 | php7.4-mbstring \ 38 | php7.4-json \ 39 | php7.4-xml \ 40 | php7.4-bcmath 41 | 42 | # Install NPM and Node.js 43 | RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - 44 | RUN apt-get install -y nodejs 45 | 46 | #------------- FPM & Nginx configuration ---------------------------------------------------- 47 | 48 | # Config fpm to use TCP instead of unix socket 49 | ADD resources/www.conf /etc/php/7.4/fpm/pool.d/www.conf 50 | RUN mkdir -p /var/run/php 51 | 52 | # Install Nginx 53 | RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62 54 | RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C 55 | RUN echo "deb http://nginx.org/packages/ubuntu/ trusty nginx" >> /etc/apt/sources.list 56 | RUN echo "deb-src http://nginx.org/packages/ubuntu/ trusty nginx" >> /etc/apt/sources.list 57 | RUN apt-get update 58 | 59 | RUN apt-get install -y nginx 60 | 61 | ADD resources/default /etc/nginx/sites-enabled/ 62 | ADD resources/nginx.conf /etc/nginx/ 63 | 64 | #------------- Composer & laravel configuration ---------------------------------------------------- 65 | 66 | # Install composer 67 | RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer 68 | 69 | #------------- Supervisor Process Manager ---------------------------------------------------- 70 | 71 | # Install supervisor 72 | RUN apt-get install -y supervisor 73 | RUN mkdir -p /var/log/supervisor 74 | ADD resources/supervisord.conf /etc/supervisor/conf.d/supervisord.conf 75 | 76 | #------------- Container Config --------------------------------------------------------------- 77 | 78 | # Expose port 80 79 | EXPOSE 80 80 | 81 | # Set supervisor to manage container processes 82 | ENTRYPOINT ["/usr/bin/supervisord"] 83 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | mysql: 5 | image: mysql:5.7 6 | container_name: mysql 7 | hostname: mysql 8 | environment: 9 | - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password 10 | - MYSQL_DATABASE=appdb 11 | - MYSQL_USER=user 12 | - MYSQL_PASSWORD_FILE=/run/secrets/db_password 13 | restart: unless-stopped 14 | ports: 15 | - 127.0.0.1:3306:3306 16 | volumes: 17 | - mysql-data:/var/lib/mysql 18 | secrets: 19 | - db_root_password 20 | - db_password 21 | 22 | app: 23 | build: . 24 | container_name: app 25 | hostname: app 26 | restart: unless-stopped 27 | volumes: 28 | - ./src:/var/www/html 29 | ports: 30 | - "80:80" 31 | depends_on: 32 | - mysql 33 | 34 | secrets: 35 | db_root_password: 36 | file: db_root_password.txt 37 | db_password: 38 | file: db_password.txt 39 | 40 | volumes: 41 | mysql-data: 42 | 43 | networks: 44 | default: 45 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Laravel/Lumen Docker Scaffold 2 | 3 | ### **Description** 4 | 5 | This will create a dockerized stack for a Laravel/Lumen application, consisted of the following containers: 6 | - **app**, your PHP application container 7 | 8 | Nginx, PHP7.4 PHP7.4-fpm, Composer, NPM, Node.js v10.x 9 | 10 | - **mysql**, MySQL database container ([mysql](https://hub.docker.com/_/mysql/) official Docker image) 11 | 12 | #### **Directory Structure** 13 | ``` 14 | +-- src 15 | +-- resources 16 | | +-- default 17 | | +-- nginx.conf 18 | | +-- supervisord.conf 19 | | +-- www.conf 20 | +-- .gitignore 21 | +-- Dockerfile 22 | +-- docker-compose.yml 23 | +-- readme.md 24 | ``` 25 | 26 | ### **Setup instructions** 27 | 28 | **Prerequisites:** 29 | 30 | * Depending on your OS, the appropriate version of Docker Community Edition has to be installed on your machine. ([Download Docker Community Edition](https://hub.docker.com/search/?type=edition&offering=community)) 31 | 32 | **Installation steps:** 33 | 34 | 1. Create a new directory in which your OS user has full read/write access and clone this repository inside. 35 | 36 | 2. Create two new textfiles named `db_root_password.txt` and `db_password.txt` and place your preferred database passwords inside: 37 | 38 | ``` 39 | $ echo "myrootpass" > db_root_password.txt 40 | $ echo "myuserpass" > db_password.txt 41 | ``` 42 | 43 | 3. Open a new terminal/CMD, navigate to this repository root (where `docker-compose.yml` exists) and execute the following command: 44 | 45 | ``` 46 | $ docker-compose up -d 47 | ``` 48 | 49 | This will download/build all the required images and start the stack containers. It usually takes a bit of time, so grab a cup of coffee. 50 | 51 | 4. After the whole stack is up, enter the app container and install the framework of your choice: 52 | 53 | **Laravel** 54 | 55 | ``` 56 | $ docker exec -it app bash 57 | $ composer create-project --prefer-dist laravel/laravel . 58 | $ nano .env 59 | $ php artisan migrate --seed 60 | ``` 61 | 62 | **Lumen** 63 | 64 | ``` 65 | $ docker exec -it app bash 66 | $ composer create-project --prefer-dist laravel/lumen . 67 | $ nano .env 68 | $ php artisan migrate --seed 69 | ``` 70 | 71 | 5. That's it! Navigate to [http://localhost](http://localhost) to access the application. 72 | 73 | **Default configuration values** 74 | 75 | The following values should be replaced in your `.env` file if you're willing to keep them as defaults: 76 | 77 | DB_HOST=mysql 78 | DB_PORT=3306 79 | DB_DATABASE=appdb 80 | DB_USERNAME=user 81 | DB_PASSWORD=myuserpass 82 | 83 | -------------------------------------------------------------------------------- /resources/default: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | listen [::]:80 default_server ipv6only=on; 4 | 5 | root /var/www/html/public; 6 | index index.php index.html index.htm; 7 | 8 | # Make site accessible from http://localhost/ 9 | server_name _; 10 | 11 | location / { 12 | try_files $uri $uri/ /index.php?$query_string; 13 | } 14 | 15 | #error_page 404 /404.html; 16 | 17 | # redirect server error pages to the static page /50x.html 18 | # 19 | error_page 500 502 503 504 /50x.html; 20 | location = /50x.html { 21 | root /usr/share/nginx/html; 22 | } 23 | 24 | # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 25 | location ~ \.php$ { 26 | try_files $uri /index.php =404; 27 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 28 | fastcgi_pass 127.0.0.1:9000; 29 | fastcgi_index index.php; 30 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 31 | include fastcgi_params; 32 | } 33 | 34 | # deny access to .htaccess files, if Apache's document root 35 | # concurs with nginx's one 36 | # 37 | location ~ /\.ht { 38 | deny all; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /resources/nginx.conf: -------------------------------------------------------------------------------- 1 | 2 | user nginx; 3 | worker_processes 1; 4 | 5 | error_log /var/log/nginx/error.log warn; 6 | pid /var/run/nginx.pid; 7 | 8 | 9 | events { 10 | worker_connections 1024; 11 | } 12 | 13 | 14 | http { 15 | include /etc/nginx/mime.types; 16 | default_type application/octet-stream; 17 | 18 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 19 | '$status $body_bytes_sent "$http_referer" ' 20 | '"$http_user_agent" "$http_x_forwarded_for"'; 21 | 22 | access_log /var/log/nginx/access.log main; 23 | 24 | client_body_buffer_size 10M; 25 | client_header_buffer_size 10K; 26 | client_max_body_size 10M; 27 | large_client_header_buffers 2 1K; 28 | 29 | sendfile on; 30 | #tcp_nopush on; 31 | 32 | keepalive_timeout 65; 33 | 34 | gzip on; 35 | 36 | # include /etc/nginx/conf.d/*.conf; 37 | include /etc/nginx/sites-enabled/*; 38 | } 39 | -------------------------------------------------------------------------------- /resources/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | 4 | [program:nginx] 5 | command=/usr/sbin/nginx -g "daemon off;" 6 | 7 | [program:php-fpm] 8 | command=/usr/sbin/php-fpm7.4 -F -------------------------------------------------------------------------------- /resources/www.conf: -------------------------------------------------------------------------------- 1 | ; Start a new pool named 'www'. 2 | ; the variable $pool can we used in any directive and will be replaced by the 3 | ; pool name ('www' here) 4 | [www] 5 | 6 | ; Per pool prefix 7 | ; It only applies on the following directives: 8 | ; - 'access.log' 9 | ; - 'slowlog' 10 | ; - 'listen' (unixsocket) 11 | ; - 'chroot' 12 | ; - 'chdir' 13 | ; - 'php_values' 14 | ; - 'php_admin_values' 15 | ; When not set, the global prefix (or /usr) applies instead. 16 | ; Note: This directive can also be relative to the global prefix. 17 | ; Default Value: none 18 | ;prefix = /path/to/pools/$pool 19 | 20 | ; Unix user/group of processes 21 | ; Note: The user is mandatory. If the group is not set, the default user's group 22 | ; will be used. 23 | user = www-data 24 | group = www-data 25 | 26 | ; The address on which to accept FastCGI requests. 27 | ; Valid syntaxes are: 28 | ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on 29 | ; a specific port; 30 | ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on 31 | ; a specific port; 32 | ; 'port' - to listen on a TCP socket to all IPv4 addresses on a 33 | ; specific port; 34 | ; '[::]:port' - to listen on a TCP socket to all addresses 35 | ; (IPv6 and IPv4-mapped) on a specific port; 36 | ; '/path/to/unix/socket' - to listen on a unix socket. 37 | ; Note: This value is mandatory. 38 | ;listen = /run/php/php5.6-fpm.sock 39 | listen = 127.0.0.1:9000 40 | 41 | ; Set listen(2) backlog. 42 | ; Default Value: 65535 (-1 on FreeBSD and OpenBSD) 43 | ;listen.backlog = 65535 44 | 45 | ; Set permissions for unix socket, if one is used. In Linux, read/write 46 | ; permissions must be set in order to allow connections from a web server. Many 47 | ; BSD-derived systems allow connections regardless of permissions. 48 | ; Default Values: user and group are set as the running user 49 | ; mode is set to 0660 50 | listen.owner = www-data 51 | listen.group = www-data 52 | ;listen.mode = 0660 53 | ; When POSIX Access Control Lists are supported you can set them using 54 | ; these options, value is a comma separated list of user/group names. 55 | ; When set, listen.owner and listen.group are ignored 56 | ;listen.acl_users = 57 | ;listen.acl_groups = 58 | 59 | ; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. 60 | ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original 61 | ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address 62 | ; must be separated by a comma. If this value is left blank, connections will be 63 | ; accepted from any ip address. 64 | ; Default Value: any 65 | ;listen.allowed_clients = 127.0.0.1 66 | 67 | ; Specify the nice(2) priority to apply to the pool processes (only if set) 68 | ; The value can vary from -19 (highest priority) to 20 (lower priority) 69 | ; Note: - It will only work if the FPM master process is launched as root 70 | ; - The pool processes will inherit the master process priority 71 | ; unless it specified otherwise 72 | ; Default Value: no set 73 | ; process.priority = -19 74 | 75 | ; Choose how the process manager will control the number of child processes. 76 | ; Possible Values: 77 | ; static - a fixed number (pm.max_children) of child processes; 78 | ; dynamic - the number of child processes are set dynamically based on the 79 | ; following directives. With this process management, there will be 80 | ; always at least 1 children. 81 | ; pm.max_children - the maximum number of children that can 82 | ; be alive at the same time. 83 | ; pm.start_servers - the number of children created on startup. 84 | ; pm.min_spare_servers - the minimum number of children in 'idle' 85 | ; state (waiting to process). If the number 86 | ; of 'idle' processes is less than this 87 | ; number then some children will be created. 88 | ; pm.max_spare_servers - the maximum number of children in 'idle' 89 | ; state (waiting to process). If the number 90 | ; of 'idle' processes is greater than this 91 | ; number then some children will be killed. 92 | ; ondemand - no children are created at startup. Children will be forked when 93 | ; new requests will connect. The following parameter are used: 94 | ; pm.max_children - the maximum number of children that 95 | ; can be alive at the same time. 96 | ; pm.process_idle_timeout - The number of seconds after which 97 | ; an idle process will be killed. 98 | ; Note: This value is mandatory. 99 | pm = dynamic 100 | 101 | ; The number of child processes to be created when pm is set to 'static' and the 102 | ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. 103 | ; This value sets the limit on the number of simultaneous requests that will be 104 | ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. 105 | ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP 106 | ; CGI. The below defaults are based on a server without much resources. Don't 107 | ; forget to tweak pm.* to fit your needs. 108 | ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' 109 | ; Note: This value is mandatory. 110 | pm.max_children = 5 111 | 112 | ; The number of child processes created on startup. 113 | ; Note: Used only when pm is set to 'dynamic' 114 | ; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 115 | pm.start_servers = 2 116 | 117 | ; The desired minimum number of idle server processes. 118 | ; Note: Used only when pm is set to 'dynamic' 119 | ; Note: Mandatory when pm is set to 'dynamic' 120 | pm.min_spare_servers = 1 121 | 122 | ; The desired maximum number of idle server processes. 123 | ; Note: Used only when pm is set to 'dynamic' 124 | ; Note: Mandatory when pm is set to 'dynamic' 125 | pm.max_spare_servers = 3 126 | 127 | ; The number of seconds after which an idle process will be killed. 128 | ; Note: Used only when pm is set to 'ondemand' 129 | ; Default Value: 10s 130 | ;pm.process_idle_timeout = 10s; 131 | 132 | ; The number of requests each child process should execute before respawning. 133 | ; This can be useful to work around memory leaks in 3rd party libraries. For 134 | ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. 135 | ; Default Value: 0 136 | ;pm.max_requests = 500 137 | 138 | ; The URI to view the FPM status page. If this value is not set, no URI will be 139 | ; recognized as a status page. It shows the following informations: 140 | ; pool - the name of the pool; 141 | ; process manager - static, dynamic or ondemand; 142 | ; start time - the date and time FPM has started; 143 | ; start since - number of seconds since FPM has started; 144 | ; accepted conn - the number of request accepted by the pool; 145 | ; listen queue - the number of request in the queue of pending 146 | ; connections (see backlog in listen(2)); 147 | ; max listen queue - the maximum number of requests in the queue 148 | ; of pending connections since FPM has started; 149 | ; listen queue len - the size of the socket queue of pending connections; 150 | ; idle processes - the number of idle processes; 151 | ; active processes - the number of active processes; 152 | ; total processes - the number of idle + active processes; 153 | ; max active processes - the maximum number of active processes since FPM 154 | ; has started; 155 | ; max children reached - number of times, the process limit has been reached, 156 | ; when pm tries to start more children (works only for 157 | ; pm 'dynamic' and 'ondemand'); 158 | ; Value are updated in real time. 159 | ; Example output: 160 | ; pool: www 161 | ; process manager: static 162 | ; start time: 01/Jul/2011:17:53:49 +0200 163 | ; start since: 62636 164 | ; accepted conn: 190460 165 | ; listen queue: 0 166 | ; max listen queue: 1 167 | ; listen queue len: 42 168 | ; idle processes: 4 169 | ; active processes: 11 170 | ; total processes: 15 171 | ; max active processes: 12 172 | ; max children reached: 0 173 | ; 174 | ; By default the status page output is formatted as text/plain. Passing either 175 | ; 'html', 'xml' or 'json' in the query string will return the corresponding 176 | ; output syntax. Example: 177 | ; http://www.foo.bar/status 178 | ; http://www.foo.bar/status?json 179 | ; http://www.foo.bar/status?html 180 | ; http://www.foo.bar/status?xml 181 | ; 182 | ; By default the status page only outputs short status. Passing 'full' in the 183 | ; query string will also return status for each pool process. 184 | ; Example: 185 | ; http://www.foo.bar/status?full 186 | ; http://www.foo.bar/status?json&full 187 | ; http://www.foo.bar/status?html&full 188 | ; http://www.foo.bar/status?xml&full 189 | ; The Full status returns for each process: 190 | ; pid - the PID of the process; 191 | ; state - the state of the process (Idle, Running, ...); 192 | ; start time - the date and time the process has started; 193 | ; start since - the number of seconds since the process has started; 194 | ; requests - the number of requests the process has served; 195 | ; request duration - the duration in µs of the requests; 196 | ; request method - the request method (GET, POST, ...); 197 | ; request URI - the request URI with the query string; 198 | ; content length - the content length of the request (only with POST); 199 | ; user - the user (PHP_AUTH_USER) (or '-' if not set); 200 | ; script - the main script called (or '-' if not set); 201 | ; last request cpu - the %cpu the last request consumed 202 | ; it's always 0 if the process is not in Idle state 203 | ; because CPU calculation is done when the request 204 | ; processing has terminated; 205 | ; last request memory - the max amount of memory the last request consumed 206 | ; it's always 0 if the process is not in Idle state 207 | ; because memory calculation is done when the request 208 | ; processing has terminated; 209 | ; If the process is in Idle state, then informations are related to the 210 | ; last request the process has served. Otherwise informations are related to 211 | ; the current request being served. 212 | ; Example output: 213 | ; ************************ 214 | ; pid: 31330 215 | ; state: Running 216 | ; start time: 01/Jul/2011:17:53:49 +0200 217 | ; start since: 63087 218 | ; requests: 12808 219 | ; request duration: 1250261 220 | ; request method: GET 221 | ; request URI: /test_mem.php?N=10000 222 | ; content length: 0 223 | ; user: - 224 | ; script: /home/fat/web/docs/php/test_mem.php 225 | ; last request cpu: 0.00 226 | ; last request memory: 0 227 | ; 228 | ; Note: There is a real-time FPM status monitoring sample web page available 229 | ; It's available in: /usr/share/php/5.6/fpm/status.html 230 | ; 231 | ; Note: The value must start with a leading slash (/). The value can be 232 | ; anything, but it may not be a good idea to use the .php extension or it 233 | ; may conflict with a real PHP file. 234 | ; Default Value: not set 235 | ;pm.status_path = /status 236 | 237 | ; The ping URI to call the monitoring page of FPM. If this value is not set, no 238 | ; URI will be recognized as a ping page. This could be used to test from outside 239 | ; that FPM is alive and responding, or to 240 | ; - create a graph of FPM availability (rrd or such); 241 | ; - remove a server from a group if it is not responding (load balancing); 242 | ; - trigger alerts for the operating team (24/7). 243 | ; Note: The value must start with a leading slash (/). The value can be 244 | ; anything, but it may not be a good idea to use the .php extension or it 245 | ; may conflict with a real PHP file. 246 | ; Default Value: not set 247 | ;ping.path = /ping 248 | 249 | ; This directive may be used to customize the response of a ping request. The 250 | ; response is formatted as text/plain with a 200 response code. 251 | ; Default Value: pong 252 | ;ping.response = pong 253 | 254 | ; The access log file 255 | ; Default: not set 256 | ;access.log = log/$pool.access.log 257 | 258 | ; The access log format. 259 | ; The following syntax is allowed 260 | ; %%: the '%' character 261 | ; %C: %CPU used by the request 262 | ; it can accept the following format: 263 | ; - %{user}C for user CPU only 264 | ; - %{system}C for system CPU only 265 | ; - %{total}C for user + system CPU (default) 266 | ; %d: time taken to serve the request 267 | ; it can accept the following format: 268 | ; - %{seconds}d (default) 269 | ; - %{miliseconds}d 270 | ; - %{mili}d 271 | ; - %{microseconds}d 272 | ; - %{micro}d 273 | ; %e: an environment variable (same as $_ENV or $_SERVER) 274 | ; it must be associated with embraces to specify the name of the env 275 | ; variable. Some exemples: 276 | ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e 277 | ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e 278 | ; %f: script filename 279 | ; %l: content-length of the request (for POST request only) 280 | ; %m: request method 281 | ; %M: peak of memory allocated by PHP 282 | ; it can accept the following format: 283 | ; - %{bytes}M (default) 284 | ; - %{kilobytes}M 285 | ; - %{kilo}M 286 | ; - %{megabytes}M 287 | ; - %{mega}M 288 | ; %n: pool name 289 | ; %o: output header 290 | ; it must be associated with embraces to specify the name of the header: 291 | ; - %{Content-Type}o 292 | ; - %{X-Powered-By}o 293 | ; - %{Transfert-Encoding}o 294 | ; - .... 295 | ; %p: PID of the child that serviced the request 296 | ; %P: PID of the parent of the child that serviced the request 297 | ; %q: the query string 298 | ; %Q: the '?' character if query string exists 299 | ; %r: the request URI (without the query string, see %q and %Q) 300 | ; %R: remote IP address 301 | ; %s: status (response code) 302 | ; %t: server time the request was received 303 | ; it can accept a strftime(3) format: 304 | ; %d/%b/%Y:%H:%M:%S %z (default) 305 | ; %T: time the log has been written (the request has finished) 306 | ; it can accept a strftime(3) format: 307 | ; %d/%b/%Y:%H:%M:%S %z (default) 308 | ; %u: remote user 309 | ; 310 | ; Default: "%R - %u %t \"%m %r\" %s" 311 | ;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" 312 | 313 | ; The log file for slow requests 314 | ; Default Value: not set 315 | ; Note: slowlog is mandatory if request_slowlog_timeout is set 316 | ;slowlog = log/$pool.log.slow 317 | 318 | ; The timeout for serving a single request after which a PHP backtrace will be 319 | ; dumped to the 'slowlog' file. A value of '0s' means 'off'. 320 | ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 321 | ; Default Value: 0 322 | ;request_slowlog_timeout = 0 323 | 324 | ; The timeout for serving a single request after which the worker process will 325 | ; be killed. This option should be used when the 'max_execution_time' ini option 326 | ; does not stop script execution for some reason. A value of '0' means 'off'. 327 | ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 328 | ; Default Value: 0 329 | ;request_terminate_timeout = 0 330 | 331 | ; Set open file descriptor rlimit. 332 | ; Default Value: system defined value 333 | ;rlimit_files = 1024 334 | 335 | ; Set max core size rlimit. 336 | ; Possible Values: 'unlimited' or an integer greater or equal to 0 337 | ; Default Value: system defined value 338 | ;rlimit_core = 0 339 | 340 | ; Chroot to this directory at the start. This value must be defined as an 341 | ; absolute path. When this value is not set, chroot is not used. 342 | ; Note: you can prefix with '$prefix' to chroot to the pool prefix or one 343 | ; of its subdirectories. If the pool prefix is not set, the global prefix 344 | ; will be used instead. 345 | ; Note: chrooting is a great security feature and should be used whenever 346 | ; possible. However, all PHP paths will be relative to the chroot 347 | ; (error_log, sessions.save_path, ...). 348 | ; Default Value: not set 349 | ;chroot = 350 | 351 | ; Chdir to this directory at the start. 352 | ; Note: relative path can be used. 353 | ; Default Value: current directory or / when chroot 354 | ;chdir = /var/www 355 | 356 | ; Redirect worker stdout and stderr into main error log. If not set, stdout and 357 | ; stderr will be redirected to /dev/null according to FastCGI specs. 358 | ; Note: on highloaded environement, this can cause some delay in the page 359 | ; process time (several ms). 360 | ; Default Value: no 361 | ;catch_workers_output = yes 362 | 363 | ; Clear environment in FPM workers 364 | ; Prevents arbitrary environment variables from reaching FPM worker processes 365 | ; by clearing the environment in workers before env vars specified in this 366 | ; pool configuration are added. 367 | ; Setting to "no" will make all environment variables available to PHP code 368 | ; via getenv(), $_ENV and $_SERVER. 369 | ; Default Value: yes 370 | ;clear_env = no 371 | 372 | ; Limits the extensions of the main script FPM will allow to parse. This can 373 | ; prevent configuration mistakes on the web server side. You should only limit 374 | ; FPM to .php extensions to prevent malicious users to use other extensions to 375 | ; exectute php code. 376 | ; Note: set an empty value to allow all extensions. 377 | ; Default Value: .php 378 | ;security.limit_extensions = .php .php3 .php4 .php5 379 | 380 | ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from 381 | ; the current environment. 382 | ; Default Value: clean env 383 | ;env[HOSTNAME] = $HOSTNAME 384 | ;env[PATH] = /usr/local/bin:/usr/bin:/bin 385 | ;env[TMP] = /tmp 386 | ;env[TMPDIR] = /tmp 387 | ;env[TEMP] = /tmp 388 | 389 | ; Additional php.ini defines, specific to this pool of workers. These settings 390 | ; overwrite the values previously defined in the php.ini. The directives are the 391 | ; same as the PHP SAPI: 392 | ; php_value/php_flag - you can set classic ini defines which can 393 | ; be overwritten from PHP call 'ini_set'. 394 | ; php_admin_value/php_admin_flag - these directives won't be overwritten by 395 | ; PHP call 'ini_set' 396 | ; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. 397 | 398 | ; Defining 'extension' will load the corresponding shared extension from 399 | ; extension_dir. Defining 'disable_functions' or 'disable_classes' will not 400 | ; overwrite previously defined php.ini values, but will append the new value 401 | ; instead. 402 | 403 | ; Note: path INI options can be relative and will be expanded with the prefix 404 | ; (pool, global or /usr) 405 | 406 | ; Default Value: nothing is defined by default except the values in php.ini and 407 | ; specified at startup with the -d argument 408 | ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com 409 | ;php_flag[display_errors] = off 410 | ;php_admin_value[error_log] = /var/log/fpm-php.www.log 411 | ;php_admin_flag[log_errors] = on 412 | ;php_admin_value[memory_limit] = 32M 413 | --------------------------------------------------------------------------------