├── compose ├── workspace │ ├── Dockerfile │ └── run.sh ├── mysql │ └── my.cnf ├── php │ ├── composer │ │ └── Dockerfile │ ├── xdebug.ini │ ├── Dockerfile │ └── www.conf └── nginx │ ├── Dockerfile │ ├── default.conf │ └── nginx.conf ├── .env.example ├── .github └── workflows │ └── docker-publish.yml ├── source └── README.md ├── README.md ├── docker-compose.yml └── .gitignore /compose/workspace/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.4-fpm-alpine 2 | 3 | COPY ./compose/workspace/run.sh /tmp 4 | 5 | WORKDIR /var/www/html 6 | 7 | ENTRYPOINT ["/tmp/run.sh"] -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | 2 | # MYSQL Password 3 | DB_ROOT_PASSWORD=secret 4 | # Connection DB 5 | DB_CONNECTION=mysql 6 | DB_HOST=127.0.0.1 7 | DB_PORT=3306 8 | DB_DATABASE=database 9 | DB_USERNAME=username 10 | DB_PASSWORD=secret -------------------------------------------------------------------------------- /compose/mysql/my.cnf: -------------------------------------------------------------------------------- 1 | [mysqld] 2 | general_log = 1 3 | general_log_file = /var/lib/mysql/general.log 4 | innodb_force_recovery = 1 5 | bind-address = 0.0.0.0 6 | socket=/var/run/mysqld/mysqld.sock 7 | 8 | [client] 9 | socket=/var/run/mysqld/mysqld.sock 10 | -------------------------------------------------------------------------------- /compose/php/composer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM composer:latest 2 | 3 | # ADD and set Group 4 | RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel 5 | 6 | # Set Profile to All Files 7 | RUN chown -R laravel:laravel /var/www/html 8 | 9 | # Run in work space 10 | WORKDIR /var/www/html -------------------------------------------------------------------------------- /compose/php/xdebug.ini: -------------------------------------------------------------------------------- 1 | zend_extension=xdebug.so 2 | xdebug.remote_enable=1 3 | xdebug.remote_autostart=1 4 | ;xdebug.remote_handler=dbgp 5 | #To activate XDEBUG remote host must be your local IP address. 6 | #This is not Docker machine ip address, but the ones running Phpstorm 7 | xdebug.remote_host=host.docker.internal 8 | xdebug.remote_port=9001 9 | -------------------------------------------------------------------------------- /compose/nginx/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM nginx:stable-alpine 2 | 3 | # ADD Custom Config 4 | ADD ./compose/nginx/nginx.conf /etc/nginx/nginx.conf 5 | ADD ./compose/nginx/default.conf /etc/nginx/conf.d/default.conf 6 | 7 | # Make Directory - Workspace 8 | RUN mkdir -p /var/www/html 9 | 10 | # ADD and set Group 11 | RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel 12 | 13 | # Set Group to Workspace 14 | RUN chown laravel:laravel /var/www/html -------------------------------------------------------------------------------- /compose/nginx/default.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 80; 3 | index index.php index.html; 4 | server_name localhost; 5 | root /var/www/html/public; 6 | 7 | location / { 8 | try_files $uri $uri/ /index.php?$query_string; 9 | } 10 | 11 | location ~ \.php$ { 12 | try_files $uri =404; 13 | fastcgi_split_path_info ^(.+\.php)(/.+)$; 14 | fastcgi_pass php:9000; 15 | fastcgi_index index.php; 16 | include fastcgi_params; 17 | fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 18 | fastcgi_param PATH_INFO $fastcgi_path_info; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /compose/workspace/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # cp .env.example .env 4 | 5 | php -v 6 | 7 | # php artisan 8 | # php /var/www/html/artisan migrate:fresh --seed 9 | 10 | # composer install 11 | 12 | # docker-compose run --rm npm install 13 | 14 | # docker-compose run --rm artisan clear:data 15 | # docker-compose run --rm artisan cache:clear 16 | # docker-compose run --rm artisan view:clear 17 | # docker-compose run --rm artisan route:clear 18 | # docker-compose run --rm artisan clear-compiled 19 | # docker-compose run --rm artisan config:cache 20 | # docker-compose run --rm artisan key:generate 21 | # docker-compose run --rm artisan storage:link 22 | # docker-compose run --rm artisan migrate --seed 23 | # docker-compose run --rm artisan passport:install -------------------------------------------------------------------------------- /.github/workflows/docker-publish.yml: -------------------------------------------------------------------------------- 1 | name: Docker 2 | 3 | on: 4 | push: 5 | # Publish `main` as Docker `latest` image. 6 | branches: 7 | - main 8 | 9 | # Publish `v1.2.3` tags as releases. 10 | tags: 11 | - v* 12 | 13 | # Run tests for any PRs. 14 | pull_request: 15 | 16 | env: 17 | # TODO: Change variable to your image's name. 18 | IMAGE_NAME: image 19 | 20 | jobs: 21 | check: 22 | runs-on: ubuntu-latest 23 | 24 | steps: 25 | - uses: actions/checkout@v2 26 | 27 | - name: Run tests 28 | run: | 29 | if [ -f docker-compose.yml ]; then 30 | docker-compose --file docker-compose.yml build 31 | else 32 | docker build . --file Dockerfile 33 | fi 34 | -------------------------------------------------------------------------------- /compose/nginx/nginx.conf: -------------------------------------------------------------------------------- 1 | user laravel; 2 | worker_processes auto; 3 | 4 | error_log /var/log/nginx/error.log warn; 5 | pid /var/run/nginx.pid; 6 | 7 | events { 8 | worker_connections 1024; 9 | } 10 | 11 | http { 12 | include /etc/nginx/mime.types; 13 | default_type application/octet-stream; 14 | 15 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 16 | '$status $body_bytes_sent "$http_referer" ' 17 | '"$http_user_agent" "$http_x_forwarded_for"'; 18 | 19 | access_log /var/log/nginx/access.log main; 20 | 21 | sendfile on; 22 | #tcp_nopush on; 23 | 24 | keepalive_timeout 65; 25 | 26 | #gzip on; 27 | 28 | include /etc/nginx/conf.d/*.conf; 29 | } 30 | -------------------------------------------------------------------------------- /compose/php/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.4-fpm-alpine 2 | 3 | # Copy File Config 4 | ADD ./compose/php/www.conf /usr/local/etc/php-fpm.d/www.conf 5 | 6 | # ADD and set Group 7 | RUN addgroup -g 1000 laravel && adduser -G laravel -g laravel -s /bin/sh -D laravel 8 | 9 | # Create folder to run 10 | RUN mkdir -p /var/www/html 11 | 12 | # Set Profile 13 | RUN chown laravel:laravel /var/www/html 14 | 15 | # Work in the specific space 16 | WORKDIR /var/www/html 17 | 18 | # Install dependencies 19 | RUN apk add --no-cache \ 20 | freetype \ 21 | libpng \ 22 | libjpeg-turbo \ 23 | freetype-dev \ 24 | libpng-dev \ 25 | libjpeg-turbo-dev 26 | 27 | RUN docker-php-ext-configure gd \ 28 | --with-freetype \ 29 | --with-jpeg 30 | 31 | RUN NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \ 32 | docker-php-ext-install -j${NPROC} gd 33 | 34 | RUN apk del --no-cache freetype-dev libpng-dev libjpeg-turbo-dev 35 | 36 | RUN docker-php-ext-install pdo pdo_mysql 37 | 38 | # install and enable xdebug 39 | RUN apk add --no-cache $PHPIZE_DEPS \ 40 | && pecl install xdebug-2.9.7 \ 41 | && docker-php-ext-enable xdebug 42 | -------------------------------------------------------------------------------- /source/README.md: -------------------------------------------------------------------------------- 1 | # This is where your Laravel app goes 2 | 3 | Add your Laravel project here (or create a new blank one). 4 | 5 | --- 6 | 7 | **Note:** IF exist problems generate the project delete this README.md 8 | 9 | --- 10 | 11 | ## Remember 12 | 13 | The configuration of the database **must be the same on both sides** . 14 | 15 | ```dotenv 16 | # .env 17 | DB_CONNECTION=mysql 18 | DB_HOST=127.0.0.1 19 | DB_PORT=3306 20 | DB_DATABASE=db_name 21 | DB_USERNAME=db_user 22 | DB_PASSWORD=db_password 23 | DB_ROOT_PASSWORD=secret 24 | ``` 25 | 26 | ```dotenv 27 | # source/.env 28 | DB_CONNECTION=mysql 29 | DB_HOST=mysql 30 | DB_PORT=3306 31 | DB_DATABASE=db_name 32 | DB_USERNAME=db_user 33 | DB_PASSWORD=db_password 34 | ``` 35 | 36 | The only change is the `DB_HOST` in the `source/.env` where is called to the container of `mysql`: 37 | 38 | ```dotenv 39 | # source/.env 40 | DB_HOST=mysql 41 | ``` 42 | 43 | --- 44 | 45 | ## Help 46 | 47 | A little help to create the project: 48 | 49 | ### Make a new Project 50 | 51 | ```sh 52 | docker-compose run --rm composer create-project laravel/laravel . 53 | ``` 54 | 55 | ### Copy Environment 56 | 57 | ```sh 58 | cp .env.example .env 59 | ``` 60 | 61 | --- 62 | 63 | ### Install Libraries from Composer 64 | 65 | ```sh 66 | docker-compose run --rm composer install 67 | ``` 68 | 69 | ### Install Libraries from Node 70 | 71 | ```sh 72 | docker-compose run --rm npm install 73 | ``` 74 | 75 | ### Clear/Clean the project 76 | 77 | ```sh 78 | docker-compose run --rm artisan clear:data 79 | docker-compose run --rm artisan cache:clear 80 | docker-compose run --rm artisan view:clear 81 | docker-compose run --rm artisan route:clear 82 | docker-compose run --rm artisan clear-compiled 83 | docker-compose run --rm artisan config:cache 84 | docker-compose run --rm artisan storage:link 85 | ``` 86 | 87 | ### Generate Keys 88 | 89 | ```sh 90 | docker-compose run --rm artisan key:generate 91 | ``` 92 | 93 | ### Run migrations 94 | 95 | ```sh 96 | docker-compose run --rm artisan migrate --seed 97 | ``` 98 | 99 | ### Run Passport (Optional) 100 | 101 | ```sh 102 | docker-compose run --rm artisan passport:install 103 | ``` 104 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Docker - Laravel 2 | 3 | ![Docker](https://github.com/supermavster/docker-laravel-8/workflows/Docker/badge.svg) 4 | 5 | ![Image](https://repository-images.githubusercontent.com/309769351/1c0dfc80-1def-11eb-9e5c-641da3e3c9b4) 6 | 7 | A pretty simplified Docker Compose workflow that sets up a LEMP (Linux, NGINX, MySQL, PHP) network of containers for local Laravel development. 8 | 9 | ## Ports 10 | 11 | Ports used in the project: 12 | | Software | Port | 13 | |-------------- | -------------- | 14 | | **nginx** | 8080 | 15 | | **phpmyadmin** | 8081 | 16 | | **mysql** | 3306 | 17 | | **php** | 9000 | 18 | | **xdebug** | 9001 | 19 | | **redis** | 6379 | 20 | 21 | ## Use 22 | 23 | To get started, make sure you have [Docker installed](https://docs.docker.com/) on your system and [Docker Compose](https://docs.docker.com/compose/install/), and then clone this repository. 24 | 25 | 1. Clone this project: 26 | 27 | ```sh 28 | git clone https://github.com/supermavster/docker-laravel-8.git 29 | ``` 30 | 31 | 2. Inside the folder `docker-laravel-8` and Generate your own `.env` to docker compose with the next command: 32 | 33 | ```sh 34 | cp .env.example .env 35 | ``` 36 | 37 | 3. You need **Create** or **Put** your laravel project in the folder source; to create follow the next instructions [Here](source/README.md). 38 | 39 | 4. Build the project whit the next commands: 40 | 41 | ```sh 42 | docker-compose up --build 43 | ``` 44 | 45 | --- 46 | 47 | ## Remember 48 | 49 | The configuration of the database **must be the same on both sides** . 50 | 51 | ```dotenv 52 | # .env 53 | DB_CONNECTION=mysql 54 | DB_HOST=127.0.0.1 55 | DB_PORT=3306 56 | DB_DATABASE=db_name 57 | DB_USERNAME=db_user 58 | DB_PASSWORD=db_password 59 | DB_ROOT_PASSWORD=secret 60 | ``` 61 | 62 | ```dotenv 63 | # source/.env 64 | DB_CONNECTION=mysql 65 | DB_HOST=mysql 66 | DB_PORT=3306 67 | DB_DATABASE=db_name 68 | DB_USERNAME=db_user 69 | DB_PASSWORD=db_password 70 | ``` 71 | 72 | The only change is the `DB_HOST` in the `source/.env` where is called to the container of `mysql`: 73 | 74 | ```dotenv 75 | # source/.env 76 | DB_HOST=mysql 77 | ``` 78 | 79 | --- 80 | 81 | ## Special Cases 82 | 83 | To Down and remove the volumes we use the next command: 84 | 85 | ```sh 86 | docker-compose down -v 87 | ``` 88 | 89 | Update Composer: 90 | 91 | ```sh 92 | docker-compose run --rm composer update 93 | ``` 94 | 95 | Run compiler (Webpack.mix.js) or Show the view compiler in node: 96 | 97 | ```sh 98 | docker-compose run --rm npm run dev 99 | ``` 100 | 101 | Run all migrations: 102 | 103 | ```sh 104 | docker-compose run --rm artisan migrate 105 | ``` 106 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | #Docker Networks 4 | networks: 5 | laravel: 6 | driver: bridge 7 | 8 | #Volumes 9 | volumes: 10 | dbdata: 11 | driver: local 12 | 13 | # Workflow 14 | services: 15 | nginx: 16 | build: 17 | context: . 18 | dockerfile: ./compose/nginx/Dockerfile 19 | container_name: nginx 20 | ports: 21 | - "8080:80" 22 | # Port for xdebug (ensure this matches the remote_port in the xdebug.ini) 23 | - "9001:9001" 24 | volumes: 25 | - ./source:/var/www/html:delegated 26 | depends_on: 27 | - php 28 | - mysql 29 | networks: 30 | - laravel 31 | 32 | mysql: 33 | image: mysql:5.7.29 34 | container_name: mysql 35 | restart: unless-stopped 36 | tty: true 37 | ports: 38 | - "3306:3306" 39 | environment: 40 | MYSQL_DATABASE: ${DB_DATABASE} 41 | MYSQL_USER: ${DB_USERNAME} 42 | MYSQL_PASSWORD: ${DB_PASSWORD} 43 | MYSQL_ROOT_PASSWORD: secret 44 | SERVICE_TAGS: dev 45 | SERVICE_NAME: mysql 46 | volumes: 47 | - ./compose/mysql/my.cnf:/etc/mysql/my.cnf 48 | - dbdata:/var/lib/mysql/ 49 | networks: 50 | - laravel 51 | 52 | redis: 53 | image: "redis:alpine" 54 | container_name: redis 55 | restart: unless-stopped 56 | ports: 57 | - "6379:6379" 58 | networks: 59 | - laravel 60 | 61 | phpmyadmin: 62 | image: phpmyadmin/phpmyadmin 63 | container_name: phpmyadmin 64 | environment: 65 | MYSQL_ROOT_PASSWORD: secret 66 | PMA_HOST: mysql 67 | PMA_PORT: 3306 68 | PMA_ARBITRARY: 1 69 | restart: always 70 | depends_on: 71 | - mysql 72 | ports: 73 | - "8081:80" 74 | volumes: 75 | - /sessions 76 | networks: 77 | - laravel 78 | links: 79 | - mysql 80 | 81 | php: 82 | build: 83 | context: . 84 | dockerfile: ./compose/php/Dockerfile 85 | container_name: php 86 | volumes: 87 | - ./source:/var/www/html:delegated 88 | # Enable xdebug 89 | - ./compose/php/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 90 | ports: 91 | - "9000:9000" 92 | networks: 93 | - laravel 94 | 95 | composer: 96 | build: 97 | context: . 98 | dockerfile: ./compose/php/composer/Dockerfile 99 | container_name: composer 100 | volumes: 101 | - ./source:/var/www/html 102 | working_dir: /var/www/html 103 | depends_on: 104 | - php 105 | user: laravel 106 | networks: 107 | - laravel 108 | entrypoint: ['composer', '--ignore-platform-reqs'] 109 | 110 | npm: 111 | image: node:15.0.1 112 | container_name: npm 113 | volumes: 114 | - ./source:/var/www/html 115 | working_dir: /var/www/html 116 | entrypoint: ['npm'] 117 | 118 | artisan: 119 | build: 120 | context: . 121 | dockerfile: ./compose/php/Dockerfile 122 | container_name: artisan 123 | volumes: 124 | - ./source:/var/www/html:delegated 125 | depends_on: 126 | - mysql 127 | working_dir: /var/www/html 128 | user: laravel 129 | entrypoint: ['php', '/var/www/html/artisan'] 130 | networks: 131 | - laravel 132 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/laravel,composer,visualstudio,visualstudiocode,virtualenv,dotenv,node 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=laravel,composer,visualstudio,visualstudiocode,virtualenv,dotenv,node 4 | 5 | ### Composer ### 6 | composer.phar 7 | /vendor/ 8 | 9 | # Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control 10 | # You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file 11 | # composer.lock 12 | 13 | ### dotenv ### 14 | .env 15 | 16 | ### Laravel ### 17 | node_modules/ 18 | npm-debug.log 19 | yarn-error.log 20 | 21 | # Laravel 4 specific 22 | bootstrap/compiled.php 23 | app/storage/ 24 | 25 | # Laravel 5 & Lumen specific 26 | public/storage 27 | public/hot 28 | 29 | # Laravel 5 & Lumen specific with changed public path 30 | public_html/storage 31 | public_html/hot 32 | 33 | storage/*.key 34 | Homestead.yaml 35 | Homestead.json 36 | /.vagrant 37 | .phpunit.result.cache 38 | 39 | # Laravel IDE helper 40 | *.meta.* 41 | _ide_* 42 | 43 | ### Node ### 44 | # Logs 45 | logs 46 | *.log 47 | npm-debug.log* 48 | yarn-debug.log* 49 | yarn-error.log* 50 | lerna-debug.log* 51 | 52 | # Diagnostic reports (https://nodejs.org/api/report.html) 53 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 54 | 55 | # Runtime data 56 | pids 57 | *.pid 58 | *.seed 59 | *.pid.lock 60 | 61 | # Directory for instrumented libs generated by jscoverage/JSCover 62 | lib-cov 63 | 64 | # Coverage directory used by tools like istanbul 65 | coverage 66 | *.lcov 67 | 68 | # nyc test coverage 69 | .nyc_output 70 | 71 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 72 | .grunt 73 | 74 | # Bower dependency directory (https://bower.io/) 75 | bower_components 76 | 77 | # node-waf configuration 78 | .lock-wscript 79 | 80 | # Compiled binary addons (https://nodejs.org/api/addons.html) 81 | build/Release 82 | 83 | # Dependency directories 84 | jspm_packages/ 85 | 86 | # TypeScript v1 declaration files 87 | typings/ 88 | 89 | # TypeScript cache 90 | *.tsbuildinfo 91 | 92 | # Optional npm cache directory 93 | .npm 94 | 95 | # Optional eslint cache 96 | .eslintcache 97 | 98 | # Microbundle cache 99 | .rpt2_cache/ 100 | .rts2_cache_cjs/ 101 | .rts2_cache_es/ 102 | .rts2_cache_umd/ 103 | 104 | # Optional REPL history 105 | .node_repl_history 106 | 107 | # Output of 'npm pack' 108 | *.tgz 109 | 110 | # Yarn Integrity file 111 | .yarn-integrity 112 | 113 | # dotenv environment variables file 114 | .env.test 115 | .env*.local 116 | 117 | # parcel-bundler cache (https://parceljs.org/) 118 | .cache 119 | .parcel-cache 120 | 121 | # Next.js build output 122 | .next 123 | 124 | # Nuxt.js build / generate output 125 | .nuxt 126 | dist 127 | 128 | # Gatsby files 129 | .cache/ 130 | # Comment in the public line in if your project uses Gatsby and not Next.js 131 | # https://nextjs.org/blog/next-9-1#public-directory-support 132 | # public 133 | 134 | # vuepress build output 135 | .vuepress/dist 136 | 137 | # Serverless directories 138 | .serverless/ 139 | 140 | # FuseBox cache 141 | .fusebox/ 142 | 143 | # DynamoDB Local files 144 | .dynamodb/ 145 | 146 | # TernJS port file 147 | .tern-port 148 | 149 | # Stores VSCode versions used for testing VSCode extensions 150 | .vscode-test 151 | 152 | ### VirtualEnv ### 153 | # Virtualenv 154 | # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/ 155 | .Python 156 | [Bb]in 157 | [Ii]nclude 158 | [Ll]ib 159 | [Ll]ib64 160 | [Ll]ocal 161 | [Ss]cripts 162 | pyvenv.cfg 163 | .venv 164 | pip-selfcheck.json 165 | 166 | ### VisualStudioCode ### 167 | .vscode/* 168 | !.vscode/settings.json 169 | !.vscode/tasks.json 170 | !.vscode/launch.json 171 | !.vscode/extensions.json 172 | *.code-workspace 173 | 174 | ### VisualStudioCode Patch ### 175 | # Ignore all local history of files 176 | .history 177 | .ionide 178 | 179 | ### VisualStudio ### 180 | ## Ignore Visual Studio temporary files, build results, and 181 | ## files generated by popular Visual Studio add-ons. 182 | ## 183 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 184 | 185 | # User-specific files 186 | *.rsuser 187 | *.suo 188 | *.user 189 | *.userosscache 190 | *.sln.docstates 191 | 192 | # User-specific files (MonoDevelop/Xamarin Studio) 193 | *.userprefs 194 | 195 | # Mono auto generated files 196 | mono_crash.* 197 | 198 | # Build results 199 | [Dd]ebug/ 200 | [Dd]ebugPublic/ 201 | [Rr]elease/ 202 | [Rr]eleases/ 203 | x64/ 204 | x86/ 205 | [Aa][Rr][Mm]/ 206 | [Aa][Rr][Mm]64/ 207 | bld/ 208 | [Bb]in/ 209 | [Oo]bj/ 210 | [Ll]og/ 211 | [Ll]ogs/ 212 | 213 | # Visual Studio 2015/2017 cache/options directory 214 | .vs/ 215 | # Uncomment if you have tasks that create the project's static files in wwwroot 216 | #wwwroot/ 217 | 218 | # Visual Studio 2017 auto generated files 219 | Generated\ Files/ 220 | 221 | # MSTest test Results 222 | [Tt]est[Rr]esult*/ 223 | [Bb]uild[Ll]og.* 224 | 225 | # NUnit 226 | *.VisualState.xml 227 | TestResult.xml 228 | nunit-*.xml 229 | 230 | # Build Results of an ATL Project 231 | [Dd]ebugPS/ 232 | [Rr]eleasePS/ 233 | dlldata.c 234 | 235 | # Benchmark Results 236 | BenchmarkDotNet.Artifacts/ 237 | 238 | # .NET Core 239 | project.lock.json 240 | project.fragment.lock.json 241 | artifacts/ 242 | 243 | # StyleCop 244 | StyleCopReport.xml 245 | 246 | # Files built by Visual Studio 247 | *_i.c 248 | *_p.c 249 | *_h.h 250 | *.ilk 251 | *.meta 252 | *.obj 253 | *.iobj 254 | *.pch 255 | *.pdb 256 | *.ipdb 257 | *.pgc 258 | *.pgd 259 | *.rsp 260 | *.sbr 261 | *.tlb 262 | *.tli 263 | *.tlh 264 | *.tmp 265 | *.tmp_proj 266 | *_wpftmp.csproj 267 | *.vspscc 268 | *.vssscc 269 | .builds 270 | *.pidb 271 | *.svclog 272 | *.scc 273 | 274 | # Chutzpah Test files 275 | _Chutzpah* 276 | 277 | # Visual C++ cache files 278 | ipch/ 279 | *.aps 280 | *.ncb 281 | *.opendb 282 | *.opensdf 283 | *.sdf 284 | *.cachefile 285 | *.VC.db 286 | *.VC.VC.opendb 287 | 288 | # Visual Studio profiler 289 | *.psess 290 | *.vsp 291 | *.vspx 292 | *.sap 293 | 294 | # Visual Studio Trace Files 295 | *.e2e 296 | 297 | # TFS 2012 Local Workspace 298 | $tf/ 299 | 300 | # Guidance Automation Toolkit 301 | *.gpState 302 | 303 | # ReSharper is a .NET coding add-in 304 | _ReSharper*/ 305 | *.[Rr]e[Ss]harper 306 | *.DotSettings.user 307 | 308 | # TeamCity is a build add-in 309 | _TeamCity* 310 | 311 | # DotCover is a Code Coverage Tool 312 | *.dotCover 313 | 314 | # AxoCover is a Code Coverage Tool 315 | .axoCover/* 316 | !.axoCover/settings.json 317 | 318 | # Coverlet is a free, cross platform Code Coverage Tool 319 | coverage*[.json, .xml, .info] 320 | 321 | # Visual Studio code coverage results 322 | *.coverage 323 | *.coveragexml 324 | 325 | # NCrunch 326 | _NCrunch_* 327 | .*crunch*.local.xml 328 | nCrunchTemp_* 329 | 330 | # MightyMoose 331 | *.mm.* 332 | AutoTest.Net/ 333 | 334 | # Web workbench (sass) 335 | .sass-cache/ 336 | 337 | # Installshield output folder 338 | [Ee]xpress/ 339 | 340 | # DocProject is a documentation generator add-in 341 | DocProject/buildhelp/ 342 | DocProject/Help/*.HxT 343 | DocProject/Help/*.HxC 344 | DocProject/Help/*.hhc 345 | DocProject/Help/*.hhk 346 | DocProject/Help/*.hhp 347 | DocProject/Help/Html2 348 | DocProject/Help/html 349 | 350 | # Click-Once directory 351 | publish/ 352 | 353 | # Publish Web Output 354 | *.[Pp]ublish.xml 355 | *.azurePubxml 356 | # Note: Comment the next line if you want to checkin your web deploy settings, 357 | # but database connection strings (with potential passwords) will be unencrypted 358 | *.pubxml 359 | *.publishproj 360 | 361 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 362 | # checkin your Azure Web App publish settings, but sensitive information contained 363 | # in these scripts will be unencrypted 364 | PublishScripts/ 365 | 366 | # NuGet Packages 367 | *.nupkg 368 | # NuGet Symbol Packages 369 | *.snupkg 370 | # The packages folder can be ignored because of Package Restore 371 | **/[Pp]ackages/* 372 | # except build/, which is used as an MSBuild target. 373 | !**/[Pp]ackages/build/ 374 | # Uncomment if necessary however generally it will be regenerated when needed 375 | #!**/[Pp]ackages/repositories.config 376 | # NuGet v3's project.json files produces more ignorable files 377 | *.nuget.props 378 | *.nuget.targets 379 | 380 | # Microsoft Azure Build Output 381 | csx/ 382 | *.build.csdef 383 | 384 | # Microsoft Azure Emulator 385 | ecf/ 386 | rcf/ 387 | 388 | # Windows Store app package directories and files 389 | AppPackages/ 390 | BundleArtifacts/ 391 | Package.StoreAssociation.xml 392 | _pkginfo.txt 393 | *.appx 394 | *.appxbundle 395 | *.appxupload 396 | 397 | # Visual Studio cache files 398 | # files ending in .cache can be ignored 399 | *.[Cc]ache 400 | # but keep track of directories ending in .cache 401 | !?*.[Cc]ache/ 402 | 403 | # Others 404 | ClientBin/ 405 | ~$* 406 | *~ 407 | *.dbmdl 408 | *.dbproj.schemaview 409 | *.jfm 410 | *.pfx 411 | *.publishsettings 412 | orleans.codegen.cs 413 | 414 | # Including strong name files can present a security risk 415 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 416 | #*.snk 417 | 418 | # Since there are multiple workflows, uncomment next line to ignore bower_components 419 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 420 | #bower_components/ 421 | 422 | # RIA/Silverlight projects 423 | Generated_Code/ 424 | 425 | # Backup & report files from converting an old project file 426 | # to a newer Visual Studio version. Backup files are not needed, 427 | # because we have git ;-) 428 | _UpgradeReport_Files/ 429 | Backup*/ 430 | UpgradeLog*.XML 431 | UpgradeLog*.htm 432 | ServiceFabricBackup/ 433 | *.rptproj.bak 434 | 435 | # SQL Server files 436 | *.mdf 437 | *.ldf 438 | *.ndf 439 | 440 | # Business Intelligence projects 441 | *.rdl.data 442 | *.bim.layout 443 | *.bim_*.settings 444 | *.rptproj.rsuser 445 | *- [Bb]ackup.rdl 446 | *- [Bb]ackup ([0-9]).rdl 447 | *- [Bb]ackup ([0-9][0-9]).rdl 448 | 449 | # Microsoft Fakes 450 | FakesAssemblies/ 451 | 452 | # GhostDoc plugin setting file 453 | *.GhostDoc.xml 454 | 455 | # Node.js Tools for Visual Studio 456 | .ntvs_analysis.dat 457 | 458 | # Visual Studio 6 build log 459 | *.plg 460 | 461 | # Visual Studio 6 workspace options file 462 | *.opt 463 | 464 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 465 | *.vbw 466 | 467 | # Visual Studio LightSwitch build output 468 | **/*.HTMLClient/GeneratedArtifacts 469 | **/*.DesktopClient/GeneratedArtifacts 470 | **/*.DesktopClient/ModelManifest.xml 471 | **/*.Server/GeneratedArtifacts 472 | **/*.Server/ModelManifest.xml 473 | _Pvt_Extensions 474 | 475 | # Paket dependency manager 476 | .paket/paket.exe 477 | paket-files/ 478 | 479 | # FAKE - F# Make 480 | .fake/ 481 | 482 | # CodeRush personal settings 483 | .cr/personal 484 | 485 | # Python Tools for Visual Studio (PTVS) 486 | __pycache__/ 487 | *.pyc 488 | 489 | # Cake - Uncomment if you are using it 490 | # tools/** 491 | # !tools/packages.config 492 | 493 | # Tabs Studio 494 | *.tss 495 | 496 | # Telerik's JustMock configuration file 497 | *.jmconfig 498 | 499 | # BizTalk build output 500 | *.btp.cs 501 | *.btm.cs 502 | *.odx.cs 503 | *.xsd.cs 504 | 505 | # OpenCover UI analysis results 506 | OpenCover/ 507 | 508 | # Azure Stream Analytics local run output 509 | ASALocalRun/ 510 | 511 | # MSBuild Binary and Structured Log 512 | *.binlog 513 | 514 | # NVidia Nsight GPU debugger configuration file 515 | *.nvuser 516 | 517 | # MFractors (Xamarin productivity tool) working folder 518 | .mfractor/ 519 | 520 | # Local History for Visual Studio 521 | .localhistory/ 522 | 523 | # BeatPulse healthcheck temp database 524 | healthchecksdb 525 | 526 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 527 | MigrationBackup/ 528 | 529 | # Ionide (cross platform F# VS Code tools) working folder 530 | .ionide/ 531 | 532 | # End of https://www.toptal.com/developers/gitignore/api/laravel,composer,visualstudio,visualstudiocode,virtualenv,dotenv,node -------------------------------------------------------------------------------- /compose/php/www.conf: -------------------------------------------------------------------------------- 1 | ; Start a new pool named 'www'. 2 | ; the variable $pool can be 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 NONE) 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 = laravel 24 | group = laravel 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 addresses 33 | ; (IPv6 and IPv4-mapped) on a specific port; 34 | ; '/path/to/unix/socket' - to listen on a unix socket. 35 | ; Note: This value is mandatory. 36 | listen = 127.0.0.1:9000 37 | 38 | ; Set listen(2) backlog. 39 | ; Default Value: 511 (-1 on FreeBSD and OpenBSD) 40 | ;listen.backlog = 511 41 | 42 | ; Set permissions for unix socket, if one is used. In Linux, read/write 43 | ; permissions must be set in order to allow connections from a web server. Many 44 | ; BSD-derived systems allow connections regardless of permissions. The owner 45 | ; and group can be specified either by name or by their numeric IDs. 46 | ; Default Values: user and group are set as the running user 47 | ; mode is set to 0660 48 | ;listen.owner = www-data 49 | ;listen.group = www-data 50 | ;listen.mode = 0660 51 | ; When POSIX Access Control Lists are supported you can set them using 52 | ; these options, value is a comma separated list of user/group names. 53 | ; When set, listen.owner and listen.group are ignored 54 | ;listen.acl_users = 55 | ;listen.acl_groups = 56 | 57 | ; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect. 58 | ; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original 59 | ; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address 60 | ; must be separated by a comma. If this value is left blank, connections will be 61 | ; accepted from any ip address. 62 | ; Default Value: any 63 | ;listen.allowed_clients = 127.0.0.1 64 | 65 | ; Specify the nice(2) priority to apply to the pool processes (only if set) 66 | ; The value can vary from -19 (highest priority) to 20 (lower priority) 67 | ; Note: - It will only work if the FPM master process is launched as root 68 | ; - The pool processes will inherit the master process priority 69 | ; unless it specified otherwise 70 | ; Default Value: no set 71 | ; process.priority = -19 72 | 73 | ; Set the process dumpable flag (PR_SET_DUMPABLE prctl) even if the process user 74 | ; or group is differrent than the master process user. It allows to create process 75 | ; core dump and ptrace the process for the pool user. 76 | ; Default Value: no 77 | ; process.dumpable = yes 78 | 79 | ; Choose how the process manager will control the number of child processes. 80 | ; Possible Values: 81 | ; static - a fixed number (pm.max_children) of child processes; 82 | ; dynamic - the number of child processes are set dynamically based on the 83 | ; following directives. With this process management, there will be 84 | ; always at least 1 children. 85 | ; pm.max_children - the maximum number of children that can 86 | ; be alive at the same time. 87 | ; pm.start_servers - the number of children created on startup. 88 | ; pm.min_spare_servers - the minimum number of children in 'idle' 89 | ; state (waiting to process). If the number 90 | ; of 'idle' processes is less than this 91 | ; number then some children will be created. 92 | ; pm.max_spare_servers - the maximum number of children in 'idle' 93 | ; state (waiting to process). If the number 94 | ; of 'idle' processes is greater than this 95 | ; number then some children will be killed. 96 | ; ondemand - no children are created at startup. Children will be forked when 97 | ; new requests will connect. The following parameter are used: 98 | ; pm.max_children - the maximum number of children that 99 | ; can be alive at the same time. 100 | ; pm.process_idle_timeout - The number of seconds after which 101 | ; an idle process will be killed. 102 | ; Note: This value is mandatory. 103 | pm = dynamic 104 | 105 | ; The number of child processes to be created when pm is set to 'static' and the 106 | ; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'. 107 | ; This value sets the limit on the number of simultaneous requests that will be 108 | ; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. 109 | ; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP 110 | ; CGI. The below defaults are based on a server without much resources. Don't 111 | ; forget to tweak pm.* to fit your needs. 112 | ; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand' 113 | ; Note: This value is mandatory. 114 | pm.max_children = 5 115 | 116 | ; The number of child processes created on startup. 117 | ; Note: Used only when pm is set to 'dynamic' 118 | ; Default Value: (min_spare_servers + max_spare_servers) / 2 119 | pm.start_servers = 2 120 | 121 | ; The desired minimum number of idle server processes. 122 | ; Note: Used only when pm is set to 'dynamic' 123 | ; Note: Mandatory when pm is set to 'dynamic' 124 | pm.min_spare_servers = 1 125 | 126 | ; The desired maximum number of idle server processes. 127 | ; Note: Used only when pm is set to 'dynamic' 128 | ; Note: Mandatory when pm is set to 'dynamic' 129 | pm.max_spare_servers = 3 130 | 131 | ; The number of seconds after which an idle process will be killed. 132 | ; Note: Used only when pm is set to 'ondemand' 133 | ; Default Value: 10s 134 | ;pm.process_idle_timeout = 10s; 135 | 136 | ; The number of requests each child process should execute before respawning. 137 | ; This can be useful to work around memory leaks in 3rd party libraries. For 138 | ; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. 139 | ; Default Value: 0 140 | ;pm.max_requests = 500 141 | 142 | ; The URI to view the FPM status page. If this value is not set, no URI will be 143 | ; recognized as a status page. It shows the following informations: 144 | ; pool - the name of the pool; 145 | ; process manager - static, dynamic or ondemand; 146 | ; start time - the date and time FPM has started; 147 | ; start since - number of seconds since FPM has started; 148 | ; accepted conn - the number of request accepted by the pool; 149 | ; listen queue - the number of request in the queue of pending 150 | ; connections (see backlog in listen(2)); 151 | ; max listen queue - the maximum number of requests in the queue 152 | ; of pending connections since FPM has started; 153 | ; listen queue len - the size of the socket queue of pending connections; 154 | ; idle processes - the number of idle processes; 155 | ; active processes - the number of active processes; 156 | ; total processes - the number of idle + active processes; 157 | ; max active processes - the maximum number of active processes since FPM 158 | ; has started; 159 | ; max children reached - number of times, the process limit has been reached, 160 | ; when pm tries to start more children (works only for 161 | ; pm 'dynamic' and 'ondemand'); 162 | ; Value are updated in real time. 163 | ; Example output: 164 | ; pool: www 165 | ; process manager: static 166 | ; start time: 01/Jul/2011:17:53:49 +0200 167 | ; start since: 62636 168 | ; accepted conn: 190460 169 | ; listen queue: 0 170 | ; max listen queue: 1 171 | ; listen queue len: 42 172 | ; idle processes: 4 173 | ; active processes: 11 174 | ; total processes: 15 175 | ; max active processes: 12 176 | ; max children reached: 0 177 | ; 178 | ; By default the status page output is formatted as text/plain. Passing either 179 | ; 'html', 'xml' or 'json' in the query string will return the corresponding 180 | ; output syntax. Example: 181 | ; http://www.foo.bar/status 182 | ; http://www.foo.bar/status?json 183 | ; http://www.foo.bar/status?html 184 | ; http://www.foo.bar/status?xml 185 | ; 186 | ; By default the status page only outputs short status. Passing 'full' in the 187 | ; query string will also return status for each pool process. 188 | ; Example: 189 | ; http://www.foo.bar/status?full 190 | ; http://www.foo.bar/status?json&full 191 | ; http://www.foo.bar/status?html&full 192 | ; http://www.foo.bar/status?xml&full 193 | ; The Full status returns for each process: 194 | ; pid - the PID of the process; 195 | ; state - the state of the process (Idle, Running, ...); 196 | ; start time - the date and time the process has started; 197 | ; start since - the number of seconds since the process has started; 198 | ; requests - the number of requests the process has served; 199 | ; request duration - the duration in µs of the requests; 200 | ; request method - the request method (GET, POST, ...); 201 | ; request URI - the request URI with the query string; 202 | ; content length - the content length of the request (only with POST); 203 | ; user - the user (PHP_AUTH_USER) (or '-' if not set); 204 | ; script - the main script called (or '-' if not set); 205 | ; last request cpu - the %cpu the last request consumed 206 | ; it's always 0 if the process is not in Idle state 207 | ; because CPU calculation is done when the request 208 | ; processing has terminated; 209 | ; last request memory - the max amount of memory the last request consumed 210 | ; it's always 0 if the process is not in Idle state 211 | ; because memory calculation is done when the request 212 | ; processing has terminated; 213 | ; If the process is in Idle state, then informations are related to the 214 | ; last request the process has served. Otherwise informations are related to 215 | ; the current request being served. 216 | ; Example output: 217 | ; ************************ 218 | ; pid: 31330 219 | ; state: Running 220 | ; start time: 01/Jul/2011:17:53:49 +0200 221 | ; start since: 63087 222 | ; requests: 12808 223 | ; request duration: 1250261 224 | ; request method: GET 225 | ; request URI: /test_mem.php?N=10000 226 | ; content length: 0 227 | ; user: - 228 | ; script: /home/fat/web/docs/php/test_mem.php 229 | ; last request cpu: 0.00 230 | ; last request memory: 0 231 | ; 232 | ; Note: There is a real-time FPM status monitoring sample web page available 233 | ; It's available in: /usr/local/share/php/fpm/status.html 234 | ; 235 | ; Note: The value must start with a leading slash (/). The value can be 236 | ; anything, but it may not be a good idea to use the .php extension or it 237 | ; may conflict with a real PHP file. 238 | ; Default Value: not set 239 | ;pm.status_path = /status 240 | 241 | ; The ping URI to call the monitoring page of FPM. If this value is not set, no 242 | ; URI will be recognized as a ping page. This could be used to test from outside 243 | ; that FPM is alive and responding, or to 244 | ; - create a graph of FPM availability (rrd or such); 245 | ; - remove a server from a group if it is not responding (load balancing); 246 | ; - trigger alerts for the operating team (24/7). 247 | ; Note: The value must start with a leading slash (/). The value can be 248 | ; anything, but it may not be a good idea to use the .php extension or it 249 | ; may conflict with a real PHP file. 250 | ; Default Value: not set 251 | ;ping.path = /ping 252 | 253 | ; This directive may be used to customize the response of a ping request. The 254 | ; response is formatted as text/plain with a 200 response code. 255 | ; Default Value: pong 256 | ;ping.response = pong 257 | 258 | ; The access log file 259 | ; Default: not set 260 | ;access.log = log/$pool.access.log 261 | 262 | ; The access log format. 263 | ; The following syntax is allowed 264 | ; %%: the '%' character 265 | ; %C: %CPU used by the request 266 | ; it can accept the following format: 267 | ; - %{user}C for user CPU only 268 | ; - %{system}C for system CPU only 269 | ; - %{total}C for user + system CPU (default) 270 | ; %d: time taken to serve the request 271 | ; it can accept the following format: 272 | ; - %{seconds}d (default) 273 | ; - %{miliseconds}d 274 | ; - %{mili}d 275 | ; - %{microseconds}d 276 | ; - %{micro}d 277 | ; %e: an environment variable (same as $_ENV or $_SERVER) 278 | ; it must be associated with embraces to specify the name of the env 279 | ; variable. Some exemples: 280 | ; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e 281 | ; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e 282 | ; %f: script filename 283 | ; %l: content-length of the request (for POST request only) 284 | ; %m: request method 285 | ; %M: peak of memory allocated by PHP 286 | ; it can accept the following format: 287 | ; - %{bytes}M (default) 288 | ; - %{kilobytes}M 289 | ; - %{kilo}M 290 | ; - %{megabytes}M 291 | ; - %{mega}M 292 | ; %n: pool name 293 | ; %o: output header 294 | ; it must be associated with embraces to specify the name of the header: 295 | ; - %{Content-Type}o 296 | ; - %{X-Powered-By}o 297 | ; - %{Transfert-Encoding}o 298 | ; - .... 299 | ; %p: PID of the child that serviced the request 300 | ; %P: PID of the parent of the child that serviced the request 301 | ; %q: the query string 302 | ; %Q: the '?' character if query string exists 303 | ; %r: the request URI (without the query string, see %q and %Q) 304 | ; %R: remote IP address 305 | ; %s: status (response code) 306 | ; %t: server time the request was received 307 | ; it can accept a strftime(3) format: 308 | ; %d/%b/%Y:%H:%M:%S %z (default) 309 | ; The strftime(3) format must be encapsuled in a %{}t tag 310 | ; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t 311 | ; %T: time the log has been written (the request has finished) 312 | ; it can accept a strftime(3) format: 313 | ; %d/%b/%Y:%H:%M:%S %z (default) 314 | ; The strftime(3) format must be encapsuled in a %{}t tag 315 | ; e.g. for a ISO8601 formatted timestring, use: %{%Y-%m-%dT%H:%M:%S%z}t 316 | ; %u: remote user 317 | ; 318 | ; Default: "%R - %u %t \"%m %r\" %s" 319 | ;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%" 320 | 321 | ; The log file for slow requests 322 | ; Default Value: not set 323 | ; Note: slowlog is mandatory if request_slowlog_timeout is set 324 | ;slowlog = log/$pool.log.slow 325 | 326 | ; The timeout for serving a single request after which a PHP backtrace will be 327 | ; dumped to the 'slowlog' file. A value of '0s' means 'off'. 328 | ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 329 | ; Default Value: 0 330 | ;request_slowlog_timeout = 0 331 | 332 | ; Depth of slow log stack trace. 333 | ; Default Value: 20 334 | ;request_slowlog_trace_depth = 20 335 | 336 | ; The timeout for serving a single request after which the worker process will 337 | ; be killed. This option should be used when the 'max_execution_time' ini option 338 | ; does not stop script execution for some reason. A value of '0' means 'off'. 339 | ; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) 340 | ; Default Value: 0 341 | ;request_terminate_timeout = 0 342 | 343 | ; The timeout set by 'request_terminate_timeout' ini option is not engaged after 344 | ; application calls 'fastcgi_finish_request' or when application has finished and 345 | ; shutdown functions are being called (registered via register_shutdown_function). 346 | ; This option will enable timeout limit to be applied unconditionally 347 | ; even in such cases. 348 | ; Default Value: no 349 | ;request_terminate_timeout_track_finished = no 350 | 351 | ; Set open file descriptor rlimit. 352 | ; Default Value: system defined value 353 | ;rlimit_files = 1024 354 | 355 | ; Set max core size rlimit. 356 | ; Possible Values: 'unlimited' or an integer greater or equal to 0 357 | ; Default Value: system defined value 358 | ;rlimit_core = 0 359 | 360 | ; Chroot to this directory at the start. This value must be defined as an 361 | ; absolute path. When this value is not set, chroot is not used. 362 | ; Note: you can prefix with '$prefix' to chroot to the pool prefix or one 363 | ; of its subdirectories. If the pool prefix is not set, the global prefix 364 | ; will be used instead. 365 | ; Note: chrooting is a great security feature and should be used whenever 366 | ; possible. However, all PHP paths will be relative to the chroot 367 | ; (error_log, sessions.save_path, ...). 368 | ; Default Value: not set 369 | ;chroot = 370 | 371 | ; Chdir to this directory at the start. 372 | ; Note: relative path can be used. 373 | ; Default Value: current directory or / when chroot 374 | ;chdir = /var/www 375 | 376 | ; Redirect worker stdout and stderr into main error log. If not set, stdout and 377 | ; stderr will be redirected to /dev/null according to FastCGI specs. 378 | ; Note: on highloaded environement, this can cause some delay in the page 379 | ; process time (several ms). 380 | ; Default Value: no 381 | ;catch_workers_output = yes 382 | 383 | ; Decorate worker output with prefix and suffix containing information about 384 | ; the child that writes to the log and if stdout or stderr is used as well as 385 | ; log level and time. This options is used only if catch_workers_output is yes. 386 | ; Settings to "no" will output data as written to the stdout or stderr. 387 | ; Default value: yes 388 | ;decorate_workers_output = no 389 | 390 | ; Clear environment in FPM workers 391 | ; Prevents arbitrary environment variables from reaching FPM worker processes 392 | ; by clearing the environment in workers before env vars specified in this 393 | ; pool configuration are added. 394 | ; Setting to "no" will make all environment variables available to PHP code 395 | ; via getenv(), $_ENV and $_SERVER. 396 | ; Default Value: yes 397 | ;clear_env = no 398 | 399 | ; Limits the extensions of the main script FPM will allow to parse. This can 400 | ; prevent configuration mistakes on the web server side. You should only limit 401 | ; FPM to .php extensions to prevent malicious users to use other extensions to 402 | ; execute php code. 403 | ; Note: set an empty value to allow all extensions. 404 | ; Default Value: .php 405 | ;security.limit_extensions = .php .php3 .php4 .php5 .php7 406 | 407 | ; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from 408 | ; the current environment. 409 | ; Default Value: clean env 410 | ;env[HOSTNAME] = $HOSTNAME 411 | ;env[PATH] = /usr/local/bin:/usr/bin:/bin 412 | ;env[TMP] = /tmp 413 | ;env[TMPDIR] = /tmp 414 | ;env[TEMP] = /tmp 415 | 416 | ; Additional php.ini defines, specific to this pool of workers. These settings 417 | ; overwrite the values previously defined in the php.ini. The directives are the 418 | ; same as the PHP SAPI: 419 | ; php_value/php_flag - you can set classic ini defines which can 420 | ; be overwritten from PHP call 'ini_set'. 421 | ; php_admin_value/php_admin_flag - these directives won't be overwritten by 422 | ; PHP call 'ini_set' 423 | ; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. 424 | 425 | ; Defining 'extension' will load the corresponding shared extension from 426 | ; extension_dir. Defining 'disable_functions' or 'disable_classes' will not 427 | ; overwrite previously defined php.ini values, but will append the new value 428 | ; instead. 429 | 430 | ; Note: path INI options can be relative and will be expanded with the prefix 431 | ; (pool, global or /usr/local) 432 | 433 | ; Default Value: nothing is defined by default except the values in php.ini and 434 | ; specified at startup with the -d argument 435 | ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com 436 | ;php_flag[display_errors] = off 437 | ;php_admin_value[error_log] = /var/log/fpm-php.www.log 438 | ;php_admin_flag[log_errors] = on 439 | ;php_admin_value[memory_limit] = 32M 440 | --------------------------------------------------------------------------------