INT 21h

Hi, I am Vladimir Smagin, SysAdmin, DevOps and barely good guy. Telegram Email / GIT / Микроблог / Thingiverse / 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/"
            }
        }

    ]
}

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

Dockerfile for Nginx Unit projects

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

Place unit_config.json file in project root directory, it will be moved to /state during image building. Find example configs by hash tag #unit.

Do not forget to change timezone and packages to install.

FROM ubuntu:eoan

ENV TZ=Asia/Tomsk
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN set -xe \
    && apt-get -y update \
    && apt-get -y install --no-install-recommends gnupg2 curl php mysql-client ca-certificates \
    php-curl php-mysql \
    && curl https://nginx.org/keys/nginx_signing.key | apt-key add - \
    && echo "deb https://packages.nginx.org/unit/ubuntu/ eoan unit"  | tee -a /etc/apt/sources.list \
    && echo "deb-src https://packages.nginx.org/unit/ubuntu/ eoan unit" | tee -a /etc/apt/sources.list \
    && apt-get -y update \
    && apt-get -y install unit unit-php unit-dev \
    && unitd --version

RUN rm /etc/init.d/unit

WORKDIR /www/app

COPY . .

RUN mkdir -p /state/certs && mv unit_config.json /state/conf.json \
    && chmod 700 -R /state && chown root:root -R /state
RUN chown -R www-data:www-data /www/app

CMD ["unitd", "--no-daemon", "--state", "/state"]

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

Настройка 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 уже никогда не пересекутся и не будут конфликтовать или еще как-нибудь парить мозг при обновлениях. Конечно же, не стоит валить все ваши проекты в одно место. Лучше разделить их по разным контейнерам в зависимости от контекста.

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

Микроблог перейти

# 2019-12-23 09:14:01

Очень интересная концепция, docker-compose для kubernetes kompose.io/ #devops #kubernetes #docker

# 2019-12-16 17:21:18

Надо будет почитать для общего развития как оживить кластер в случае проеба сертов habr.com/ru/company/southbridg #kubernetes #devops

# 2019-12-12 17:33:46

js bootstrap с интерфейсом как в DOS github.com/kristopolous/BOOTST


© Vladimir Smagin, 2005-2019. Копирование материалов без разрешения запрещено. GPG DA4CD0F5E222EA727D6A40C413BCE12E5618F071 *
Яндекс.Метрика

Fortune cookie: Today's spam: We remove the software that hackers install..