Мне недавно захотелось странного - делать diff для файлов odt и pdf.
Скрипт вытаскивает текст из двух файлов (doc,odt,docx,pdf,xls,xlsx,ods,rtf) и сравнивает эти тексты в моей любимой программе meld.
Я применяю этот скрипт для сравнения файлов в Eclipse. Для этого надо поставить плагин (http://sourceforge.net/projects/externaldiff/). В SVN плагине Subversive уже есть функция External diff. А затем в качестве внешней команды сравнения настроить этот скрипт.
Установка зависимостей (команда для Ubuntu):
sudo apt-get install odt2txt python-pdfminer catdoc antiword unoconv
12.11.13
10.11.13
Динамические виртуальные хосты (dynamic vhost) в nginx
У apache есть такая полезная вещь как dynamic vhost - динамические виртуальных хосты. Собственно, оно нужно для того, чтобы каждый раз при добавлении домена, не было нужды редактировать файл конфигурации. Достаточно один раз настроить, добавить\обновить DNS запись и добавить директорию на сервер.
Так вот до недавнего времени, мне не было нужды в динамических виртуальных хостах, но не так давно понадобилось сделать и я, признаться, немного был поражён тому, насколько это просто, лаконично и главное гибко можно настроить в nginx.
Так вот до недавнего времени, мне не было нужды в динамических виртуальных хостах, но не так давно понадобилось сделать и я, признаться, немного был поражён тому, насколько это просто, лаконично и главное гибко можно настроить в nginx.
Не буду томить, всё действительно очень просто:
server {
server_name $host;
root /var/www/$host;
...
}
По большему счёту это всё, но на практике хорошо бы проверять наличие директории, и если такой нет - показывать 404 ошибку:
server_name $host;
if (!-d /var/www/$host) {
return 404;
}
root /var/www/$host;
Если необходимо только для поддоменов то:
server_name $subdomain.example.com;
if (!-d /var/www/$subdomain.example.com) {
return 404;
}
root /var/www/$subdomain.example.com;
Или вместо 404 ошибки можно сделать перенаправление (редирект, если будет угодно) на основной:
server_name $subdomain.example.com;
if (!-d /var/www/$subdomain.example.com) {
rewrite ^/(.*) http://example.com permanent;
}
root /var/www/$subdomain.example.com;
Ну и совсем универсальный вариант для доменов и поддоменов:
server {
set $basepath "/var/www";
set $domain $host;
if ($domain ~ "^(.[^.]*)$") {
set $domain $1;
set $rootpath "${domain}/html/";
set $servername "${domain}";
}
if ($domain ~ "^(.*)\.(.[^.]*)$") {
set $subdomain $1;
set $domain $2;
set $rootpath "${subdomain}.${domain}/html/";
set $servername "${subdomain}.${domain}";
}
if (!-d $basepath/$rootpath) {
return 404;
}
server_name $servername;
root $basepath/$rootpath/;
}
28.10.13
Установка Arch по сети
Цель:
загрузить по сети установочный образ Арча посредством PXE, например для последующей его установки или использовать его для чего-нибудь ещё.
PXE - проще говоря это код в микросхеме ПЗУ сетевой карты который получив по сети исполняемый файл (к примеру загрузчик ОС) передаёт ему управление. Всё это работает в пределах локальной сети.
Начальные условия:
Комп1 - здесь крутится любая операционная система с установленным VirtualBox, отсюда будем проводить экспансию на Комп2.
Комп2 - железо поддерживающее загрузку по сети и которое предварительно настраиваем в BIOS.
ISO образ Арча - скачиваем с офф. сайта
Наличие сети между Комп1 и Комп2 - соединение напрямую по витой паре либо через роутер с предварительно отключённым в нём DHCP (чтобы избежать всяких непредвиденных коллизий). В принципе DHCP-сервер в роутере можно и не отключать, у меня к примеру он работал.
И так, приступим.
Фаза первая.
Настройка окружения виртуальной машины (ВМ) и её запуск на Компе1.
--------------------------------------------------------------------------------------------------
Создадим окружение ВМ. Есть два варианта, либо через консоль, либо через GUI.
Плюс консоли в том что можно, при желании, создать скрипт с помощью которого за пару секунд развернётся требуемое окружение ВМ.
Главное что нам понадобится это сеть через мост и виртуальный привод с загруженным исошником установочного образа Арча.
Вот минимально необходимая конфигурация.
Возможно пригодятся команды выключить и удалить ВМ:
Конечно самым простым одноразовым вариантом будет создать среду ВМ через графический интерфейс виртуалбокса.
Так примерно будет выглядеть эта конфигурация.

В принципе есть и третье решение с помощью экспорта/импорта конфигурации ВМ, тогда всё сводится к паре кликов, но конечно же сначала надо эту конфигурацию подготовить с помощью одного из двух вышеперечисленных вариантов.
Возможно пригодятся команды экспорт и импорт ВМ:
Запускаем ВМ

Фаза вторая.
Настройка ВМ Arch1 для раздачи по сети установочного образа.
-----------------------------------------------------------------------------------------
Допустим имеем локальную сеть, к примеру: 192.168.3.0/24
24 - маска сети, тоже самое что и 255.255.255.0, если не знаете как перевести то можно глянуть здесь
пусть роутер шифруется по адресу: 192.168.3.1 (если есть)
естественно у юного падавана сеть может немного отличатся, поэтому везде ставим свои настройки.
Если DHCP-сервер в роутере отключён или компы связаны напрямую то нужно сначала задать IP-адрес. К примеру такой:
enp0s3 - это название моего сетевого интерфейса в Arch1, он может отличатся, посмотреть можно в выводе команды ip a.
DNSMASQ - это DHCP, TFTP и DNS в одном флаконе.
Настраиваем его:
здесь может поменяться только:
interface - это интерфейс виртуальной сетевой карты Arch1.
dhcp-range - диапазон адресов, маска сети и время аренды адреса. Из этого диапазона будет выдан IP-адрес Arch2, диапазон можно указать любой, главное чтобы Arch1 и Arch2 находились в одной сети.
Запускаем dnsmasq:
если что то не заладилось смотрим:
(можно запустить во втором терминале Alt+F2 чтобы мониторить)
будет указан номер строки конфига dnsmasq где допустили ошибку.
если что-то поменяли или исправили в конфиге то сервис нада перезапустить:
Теперь осталось познать тёмную сторону силы:

оно не зависло, оставляем в таком состоянии, это заработал наш веб-сервер :)
Фаза третья.Заключительная.
Загрузка по сети установочного образа Arch2 на Компе2 и выход в мировую паутину.
-------------------------------------------------------------------------------
Время пришло юный джедай, пора отправляться в путь.
Запускаем Комп2, не забыв предварительно поставить загрузку по сети в Биосе.
Если что-то пошло не так то на Арч1 проследим за событиями dnsmasq:
Пошла жара.

Мы используем для загрузки образа HTTP протокол.

Если всё ОК то мы увидим строку приглашения Арч2.Звезду смерти Арч1 можно тушить.

Как видим пинг будет работать в пределах нашей локальной сети.
Чтобы иметь выход в интернет перекинем шлюз с Арч1 на роутер (это конечно если сам роутер имеет выход в интернет):
где eth0 это сетевой интерфейс Arch2, посмотреть можно командой ip a

Напоследок пощекочем корпорацию добра:
Всё теперь можно устанавливать Арч3 на Комп2, или использовать Arch2 для чего-нибудь ещё :)
загрузить по сети установочный образ Арча посредством PXE, например для последующей его установки или использовать его для чего-нибудь ещё.
PXE - проще говоря это код в микросхеме ПЗУ сетевой карты который получив по сети исполняемый файл (к примеру загрузчик ОС) передаёт ему управление. Всё это работает в пределах локальной сети.
Начальные условия:
Комп1 - здесь крутится любая операционная система с установленным VirtualBox, отсюда будем проводить экспансию на Комп2.
Комп2 - железо поддерживающее загрузку по сети и которое предварительно настраиваем в BIOS.
ISO образ Арча - скачиваем с офф. сайта
Наличие сети между Комп1 и Комп2 - соединение напрямую по витой паре либо через роутер с предварительно отключённым в нём DHCP (чтобы избежать всяких непредвиденных коллизий). В принципе DHCP-сервер в роутере можно и не отключать, у меня к примеру он работал.
И так, приступим.
Фаза первая.
Настройка окружения виртуальной машины (ВМ) и её запуск на Компе1.
--------------------------------------------------------------------------------------------------
Создадим окружение ВМ. Есть два варианта, либо через консоль, либо через GUI.
Плюс консоли в том что можно, при желании, создать скрипт с помощью которого за пару секунд развернётся требуемое окружение ВМ.
Главное что нам понадобится это сеть через мост и виртуальный привод с загруженным исошником установочного образа Арча.
Вот минимально необходимая конфигурация.
nano Arch1.sh
#!/bin/sh
# Создадим новую ВМ с именем Arch1:
vboxmanage createvm --name Arch1 --ostype ArchLinux_64 --register
# Выделим подходящий объем оперативной памяти (в принципе нам по умолчанию и так хватает):
# vboxmanage modifyvm Arch1 --memory 128
# Оборудуем контроллером для подлючения CD-привода:
vboxmanage storagectl Arch1 --name "sata" --add sata
# Подключим iso образ, здесь "./archlinux-2013.10.01-dual.iso" путь задаётся относительно запуска команды, iso и sh файлы лежат у меня в одной папке:
vboxmanage storageattach Arch1 --storagectl "sata" --port 0 --type dvddrive --medium ./archlinux-2013.10.01-dual.iso
# Установим сеть в режим сетевого моста, здесь enp2s0 имя сетевого интерфейса хост системы, может отличатся:
vboxmanage modifyvm Arch1 --nic1 bridged --bridgeadapter1 enp2s0
# Запуск ВМ:
vboxmanage startvm Arch1
chmod +x Arch1.sh ./Arch1.sh
Возможно пригодятся команды выключить и удалить ВМ:
vboxmanage controlvm Arch1 poweroff vboxmanage unregistervm Arch1 --delete
Конечно самым простым одноразовым вариантом будет создать среду ВМ через графический интерфейс виртуалбокса.
Так примерно будет выглядеть эта конфигурация.
В принципе есть и третье решение с помощью экспорта/импорта конфигурации ВМ, тогда всё сводится к паре кликов, но конечно же сначала надо эту конфигурацию подготовить с помощью одного из двух вышеперечисленных вариантов.
Возможно пригодятся команды экспорт и импорт ВМ:
vboxmanage export Arch1 -o Arch1.ova vboxmanage import Arch1.ova
Запускаем ВМ
Фаза вторая.
Настройка ВМ Arch1 для раздачи по сети установочного образа.
-----------------------------------------------------------------------------------------
Допустим имеем локальную сеть, к примеру: 192.168.3.0/24
24 - маска сети, тоже самое что и 255.255.255.0, если не знаете как перевести то можно глянуть здесь
пусть роутер шифруется по адресу: 192.168.3.1 (если есть)
естественно у юного падавана сеть может немного отличатся, поэтому везде ставим свои настройки.
Если DHCP-сервер в роутере отключён или компы связаны напрямую то нужно сначала задать IP-адрес. К примеру такой:
ip a a 192.168.3.12/24 dev enp0s3
DNSMASQ - это DHCP, TFTP и DNS в одном флаконе.
Настраиваем его:
rm /etc/dnsmasq.conf nano /etc/dnsmasq.conf
port=0
interface=enp0s3
bind-interfaces
dhcp-range=192.168.3.20,192.168.3.40,255.255.255.0,2h
dhcp-boot=/arch/boot/syslinux/pxelinux.0
dhcp-option-force=209,boot/syslinux/archiso.cfg
dhcp-option-force=210,/arch/
enable-tftp
tftp-root=/run/archiso/bootmnt/
здесь может поменяться только:
interface - это интерфейс виртуальной сетевой карты Arch1.
dhcp-range - диапазон адресов, маска сети и время аренды адреса. Из этого диапазона будет выдан IP-адрес Arch2, диапазон можно указать любой, главное чтобы Arch1 и Arch2 находились в одной сети.
Запускаем dnsmasq:
systemctl start dnsmasq.service
если что то не заладилось смотрим:
journalctl -xn
будет указан номер строки конфига dnsmasq где допустили ошибку.
если что-то поменяли или исправили в конфиге то сервис нада перезапустить:
systemctl restart dnsmasq.service
Теперь осталось познать тёмную сторону силы:
darkhttpd /run/archiso/bootmnt/
оно не зависло, оставляем в таком состоянии, это заработал наш веб-сервер :)
Фаза третья.Заключительная.
Загрузка по сети установочного образа Arch2 на Компе2 и выход в мировую паутину.
-------------------------------------------------------------------------------
Время пришло юный джедай, пора отправляться в путь.
Запускаем Комп2, не забыв предварительно поставить загрузку по сети в Биосе.
Если что-то пошло не так то на Арч1 проследим за событиями dnsmasq:
journalctl -u dnsmasq -f
Пошла жара.
Мы используем для загрузки образа HTTP протокол.
Если всё ОК то мы увидим строку приглашения Арч2.
Как видим пинг будет работать в пределах нашей локальной сети.
Чтобы иметь выход в интернет перекинем шлюз с Арч1 на роутер (это конечно если сам роутер имеет выход в интернет):
ip route change via 192.168.3.1 dev eth0
Напоследок пощекочем корпорацию добра:
ping 8.8.8.8 -i 0.01
Всё теперь можно устанавливать Арч3 на Комп2, или использовать Arch2 для чего-нибудь ещё :)
Підписатися на:
Дописи (Atom)