├── .editorconfig ├── .env.example ├── .gitattributes ├── .github ├── dependabot.yml └── workflows │ ├── docker-commit.yml │ ├── docker-latest-tag.yaml │ └── docker-release-tag.yaml ├── .gitignore ├── .helm ├── deploy.sh ├── extra │ ├── nginx-values.yaml │ ├── prometheus-adapter-values.yaml │ └── prometheus-values.yaml ├── laravel-octane-values.yaml ├── laravel-values.yaml ├── laravel-worker-values.yaml └── secret.yaml ├── .styleci.yml ├── Dockerfile.fpm ├── Dockerfile.octane ├── Dockerfile.worker ├── README.md ├── app ├── Console │ └── Kernel.php ├── Exceptions │ └── Handler.php ├── Http │ ├── Controllers │ │ ├── Controller.php │ │ └── HealthController.php │ ├── Kernel.php │ └── Middleware │ │ ├── Authenticate.php │ │ ├── EncryptCookies.php │ │ ├── PreventRequestsDuringMaintenance.php │ │ ├── RedirectIfAuthenticated.php │ │ ├── TrimStrings.php │ │ ├── TrustHosts.php │ │ ├── TrustProxies.php │ │ └── VerifyCsrfToken.php ├── Models │ └── User.php └── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ ├── BroadcastServiceProvider.php │ ├── EventServiceProvider.php │ └── RouteServiceProvider.php ├── artisan ├── bootstrap ├── app.php └── cache │ └── .gitignore ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── broadcasting.php ├── cache.php ├── cors.php ├── database.php ├── filesystems.php ├── hashing.php ├── logging.php ├── mail.php ├── octane.php ├── queue.php ├── services.php ├── session.php └── view.php ├── database ├── .gitignore ├── factories │ └── UserFactory.php ├── migrations │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_resets_table.php │ └── 2019_08_19_000000_create_failed_jobs_table.php └── seeders │ └── DatabaseSeeder.php ├── deploy.sh ├── package.json ├── phpunit.xml ├── public ├── .htaccess ├── favicon.ico ├── index.php ├── robots.txt └── web.config ├── resources ├── css │ └── app.css ├── js │ ├── app.js │ └── bootstrap.js ├── lang │ └── en │ │ ├── auth.php │ │ ├── pagination.php │ │ ├── passwords.php │ │ └── validation.php └── views │ └── welcome.blade.php ├── routes ├── api.php ├── channels.php ├── console.php └── web.php ├── server.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ ├── .gitignore │ │ └── data │ │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tests ├── CreatesApplication.php ├── Feature │ └── ExampleTest.php ├── TestCase.php └── Unit │ └── ExampleTest.php └── webpack.mix.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=Laravel 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_URL=http://localhost 6 | 7 | LOG_CHANNEL=stack 8 | LOG_LEVEL=debug 9 | 10 | DB_CONNECTION=mysql 11 | DB_HOST=127.0.0.1 12 | DB_PORT=3306 13 | DB_DATABASE=laravel 14 | DB_USERNAME=root 15 | DB_PASSWORD= 16 | 17 | BROADCAST_DRIVER=log 18 | CACHE_DRIVER=file 19 | QUEUE_CONNECTION=sync 20 | SESSION_DRIVER=file 21 | SESSION_LIFETIME=120 22 | 23 | MEMCACHED_HOST=127.0.0.1 24 | 25 | REDIS_HOST=127.0.0.1 26 | REDIS_PASSWORD=null 27 | REDIS_PORT=6379 28 | 29 | MAIL_MAILER=smtp 30 | MAIL_HOST=mailhog 31 | MAIL_PORT=1025 32 | MAIL_USERNAME=null 33 | MAIL_PASSWORD=null 34 | MAIL_ENCRYPTION=null 35 | MAIL_FROM_ADDRESS=null 36 | MAIL_FROM_NAME="${APP_NAME}" 37 | 38 | AWS_ACCESS_KEY_ID= 39 | AWS_SECRET_ACCESS_KEY= 40 | AWS_DEFAULT_REGION=us-east-1 41 | AWS_BUCKET= 42 | 43 | PUSHER_APP_ID= 44 | PUSHER_APP_KEY= 45 | PUSHER_APP_SECRET= 46 | PUSHER_APP_CLUSTER=mt1 47 | 48 | MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 49 | MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 50 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.css linguist-vendored 3 | *.scss linguist-vendored 4 | *.js linguist-vendored 5 | CHANGELOG.md export-ignore 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | registries: 3 | quay: 4 | type: docker-registry 5 | url: quay.io 6 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 7 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 8 | updates: 9 | - package-ecosystem: github-actions 10 | directory: "/" 11 | schedule: 12 | interval: weekly 13 | open-pull-requests-limit: 10 14 | - package-ecosystem: docker 15 | directory: "/" 16 | registries: 17 | - quay 18 | schedule: 19 | interval: weekly 20 | open-pull-requests-limit: 10 21 | -------------------------------------------------------------------------------- /.github/workflows/docker-commit.yml: -------------------------------------------------------------------------------- 1 | name: Docker Commit 2 | 3 | on: 4 | push: 5 | branches: 6 | - "*" 7 | pull_request: 8 | branches: 9 | - "*" 10 | 11 | jobs: 12 | fpm_push: 13 | if: "!contains(github.event.head_commit.message, 'skip ci')" 14 | 15 | runs-on: ubuntu-latest 16 | 17 | name: Tag Commit (PHP-FPM) 18 | 19 | steps: 20 | - uses: actions/checkout@v3 21 | 22 | - name: Setup PHP 23 | uses: shivammathur/setup-php@v2 24 | with: 25 | php-version: 8.0 26 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 27 | coverage: pcov 28 | 29 | - uses: actions/cache@v3.0.5 30 | name: Cache Composer dependencies 31 | with: 32 | path: ~/.composer/cache/files 33 | key: composer-${{ hashFiles('composer.json') }} 34 | 35 | - name: Set up QEMU 36 | uses: docker/setup-qemu-action@v2 37 | 38 | - name: Set up Docker Buildx 39 | uses: docker/setup-buildx-action@v2 40 | 41 | - name: Login to Quay 42 | uses: docker/login-action@v2 43 | with: 44 | registry: quay.io 45 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 46 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 47 | 48 | - name: Install dependencies 49 | run: | 50 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 51 | 52 | - name: Build and push 53 | id: docker 54 | uses: docker/build-push-action@v3 55 | with: 56 | push: true 57 | context: . 58 | tags: quay.io/renokico/laravel-helm-demo:${{ github.sha }} 59 | file: Dockerfile.fpm 60 | 61 | octane_push: 62 | if: "!contains(github.event.head_commit.message, 'skip ci')" 63 | 64 | runs-on: ubuntu-latest 65 | 66 | name: Tag Commit (Octane) 67 | 68 | steps: 69 | - uses: actions/checkout@v3 70 | 71 | - name: Setup PHP 72 | uses: shivammathur/setup-php@v2 73 | with: 74 | php-version: 8.0 75 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 76 | coverage: pcov 77 | 78 | - uses: actions/cache@v3.0.5 79 | name: Cache Composer dependencies 80 | with: 81 | path: ~/.composer/cache/files 82 | key: composer-${{ hashFiles('composer.json') }} 83 | 84 | - name: Set up QEMU 85 | uses: docker/setup-qemu-action@v2 86 | 87 | - name: Set up Docker Buildx 88 | uses: docker/setup-buildx-action@v2 89 | 90 | - name: Login to Quay 91 | uses: docker/login-action@v2 92 | with: 93 | registry: quay.io 94 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 95 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 96 | 97 | - name: Install dependencies 98 | run: | 99 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 100 | 101 | - name: Build and push 102 | id: docker 103 | uses: docker/build-push-action@v3 104 | with: 105 | push: true 106 | context: . 107 | tags: quay.io/renokico/laravel-helm-demo:octane-${{ github.sha }} 108 | file: Dockerfile.octane 109 | 110 | worker_push: 111 | if: "!contains(github.event.head_commit.message, 'skip ci')" 112 | 113 | runs-on: ubuntu-latest 114 | 115 | name: Tag Commit (Worker) 116 | 117 | steps: 118 | - uses: actions/checkout@v3 119 | 120 | - name: Setup PHP 121 | uses: shivammathur/setup-php@v2 122 | with: 123 | php-version: 8.0 124 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 125 | coverage: pcov 126 | 127 | - uses: actions/cache@v3.0.5 128 | name: Cache Composer dependencies 129 | with: 130 | path: ~/.composer/cache/files 131 | key: composer-${{ hashFiles('composer.json') }} 132 | 133 | - name: Set up QEMU 134 | uses: docker/setup-qemu-action@v2 135 | 136 | - name: Set up Docker Buildx 137 | uses: docker/setup-buildx-action@v2 138 | 139 | - name: Login to Quay 140 | uses: docker/login-action@v2 141 | with: 142 | registry: quay.io 143 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 144 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 145 | 146 | - name: Install dependencies 147 | run: | 148 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 149 | 150 | - name: Build and push 151 | id: docker 152 | uses: docker/build-push-action@v3 153 | with: 154 | push: true 155 | context: . 156 | tags: quay.io/renokico/laravel-helm-demo:worker-${{ github.sha }} 157 | file: Dockerfile.worker 158 | -------------------------------------------------------------------------------- /.github/workflows/docker-latest-tag.yaml: -------------------------------------------------------------------------------- 1 | name: Docker Latest 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | push_fpm: 10 | if: "!contains(github.event.head_commit.message, 'skip ci')" 11 | 12 | runs-on: ubuntu-latest 13 | 14 | name: Tag Latest (PHP-FPM) 15 | 16 | steps: 17 | - uses: actions/checkout@v3 18 | 19 | - name: Setup PHP 20 | uses: shivammathur/setup-php@v2 21 | with: 22 | php-version: 8.0 23 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 24 | coverage: pcov 25 | 26 | - uses: actions/cache@v3.0.5 27 | name: Cache Composer dependencies 28 | with: 29 | path: ~/.composer/cache/files 30 | key: composer-${{ hashFiles('composer.json') }} 31 | 32 | - name: Set up QEMU 33 | uses: docker/setup-qemu-action@v2 34 | 35 | - name: Set up Docker Buildx 36 | uses: docker/setup-buildx-action@v2 37 | 38 | - name: Login to Quay 39 | uses: docker/login-action@v2 40 | with: 41 | registry: quay.io 42 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 43 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 44 | 45 | - name: Install dependencies 46 | run: | 47 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 48 | 49 | - name: Build and push 50 | id: docker 51 | uses: docker/build-push-action@v3 52 | with: 53 | push: true 54 | context: . 55 | tags: quay.io/renokico/laravel-helm-demo:latest 56 | file: Dockerfile.fpm 57 | 58 | push_octane: 59 | if: "!contains(github.event.head_commit.message, 'skip ci')" 60 | 61 | runs-on: ubuntu-latest 62 | 63 | name: Tag Latest (Octane) 64 | 65 | steps: 66 | - uses: actions/checkout@v3 67 | 68 | - name: Setup PHP 69 | uses: shivammathur/setup-php@v2 70 | with: 71 | php-version: 8.0 72 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 73 | coverage: pcov 74 | 75 | - uses: actions/cache@v3.0.5 76 | name: Cache Composer dependencies 77 | with: 78 | path: ~/.composer/cache/files 79 | key: composer-${{ hashFiles('composer.json') }} 80 | 81 | - name: Set up QEMU 82 | uses: docker/setup-qemu-action@v2 83 | 84 | - name: Set up Docker Buildx 85 | uses: docker/setup-buildx-action@v2 86 | 87 | - name: Login to Quay 88 | uses: docker/login-action@v2 89 | with: 90 | registry: quay.io 91 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 92 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 93 | 94 | - name: Install dependencies 95 | run: | 96 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 97 | 98 | - name: Build and push 99 | id: docker 100 | uses: docker/build-push-action@v3 101 | with: 102 | push: true 103 | context: . 104 | tags: quay.io/renokico/laravel-helm-demo:octane-latest 105 | file: Dockerfile.octane 106 | 107 | push_worker: 108 | if: "!contains(github.event.head_commit.message, 'skip ci')" 109 | 110 | runs-on: ubuntu-latest 111 | 112 | name: Tag Latest (Worker) 113 | 114 | steps: 115 | - uses: actions/checkout@v3 116 | 117 | - name: Setup PHP 118 | uses: shivammathur/setup-php@v2 119 | with: 120 | php-version: 8.0 121 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 122 | coverage: pcov 123 | 124 | - uses: actions/cache@v3.0.5 125 | name: Cache Composer dependencies 126 | with: 127 | path: ~/.composer/cache/files 128 | key: composer-${{ hashFiles('composer.json') }} 129 | 130 | - name: Set up QEMU 131 | uses: docker/setup-qemu-action@v2 132 | 133 | - name: Set up Docker Buildx 134 | uses: docker/setup-buildx-action@v2 135 | 136 | - name: Login to Quay 137 | uses: docker/login-action@v2 138 | with: 139 | registry: quay.io 140 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 141 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 142 | 143 | - name: Install dependencies 144 | run: | 145 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 146 | 147 | - name: Build and push 148 | id: docker 149 | uses: docker/build-push-action@v3 150 | with: 151 | push: true 152 | context: . 153 | tags: quay.io/renokico/laravel-helm-demo:worker-latest 154 | file: Dockerfile.worker 155 | -------------------------------------------------------------------------------- /.github/workflows/docker-release-tag.yaml: -------------------------------------------------------------------------------- 1 | name: Docker Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - "*" 7 | 8 | jobs: 9 | push_fpm: 10 | if: "!contains(github.event.head_commit.message, 'skip ci')" 11 | 12 | runs-on: ubuntu-latest 13 | 14 | name: Tag Release (PHP-FPM) 15 | 16 | steps: 17 | - uses: actions/checkout@v3 18 | 19 | - name: Setup PHP 20 | uses: shivammathur/setup-php@v2 21 | with: 22 | php-version: 8.0 23 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 24 | coverage: pcov 25 | 26 | - uses: actions/cache@v3.0.5 27 | name: Cache Composer dependencies 28 | with: 29 | path: ~/.composer/cache/files 30 | key: composer-${{ hashFiles('composer.json') }} 31 | 32 | - name: Docker meta 33 | id: docker_meta 34 | uses: docker/metadata-action@v4.0.1 35 | with: 36 | images: quay.io/renokico/laravel-helm-demo 37 | tags: | 38 | type=semver,pattern={{version}} 39 | type=semver,pattern={{major}}.{{minor}} 40 | 41 | - name: Set up QEMU 42 | uses: docker/setup-qemu-action@v2 43 | 44 | - name: Set up Docker Buildx 45 | uses: docker/setup-buildx-action@v2 46 | 47 | - name: Login to Quay 48 | uses: docker/login-action@v2 49 | with: 50 | registry: quay.io 51 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 52 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 53 | 54 | - name: Install dependencies 55 | run: | 56 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 57 | 58 | - name: Build and Push 59 | id: docker 60 | uses: docker/build-push-action@v3 61 | with: 62 | push: true 63 | context: . 64 | tags: ${{ steps.docker_meta.outputs.tags }} 65 | labels: ${{ steps.docker_meta.outputs.labels }} 66 | file: Dockerfile.fpm 67 | 68 | push_octane: 69 | if: "!contains(github.event.head_commit.message, 'skip ci')" 70 | 71 | runs-on: ubuntu-latest 72 | 73 | name: Tag Release (Octane) 74 | 75 | steps: 76 | - uses: actions/checkout@v3 77 | 78 | - name: Setup PHP 79 | uses: shivammathur/setup-php@v2 80 | with: 81 | php-version: 8.0 82 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 83 | coverage: pcov 84 | 85 | - uses: actions/cache@v3.0.5 86 | name: Cache Composer dependencies 87 | with: 88 | path: ~/.composer/cache/files 89 | key: composer-${{ hashFiles('composer.json') }} 90 | 91 | - name: Docker meta 92 | id: docker_meta 93 | uses: docker/metadata-action@v4.0.1 94 | with: 95 | images: quay.io/renokico/laravel-helm-demo 96 | tags: | 97 | type=semver,pattern=octane-{{version}} 98 | type=semver,pattern=octane-{{major}}.{{minor}} 99 | 100 | - name: Set up QEMU 101 | uses: docker/setup-qemu-action@v2 102 | 103 | - name: Set up Docker Buildx 104 | uses: docker/setup-buildx-action@v2 105 | 106 | - name: Login to Quay 107 | uses: docker/login-action@v2 108 | with: 109 | registry: quay.io 110 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 111 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 112 | 113 | - name: Install dependencies 114 | run: | 115 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 116 | 117 | - name: Build and Push 118 | id: docker 119 | uses: docker/build-push-action@v3 120 | with: 121 | push: true 122 | context: . 123 | tags: ${{ steps.docker_meta.outputs.tags }} 124 | labels: ${{ steps.docker_meta.outputs.labels }} 125 | file: Dockerfile.octane 126 | 127 | push_worker: 128 | if: "!contains(github.event.head_commit.message, 'skip ci')" 129 | 130 | runs-on: ubuntu-latest 131 | 132 | name: Tag Release (Worker) 133 | 134 | steps: 135 | - uses: actions/checkout@v3 136 | 137 | - name: Setup PHP 138 | uses: shivammathur/setup-php@v2 139 | with: 140 | php-version: 8.0 141 | extensions: dom, curl, intl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite 142 | coverage: pcov 143 | 144 | - uses: actions/cache@v3.0.5 145 | name: Cache Composer dependencies 146 | with: 147 | path: ~/.composer/cache/files 148 | key: composer-${{ hashFiles('composer.json') }} 149 | 150 | - name: Docker meta 151 | id: docker_meta 152 | uses: docker/metadata-action@v4.0.1 153 | with: 154 | images: quay.io/renokico/laravel-helm-demo 155 | tags: | 156 | type=semver,pattern=worker-{{version}} 157 | type=semver,pattern=worker-{{major}}.{{minor}} 158 | 159 | - name: Set up QEMU 160 | uses: docker/setup-qemu-action@v2 161 | 162 | - name: Set up Docker Buildx 163 | uses: docker/setup-buildx-action@v2 164 | 165 | - name: Login to Quay 166 | uses: docker/login-action@v2 167 | with: 168 | registry: quay.io 169 | username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} 170 | password: ${{ secrets.DOCKER_REGISTRY_TOKEN }} 171 | 172 | - name: Install dependencies 173 | run: | 174 | composer install --no-interaction --no-progress --prefer-dist --optimize-autoloader --no-dev 175 | 176 | - name: Build and Push 177 | id: docker 178 | uses: docker/build-push-action@v3 179 | with: 180 | push: true 181 | context: . 182 | tags: ${{ steps.docker_meta.outputs.tags }} 183 | labels: ${{ steps.docker_meta.outputs.labels }} 184 | file: Dockerfile.worker 185 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /public/hot 3 | /public/storage 4 | /storage/*.key 5 | /vendor 6 | .env 7 | .env.backup 8 | .phpunit.result.cache 9 | docker-compose.override.yml 10 | Homestead.json 11 | Homestead.yaml 12 | npm-debug.log 13 | yarn-error.log 14 | -------------------------------------------------------------------------------- /.helm/deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # NGINX INGRESS CONTROLLER 4 | # Optional: deploy NGINX Ingress Controller into your cluster 5 | # to expose the ingress outside the cluster. 6 | 7 | # helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx 8 | # helm repo update 9 | 10 | # helm upgrade nginx \ 11 | # --version=3.26.0 \ 12 | # -f extra/nginx-values.yaml \ 13 | # --install \ 14 | # ingress-nginx/ingress-nginx 15 | 16 | # PROMETHEUS 17 | # Optional: deploy Prometheus & Prometheus Adapter to scrape 18 | # the pod metrics (if PHP-FPM and NGINX exporters are enabled) 19 | # to automatically scale the containers based on the pm.max_children value. 20 | 21 | # helm repo add prometheus-community https://prometheus-community.github.io/helm-charts 22 | # helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics 23 | # helm repo update 24 | 25 | # helm upgrade prometheus \ 26 | # --version=13.6.0 \ 27 | # -f extra/prometheus-values.yaml \ 28 | # --install \ 29 | # prometheus-community/prometheus 30 | 31 | # helm upgrade prometheus-adapter \ 32 | # --version=2.12.1 \ 33 | # -f extra/prometheus-adapter-values.yaml \ 34 | # --install \ 35 | # prometheus-community/prometheus-adapter 36 | 37 | # INSTALL LARAVEL APPLICATION 38 | # Deploy the Secret that will contain the .env file. 39 | kubectl apply -f secret.yaml 40 | 41 | helm repo add renoki-co https://helm.renoki.org 42 | helm repo update 43 | 44 | # Deploy the Laravel app. 45 | # helm upgrade laravel \ 46 | # --version=0.9.0 \ 47 | # -f laravel-values.yaml \ 48 | # --install \ 49 | # renoki-co/laravel 50 | 51 | # Alternative: Deploy the Laravel app with Octane. 52 | helm upgrade laravel-octane \ 53 | --version=0.3.0 \ 54 | -f laravel-octane-values.yaml \ 55 | --install \ 56 | renoki-co/laravel-octane 57 | 58 | # Deploy (an example) worker for Laravel Queues. 59 | helm upgrade laravel-worker \ 60 | --version=0.3.0 \ 61 | -f laravel-worker-values.yaml \ 62 | --install \ 63 | renoki-co/laravel-worker 64 | -------------------------------------------------------------------------------- /.helm/extra/prometheus-adapter-values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for k8s-prometheus-adapter.. 2 | affinity: {} 3 | 4 | image: 5 | repository: directxman12/k8s-prometheus-adapter-amd64 6 | tag: v0.8.3 7 | pullPolicy: IfNotPresent 8 | 9 | logLevel: 4 10 | 11 | metricsRelistInterval: 1m 12 | 13 | listenPort: 6443 14 | 15 | nodeSelector: {} 16 | 17 | priorityClassName: "" 18 | 19 | # Url to access prometheus 20 | prometheus: 21 | # Value is templated 22 | url: http://prometheus-server.default.svc.cluster.local 23 | port: 9090 24 | path: "" 25 | 26 | replicas: 1 27 | 28 | rbac: 29 | # Specifies whether RBAC resources should be created 30 | create: true 31 | 32 | psp: 33 | # Specifies whether PSP resources should be created 34 | create: false 35 | 36 | serviceAccount: 37 | # Specifies whether a service account should be created 38 | create: true 39 | # The name of the service account to use. 40 | # If not set and create is true, a name is generated using the fullname template 41 | name: 42 | # Custom DNS configuration to be added to prometheus-adapter pods 43 | dnsConfig: {} 44 | # nameservers: 45 | # - 1.2.3.4 46 | # searches: 47 | # - ns1.svc.cluster-domain.example 48 | # - my.dns.search.suffix 49 | # options: 50 | # - name: ndots 51 | # value: "2" 52 | # - name: edns0 53 | resources: {} 54 | # requests: 55 | # cpu: 100m 56 | # memory: 128Mi 57 | # limits: 58 | # cpu: 100m 59 | # memory: 128Mi 60 | 61 | rules: 62 | default: true 63 | custom: 64 | - seriesQuery: 'phpfpm_total_processes{namespace!="", pod_name!=""}' 65 | resources: 66 | overrides: 67 | namespace: 68 | resource: "namespace" 69 | pod_name: 70 | resource: "pod" 71 | name: 72 | matches: "phpfpm_total_processes" 73 | as: "phpfpm_process_utilization" 74 | metricsQuery: 'max((100 / phpfpm_total_processes) * phpfpm_active_processes) by (<<.GroupBy>>)' 75 | # - seriesQuery: '{__name__=~"^some_metric_count$"}' 76 | # resources: 77 | # template: <<.Resource>> 78 | # name: 79 | # matches: "" 80 | # as: "my_custom_metric" 81 | # metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>) 82 | # Mounts a configMap with pre-generated rules for use. Overrides the 83 | # default, custom, external and resource entries 84 | existing: 85 | external: [] 86 | # - seriesQuery: '{__name__=~"^some_metric_count$"}' 87 | # resources: 88 | # template: <<.Resource>> 89 | # name: 90 | # matches: "" 91 | # as: "my_external_metric" 92 | # metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>) 93 | resource: {} 94 | # cpu: 95 | # containerQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>}[3m])) by (<<.GroupBy>>) 96 | # nodeQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>, id='/'}[3m])) by (<<.GroupBy>>) 97 | # resources: 98 | # overrides: 99 | # instance: 100 | # resource: node 101 | # namespace: 102 | # resource: namespace 103 | # pod: 104 | # resource: pod 105 | # containerLabel: container 106 | # memory: 107 | # containerQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>}) by (<<.GroupBy>>) 108 | # nodeQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>,id='/'}) by (<<.GroupBy>>) 109 | # resources: 110 | # overrides: 111 | # instance: 112 | # resource: node 113 | # namespace: 114 | # resource: namespace 115 | # pod: 116 | # resource: pod 117 | # containerLabel: container 118 | # window: 3m 119 | 120 | service: 121 | annotations: {} 122 | port: 443 123 | type: ClusterIP 124 | 125 | tls: 126 | enable: false 127 | ca: |- 128 | # Public CA file that signed the APIService 129 | key: |- 130 | # Private key of the APIService 131 | certificate: |- 132 | # Public key of the APIService 133 | 134 | # Any extra arguments 135 | extraArguments: [] 136 | # - --tls-private-key-file=/etc/tls/tls.key 137 | # - --tls-cert-file=/etc/tls/tls.crt 138 | 139 | # Any extra volumes 140 | extraVolumes: [] 141 | # - name: example-name 142 | # hostPath: 143 | # path: /path/on/host 144 | # type: DirectoryOrCreate 145 | # - name: ssl-certs 146 | # hostPath: 147 | # path: /etc/ssl/certs/ca-bundle.crt 148 | # type: File 149 | 150 | # Any extra volume mounts 151 | extraVolumeMounts: [] 152 | # - name: example-name 153 | # mountPath: /path/in/container 154 | # - name: ssl-certs 155 | # mountPath: /etc/ssl/certs/ca-certificates.crt 156 | # readOnly: true 157 | 158 | tolerations: [] 159 | 160 | # Labels added to the pod 161 | podLabels: {} 162 | 163 | # Annotations added to the pod 164 | podAnnotations: {} 165 | 166 | hostNetwork: 167 | # Specifies if prometheus-adapter should be started in hostNetwork mode. 168 | # 169 | # You would require this enabled if you use alternate overlay networking for pods and 170 | # API server unable to communicate with metrics-server. As an example, this is required 171 | # if you use Weave network on EKS. See also dnsPolicy 172 | enabled: false 173 | 174 | # When hostNetwork is enabled, you probably want to set this to ClusterFirstWithHostNet 175 | # dnsPolicy: ClusterFirstWithHostNet 176 | 177 | podDisruptionBudget: 178 | # Specifies if PodDisruptionBudget should be enabled 179 | # When enabled, minAvailable or maxUnavailable should also be defined. 180 | enabled: false 181 | minAvailable: 182 | maxUnavailable: 1 183 | 184 | certManager: 185 | enabled: false 186 | caCertDuration: 43800h 187 | certDuration: 8760h 188 | -------------------------------------------------------------------------------- /.helm/laravel-octane-values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for laravel-helm. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | replicaCount: 1 6 | 7 | nameOverride: "" 8 | fullnameOverride: "" 9 | imagePullSecrets: [] 10 | 11 | # Configure Octane-based Laravel container. 12 | app: 13 | image: 14 | repository: quay.io/renokico/laravel-helm-demo 15 | pullPolicy: Always 16 | tag: "octane-0.6.0" 17 | 18 | command: 19 | - php 20 | - -d 21 | - variables_order=EGPCS 22 | - artisan 23 | - octane:start 24 | - --server=swoole 25 | - --host=0.0.0.0 26 | - --port=80 27 | 28 | # Specify the Secret name to pull the .env file from. 29 | # If not specified, it defaults to "{release name}-env". It should 30 | # be a secret that contains an ".env" data key with the full 31 | # .env file that will be copied during pod creation. 32 | # The secret should be created by you before running the app. 33 | envSecretName: "laravel-env" 34 | 35 | # We usually recommend not to specify default resources and to leave this as a conscious 36 | # choice for the user. This also increases chances charts run on environments with little 37 | # resources, such as Minikube. If you do want to specify resources, uncomment the following 38 | # lines, adjust them as necessary, and remove the curly braces after 'resources:'. 39 | resources: 40 | limits: 41 | cpu: 250m 42 | memory: 256Mi 43 | requests: 44 | cpu: 100m 45 | memory: 128Mi 46 | 47 | # Extra environment variables for the app container. 48 | extraEnv: 49 | - name: POD_NAME 50 | valueFrom: 51 | fieldRef: 52 | fieldPath: metadata.name 53 | 54 | # Extra volumes to mount on the container. 55 | extraVolumeMounts: [] 56 | # - name: some-folder 57 | # mountPath: /some/path 58 | 59 | # Configure the TCP healthcheck for the Octane process. 60 | # If enabled, Kubernetes will periodically check the Octane Server 61 | # process to be alive and to serve HTTP requests. 62 | healthcheck: 63 | enabled: true 64 | period: 5 65 | path: /health 66 | 67 | serviceAccount: 68 | # Specifies whether a service account should be created 69 | create: true 70 | # Annotations to add to the service account 71 | annotations: {} 72 | # The name of the service account to use. 73 | # If not set and create is true, a name is generated using the fullname template 74 | name: "" 75 | 76 | podAnnotations: {} 77 | 78 | podSecurityContext: {} 79 | # fsGroup: 2000 80 | 81 | securityContext: {} 82 | # capabilities: 83 | # drop: 84 | # - ALL 85 | # readOnlyRootFilesystem: true 86 | # runAsNonRoot: true 87 | # runAsUser: 1000 88 | 89 | service: 90 | type: ClusterIP 91 | port: 80 92 | 93 | annotations: {} 94 | # Set annotations for the service. 95 | 96 | ingress: 97 | enabled: true 98 | annotations: 99 | kubernetes.io/ingress.class: nginx 100 | # kubernetes.io/ingress.class: nginx 101 | # kubernetes.io/tls-acme: "true" 102 | hosts: 103 | - host: test-octane.laravel.com 104 | paths: 105 | - / 106 | tls: [] 107 | # - secretName: chart-example-tls 108 | # hosts: 109 | # - chart-example.local 110 | 111 | autoscaling: 112 | enabled: true 113 | minReplicas: 1 114 | maxReplicas: 10 115 | targetCPUUtilizationPercentage: 80 116 | # targetMemoryUtilizationPercentage: 80 117 | 118 | behavior: {} 119 | # Set the behavior for the autoscaler. 120 | # https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-configurable-scaling-behavior 121 | 122 | # Custom Metrics will be appended to the default CPU/Memory resources (if they're enabled). 123 | customMetrics: [] 124 | # - type: Pods 125 | # pods: 126 | # metric: 127 | # name: cpu 128 | # target: 129 | # type: AverageValue 130 | # averageValue: "50" 131 | 132 | pdb: 133 | enabled: true 134 | minAvailable: 1 135 | # maxUnavailable: 25% 136 | 137 | nodeSelector: {} 138 | 139 | tolerations: [] 140 | 141 | affinity: {} 142 | 143 | # Extra volumes to attach to the deployment. 144 | extraVolumes: [] 145 | # - name: some-folder 146 | # emptyDir: {} 147 | 148 | # Extra containers to run in the deployment. 149 | extraContainers: [] 150 | 151 | # Extra init containers to run in the deployment. 152 | extraInitContainers: [] 153 | 154 | # Configure the php.ini used for the PHP process. 155 | # This will overwrite the default ones that exists in the container. 156 | phpIni: 157 | # Specify the Config name to pull the php.ini configuration from. 158 | # If not specified, it defaults to "{release name}-php-ini-config". 159 | # This will be automatically be created for you if you do not specify it. 160 | # configName: "" 161 | 162 | # If no configName is specified, this will be the config 163 | # applied to the app container. 164 | content: | 165 | ; Determines if Zend OPCache is enabled 166 | opcache.enable=1 167 | 168 | ; Determines if Zend OPCache is enabled for the CLI version of PHP 169 | opcache.enable_cli=1 170 | 171 | ; The OPcache shared memory storage size. 172 | opcache.memory_consumption=128 173 | 174 | ; The amount of memory for interned strings in Mbytes. 175 | opcache.interned_strings_buffer=128 176 | 177 | ; The maximum number of keys (scripts) in the OPcache hash table. 178 | ; Only numbers between 200 and 1000000 are allowed. 179 | opcache.max_accelerated_files=1000000 180 | 181 | ; maximum memory allocated to store the results 182 | realpath_cache_size=8192K 183 | 184 | ; save the results for 10 minutes (600 seconds) 185 | realpath_cache_ttl=600 186 | 187 | ; The maximum percentage of "wasted" memory until a restart is scheduled. 188 | opcache.max_wasted_percentage=5 189 | 190 | ; When this directive is enabled, the OPcache appends the current working 191 | ; directory to the script key, thus eliminating possible collisions between 192 | ; files with the same name (basename). Disabling the directive improves 193 | ; performance, but may break existing applications. 194 | ;opcache.use_cwd=1 195 | 196 | ; When disabled, you must reset the OPcache manually or restart the 197 | ; webserver for changes to the filesystem to take effect. 198 | opcache.validate_timestamps=0 199 | 200 | ; How often (in seconds) to check file timestamps for changes to the shared 201 | ; memory storage allocation. ("1" means validate once per second, but only 202 | ; once per request. "0" means always validate) 203 | opcache.revalidate_freq=0 204 | 205 | ; Enables or disables file search in include_path optimization 206 | ;opcache.revalidate_path=0 207 | 208 | ; If disabled, all PHPDoc comments are dropped from the code to reduce the 209 | ; size of the optimized code. 210 | ;opcache.save_comments=1 211 | 212 | ; If enabled, a fast shutdown sequence is used for the accelerated code 213 | ; Depending on the used Memory Manager this may cause some incompatibilities. 214 | opcache.fast_shutdown=1 215 | 216 | ; Allow file existence override (file_exists, etc.) performance feature. 217 | ;opcache.enable_file_override=0 218 | 219 | ; A bitmask, where each bit enables or disables the appropriate OPcache 220 | ; passes 221 | ;opcache.optimization_level=0xffffffff 222 | 223 | ;opcache.inherited_hack=1 224 | ;opcache.dups_fix=0 225 | 226 | ; The location of the OPcache blacklist file (wildcards allowed). 227 | ; Each OPcache blacklist file is a text file that holds the names of files 228 | ; that should not be accelerated. 229 | opcache.blacklist_filename=/etc/php-*/opcache*.blacklist 230 | 231 | ; Allows exclusion of large files from being cached. By default all files 232 | ; are cached. 233 | ;opcache.max_file_size=0 234 | 235 | ; Check the cache checksum each N requests. 236 | ; The default value of "0" means that the checks are disabled. 237 | ;opcache.consistency_checks=0 238 | 239 | ; How long to wait (in seconds) for a scheduled restart to begin if the cache 240 | ; is not being accessed. 241 | ;opcache.force_restart_timeout=180 242 | 243 | ; OPcache error_log file name. Empty string assumes "stderr". 244 | ;opcache.error_log= 245 | 246 | ; All OPcache errors go to the Web server log. 247 | ; By default, only fatal errors (level 0) or errors (level 1) are logged. 248 | ; You can also enable warnings (level 2), info messages (level 3) or 249 | ; debug messages (level 4). 250 | ;opcache.log_verbosity_level=1 251 | 252 | ; Preferred Shared Memory back-end. Leave empty and let the system decide. 253 | ;opcache.preferred_memory_model= 254 | 255 | ; Protect the shared memory from unexpected writing during script execution. 256 | ; Useful for internal debugging only. 257 | ;opcache.protect_memory=0 258 | 259 | ; Allows calling OPcache API functions only from PHP scripts which path is 260 | ; started from specified string. The default "" means no restriction 261 | ;opcache.restrict_api= 262 | 263 | ; Enables and sets the second level cache directory. 264 | ; It should improve performance when SHM memory is full, at server restart or 265 | ; SHM reset. The default "" disables file based caching. 266 | ; RPM note : file cache directory must be owned by process owner 267 | ; for mod_php, see /etc/httpd/conf.d/php.conf 268 | ; for php-fpm, see /etc/php-fpm.d/*conf 269 | ;opcache.file_cache= 270 | 271 | ; Enables or disables opcode caching in shared memory. 272 | ;opcache.file_cache_only=0 273 | 274 | ; Enables or disables checksum validation when script loaded from file cache. 275 | ;opcache.file_cache_consistency_checks=1 276 | 277 | ; Implies opcache.file_cache_only=1 for a certain process that failed to 278 | ; reattach to the shared memory (for Windows only). Explicitly enabled file 279 | ; cache is required. 280 | ;opcache.file_cache_fallback=1 281 | 282 | ; Validate cached file permissions. 283 | ; Leads OPcache to check file readability on each access to cached file. 284 | ; This directive should be enabled in shared hosting environment, when few 285 | ; users (PHP-FPM pools) reuse the common OPcache shared memory. 286 | ;opcache.validate_permission=0 287 | 288 | ; Prevent name collisions in chroot'ed environment. 289 | ; This directive prevents file name collisions in different "chroot" 290 | ; environments. It should be enabled for sites that may serve requests in 291 | ; different "chroot" environments. 292 | ;opcache.validate_root=0 293 | 294 | ; Enables or disables copying of PHP code (text segment) into HUGE PAGES. 295 | ; This should improve performance, but requires appropriate OS configuration. 296 | opcache.huge_code_pages=1 297 | 298 | ; Maximum amount of memory a script may consume 299 | ; http://php.net/memory-limit 300 | memory_limit = 128M 301 | 302 | ; Maximum execution time of each script, in seconds 303 | ; http://php.net/max-execution-time 304 | ; Note: This directive is hardcoded to 0 for the CLI SAPI 305 | max_execution_time = 30 306 | 307 | ;;;;;;;;;;;;;;;; 308 | ; File Uploads ; 309 | ;;;;;;;;;;;;;;;; 310 | 311 | ; Whether to allow HTTP file uploads. 312 | ; http://php.net/file-uploads 313 | file_uploads = On 314 | 315 | ; Temporary directory for HTTP uploaded files (will use system default if not 316 | ; specified). 317 | ; http://php.net/upload-tmp-dir 318 | ;upload_tmp_dir = 319 | 320 | ; Maximum allowed size for uploaded files. 321 | ; http://php.net/upload-max-filesize 322 | upload_max_filesize = 2M 323 | 324 | ; Maximum number of files that can be uploaded via a single request 325 | max_file_uploads = 20 326 | 327 | ;;;;;;;;;;;;;;;;;; 328 | ; Fopen wrappers ; 329 | ;;;;;;;;;;;;;;;;;; 330 | 331 | ; Whether to allow the treatment of URLs (like http:// or ftp://) as files. 332 | ; http://php.net/allow-url-fopen 333 | allow_url_fopen = On 334 | 335 | ; Whether to allow include/require to open URLs (like http:// or ftp://) as files. 336 | ; http://php.net/allow-url-include 337 | allow_url_include = Off 338 | 339 | [Session] 340 | ; Handler used to store/retrieve data. 341 | ; http://php.net/session.save-handler 342 | session.save_handler = files 343 | 344 | ; Argument passed to save_handler. In the case of files, this is the path 345 | ; where data files are stored. Note: Windows users have to change this 346 | ; variable in order to use PHP's session functions. 347 | ; 348 | ; The path can be defined as: 349 | ; 350 | ; session.save_path = "N;/path" 351 | ; 352 | ; where N is an integer. Instead of storing all the session files in 353 | ; /path, what this will do is use subdirectories N-levels deep, and 354 | ; store the session data in those directories. This is useful if 355 | ; your OS has problems with many files in one directory, and is 356 | ; a more efficient layout for servers that handle many sessions. 357 | ; 358 | ; NOTE 1: PHP will not create this directory structure automatically. 359 | ; You can use the script in the ext/session dir for that purpose. 360 | ; NOTE 2: See the section on garbage collection below if you choose to 361 | ; use subdirectories for session storage 362 | ; 363 | ; The file storage module creates files using mode 600 by default. 364 | ; You can change that by using 365 | ; 366 | ; session.save_path = "N;MODE;/path" 367 | ; 368 | ; where MODE is the octal representation of the mode. Note that this 369 | ; does not overwrite the process's umask. 370 | ; http://php.net/session.save-path 371 | ;session.save_path = "/tmp" 372 | 373 | ; Whether to use strict session mode. 374 | ; Strict session mode does not accept an uninitialized session ID, and 375 | ; regenerates the session ID if the browser sends an uninitialized session ID. 376 | ; Strict mode protects applications from session fixation via a session adoption 377 | ; vulnerability. It is disabled by default for maximum compatibility, but 378 | ; enabling it is encouraged. 379 | ; https://wiki.php.net/rfc/strict_sessions 380 | session.use_strict_mode = 0 381 | 382 | ; Whether to use cookies. 383 | ; http://php.net/session.use-cookies 384 | session.use_cookies = 1 385 | 386 | ; http://php.net/session.cookie-secure 387 | ;session.cookie_secure = 388 | 389 | ; This option forces PHP to fetch and use a cookie for storing and maintaining 390 | ; the session id. We encourage this operation as it's very helpful in combating 391 | ; session hijacking when not specifying and managing your own session id. It is 392 | ; not the be-all and end-all of session hijacking defense, but it's a good start. 393 | ; http://php.net/session.use-only-cookies 394 | session.use_only_cookies = 1 395 | 396 | ; Name of the session (used as cookie name). 397 | ; http://php.net/session.name 398 | session.name = PHPSESSID 399 | 400 | ; Initialize session on request startup. 401 | ; http://php.net/session.auto-start 402 | session.auto_start = 0 403 | 404 | ; Lifetime in seconds of cookie or, if 0, until browser is restarted. 405 | ; http://php.net/session.cookie-lifetime 406 | session.cookie_lifetime = 0 407 | 408 | ; The path for which the cookie is valid. 409 | ; http://php.net/session.cookie-path 410 | session.cookie_path = / 411 | 412 | ; The domain for which the cookie is valid. 413 | ; http://php.net/session.cookie-domain 414 | session.cookie_domain = 415 | 416 | ; Whether or not to add the httpOnly flag to the cookie, which makes it 417 | ; inaccessible to browser scripting languages such as JavaScript. 418 | ; http://php.net/session.cookie-httponly 419 | session.cookie_httponly = 420 | 421 | ; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) 422 | ; Current valid values are "Strict", "Lax" or "None". When using "None", 423 | ; make sure to include the quotes, as `none` is interpreted like `false` in ini files. 424 | ; https://tools.ietf.org/html/draft-west-first-party-cookies-07 425 | session.cookie_samesite = 426 | 427 | ; Handler used to serialize data. php is the standard serializer of PHP. 428 | ; http://php.net/session.serialize-handler 429 | session.serialize_handler = php 430 | 431 | ; Defines the probability that the 'garbage collection' process is started on every 432 | ; session initialization. The probability is calculated by using gc_probability/gc_divisor, 433 | ; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. 434 | ; Default Value: 1 435 | ; Development Value: 1 436 | ; Production Value: 1 437 | ; http://php.net/session.gc-probability 438 | session.gc_probability = 1 439 | 440 | ; Defines the probability that the 'garbage collection' process is started on every 441 | ; session initialization. The probability is calculated by using gc_probability/gc_divisor, 442 | ; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. 443 | ; For high volume production servers, using a value of 1000 is a more efficient approach. 444 | ; Default Value: 100 445 | ; Development Value: 1000 446 | ; Production Value: 1000 447 | ; http://php.net/session.gc-divisor 448 | session.gc_divisor = 1000 449 | 450 | ; After this number of seconds, stored data will be seen as 'garbage' and 451 | ; cleaned up by the garbage collection process. 452 | ; http://php.net/session.gc-maxlifetime 453 | session.gc_maxlifetime = 1440 454 | 455 | ; NOTE: If you are using the subdirectory option for storing session files 456 | ; (see session.save_path above), then garbage collection does *not* 457 | ; happen automatically. You will need to do your own garbage 458 | ; collection through a shell script, cron entry, or some other method. 459 | ; For example, the following script is the equivalent of setting 460 | ; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): 461 | ; find /path/to/sessions -cmin +24 -type f | xargs rm 462 | 463 | ; Check HTTP Referer to invalidate externally stored URLs containing ids. 464 | ; HTTP_REFERER has to contain this substring for the session to be 465 | ; considered as valid. 466 | ; http://php.net/session.referer-check 467 | session.referer_check = 468 | 469 | ; Set to {nocache,private,public,} to determine HTTP caching aspects 470 | ; or leave this empty to avoid sending anti-caching headers. 471 | ; http://php.net/session.cache-limiter 472 | session.cache_limiter = nocache 473 | 474 | ; Document expires after n minutes. 475 | ; http://php.net/session.cache-expire 476 | session.cache_expire = 180 477 | 478 | ; trans sid support is disabled by default. 479 | ; Use of trans sid may risk your users' security. 480 | ; Use this option with caution. 481 | ; - User may send URL contains active session ID 482 | ; to other person via. email/irc/etc. 483 | ; - URL that contains active session ID may be stored 484 | ; in publicly accessible computer. 485 | ; - User may access your site with the same session ID 486 | ; always using URL stored in browser's history or bookmarks. 487 | ; http://php.net/session.use-trans-sid 488 | session.use_trans_sid = 0 489 | 490 | ; Set session ID character length. This value could be between 22 to 256. 491 | ; Shorter length than default is supported only for compatibility reason. 492 | ; Users should use 32 or more chars. 493 | ; http://php.net/session.sid-length 494 | ; Default Value: 32 495 | ; Development Value: 26 496 | ; Production Value: 26 497 | session.sid_length = 26 498 | 499 | ; The URL rewriter will look for URLs in a defined set of HTML tags. 500 | ;