INT 21h

Hi, I am Vladimir Smagin, sysadmin. Telegram Email

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

№ 8544 В разделе "Администрирование" от October 12th, 2017,

У меня целый гребаный зоопарк из разных версий php на домашнем сервере и мне это порядком надоело. Что можно сделать? Можно скинуть раритетное барахло в контейнеры, поднять Nginx Unit и работать уже с приложениями, а не кормить все старые проекты одному php-fpm’у. В настоящее время есть поддержка только одной точки входа, но в будущем создатели побожились, что сделают нормальный роутинг. С установкой Nginx 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 уже никогда не пересекутся и не будут конфликтовать или еще как-нибудь парить мозг при обновлениях. Конечно же, не стоит валить все ваши проекты в одно место. Лучше разделить их по разным контейнерам в зависимости от контекста.

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

Копирование и перенос контейнеров LXC

№ 8540 В разделе "Администрирование" от October 12th, 2017,

Понадобилось мне на днях перекинуть часть своих контейнеров на другой хост и призадумался я как же автоматизировать этот процесс. Ну, первое, что необходимо сделать это остановить контейнер. Далее его нужно сжать. После сжатия его можно сразу же стартовать, если вы просто копируете его.

Ниже приведен текст скрипта и я думаю вам не составит труда разобраться в нем самостоятельно.

Запускается root@boroda:~# ./lxc_move.sh inbox root@myserver.ru

#!/bin/bash
container_name="$1"
connect_string="$2"

if [ -z "$container_name" ];
then
 echo "Container name not given!"
 exit 1
fi

if [ -z "$connect_string" ];
then
 echo "Connect string not given!"
 exit 1
fi

#check status, if not STOPPED run again after tar
lxc_status=$(lxc-info -n $container_name|grep "STOPPED")

if [ -z "$lxc_status" ];
then
 lxc-stop -n "$container_name"
 run_again="yes"
fi

tar --numeric-owner -czvf /tmp/container_fs.tar.gz -C /var/lib/lxc/ $container_name

if [ -n "$run_again" ];
then
 lxc-start -n "$container_name"
fi

scp /tmp/container_fs.tar.gz $connect_string:/var/lib/lxc/
rm -f /tmp/container_fs.tar.gz
ssh $connect_string tar -xvf /var/lib/lxc/container_fs.tar.gz -C /var/lib/lxc/
ssh $connect_string rm -f /var/lib/lxc/container_fs.tar.gz

Хорошо бы еще добавить проверку на существование контейнера на удаленной машине. Вдруг он уже там? Но мне лень 🙂

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

Использование MySQL для хранения данных Confluence

№ 8443 В разделе "Администрирование" от August 25th, 2017,

Шаг 1. Положить библиотеку mysql-connector-java-5.1.38-bin, скачанную с официального сайта MySQL в директорию Lib и перезапустить сервис Confluence;
Шаг 2. Создать БД и юзера в MySQL;
Шаг 3. Не следовать подсказке как сделать URL для работы с utf-8, т.к. это вызовет ошибку.

Вот как надо:

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

Permission denied при попытке прошить arduino\esp8266

№ 8347 В разделах: Администрирование Программирование от July 7th, 2017,

Просто добавьте вашего пользователя в группу dialout и перелогиньтесь.

vlad@vlad-notebook:~$ sudo adduser vlad dialout

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

Комментарии

  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно...
  • 21h: слушать никто не запрещает. нет закона, который запрещает...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете...

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