INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / Thingiverse / RSS / GPG

Nginx Unit for Codeigniter

№ 10457 В разделе "Sysadmin" от December 16th, 2019,
В подшивках: , ,

Share all static files in subdirectories, all others requests goes to index.php of application.

{
    "listeners": {
        "*:8300": {
            "pass": "routes"
        }
    },
    "applications": {
        "app": {
            "type": "php",
            "user": "www-data",
            "group": "www-data",
            "root": "/www/app",
            "index": "index.php",
            "script": "index.php"
        }
    },
    "routes": [
        {
            "match": {
                "uri": "/pics/*"
            },
            "action": {
                "share": "/www/app/"
            }
        },
        {
            "match": {
                "uri": "/images/*"
            },
            "action": {
                "share": "/www/app/"
            }
        },
        {
            "match": {
                "uri": "/cover/*"
            },
            "action": {
                "share": "/www/app/"
            }
        },
        {
            "action": {
                "pass": "applications/app"
            }
        }
    ],
    "access_log": "/var/log/access.log"
}

Нет комментариев »

Nginx Unit config for Dokuwiki

№ 10455 В разделе "Sysadmin" от December 16th, 2019,
В подшивках: , ,

Requests to / and php files goes to application, all other files is static.

{
    "listeners": {
        "*:8300": {
            "pass": "routes"
        }
    },
    "applications": {
        "app": {
            "type": "php",
            "user": "www-data",
            "group": "www-data",
            "root": "/www/app",
            "index": "index.php",
        }
    },
    "routes": [
        {
            "match": {
                "uri": "/"
            },
            "action": {
                "pass": "applications/app"
            }
        },
        {
            "match": {
                "uri": "*.php"
            },
            "action": {
                "pass": "applications/app"
            }
        },
        {
            "action": {
                "share": "/www/app/"
            }
        }

    ]
}

Нет комментариев »

War of analytics: Matomo (former Piwik) vs AdBlock

№ 10144. В разделе " Sysadmin " от July 25th, 2019

В подшивках: , ,

Bash + PHP + imagemagick + ffmpeg: карта звездного неба

№ 9074. В разделе " Programming " от July 30th, 2018

В подшивках: ,

Настройка NGINX Unit под PHP

№ 8544 В разделе "Sysadmin" от October 12th, 2017,
В подшивках: ,

У меня целый гребаный зоопарк из разных версий php на домашнем сервере и мне это порядком надоело. Что можно сделать? Можно скинуть раритетное барахло в unit контейнеры, поднять Nginx Unit и работать уже с приложениями, а не кормить все старые проекты одному php-fpm’у. В настоящее время есть поддержка только одной точки входа, но в будущем создатели побожились, что сделают нормальный роутинг (update: сделали). С установкой Nginx Unit любой дурак справится благодаря отличному мануалу здесь, рассасывать тут я его не буду.

Вот готовых config файла для unit:

А теперь давайте поговорим о настройке Unit. Допустим, у вас есть невероятно важная программа, выводящая информацию об установленном php в браузер и лежит она в /var/www/info/info.php.

Теперь сделаем конфиг для вашей невероятно важной программы вывода информации о php

{
    "listeners":{
        "*:8300":{
            "application":"phpinfoprogram"
        }
    },
    "applications":{
        "phpinfoprogram":{
            "type":"php",
            "workers":2,
            "root":"/var/www/info",
            "index":"info.php"
        }
    }
}

Напоминаю, что это ваш самый первый конфиг, а в будущем вам придется сначала выгрузить из unitd текущий, дополнить его и загрузить вновь.

Выгрузка в файл curl --unix-socket /var/run/control.unit.sock http://localhost/ > unitd.json
Загрузка из файла в unitd curl -X PUT -d @unitd.json --unix-socket /var/run/control.unit.sock http://localhost/

Здесь можно подробнее прочитать об управлении конфигурацией. Надеюсь, кто-нибудь не ленивый скоро создаст красивую веб морду для него.

Теперь можно посмотреть открытые порты и видеть ваше невероятно важное приложение внутри LXC контейнера на порту 8300

root@nginx-unit:/# netstat -tlpn|grep unit
tcp        0      0 0.0.0.0:8300            0.0.0.0:*               LISTEN      175/unit: router

Теперь в nginx достаточно добавить location, указывающий на ваше приложение

location /info { 
    proxy_pass http://10.0.2.23:8300;
    proxy_set_header Host $host; 
}

Один Nginx Unit может держать много приложений и открытых портов. Допустим, у вас есть два LXC контейнера для приложений на PHP 5.6 и 7.0. Устанавливаете обычный php без всяких fpm в ваши контейнеры, все нужные модули и ваши приложения с разными версиями php уже никогда не пересекутся и не будут конфликтовать или еще как-нибудь парить мозг при обновлениях. Конечно же, не стоит валить все ваши проекты в одно место. Лучше разделить их по разным контейнерам в зависимости от контекста.

Нет комментариев »

Яндекс.Метрика

Fortune cookie: I appoint you ambassador to Fantasy Island!!!