28 Апрель, 2015

Как установить Win 2008 на Ubuntu-сервере?

Рецепт простой:

1) apt-get update

2) apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

3) wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/virtio-win-0.1-100.iso

4) virt-install --name=srv1 --ram=2000 --boot=cdrom,hd --disk=path=srv1hd,size=100,bus=virtio --disk path=virtio-win-0.1-100.iso,device=cdrom,perms=ro --cdrom=/home/archive_rescue/data/IsoImages/ru_windows_server_2008_r2.iso --os-type=windows --os-variant=win2k8 --graphics=vnc,password=123456 -w bridge:virbr0 --autostart

Потом пробрасываем VNC к себе на машину:

5) ssh -L 5900:localhost:5900 root@someserver.ru

6) Подключаемся к запущенной ВМ используя VNC-клиент. Адрес: localhost:5900

Рулить машиной через virsh

03 Апрель, 2015

Как распаковывать архивы разных форматов в Linux

На самом деле нет нужды заморачиваться вспоминая что сейчас нужно - tar zxf или tar jxf для конкретного случая (tar.gz и tar.bz).

Самый простой вариант это писать:

tar xf archivename

Утилита tar выберет нужный распаковщик автоматом.

Еще заодно напомню про команду file которая пытается определить тип указанного в аргументах файла. Очень полезная утилита на самом деле.

03 Апрель, 2015

Подменяем время на PHP

Возникают такие случаи когда во время разработки на PHP необходима возможность подмены времени. Можно конечно перевести часы в системе, но я бы так не рекомендовал делать ибо такое действие влечет за собой кучу проблем. А виртуальные сервера у некоторых хостеров могут и вовсе не грузиться после принудительной смены времени.

Так что самый безопасный способ это переопределение встроеных в PHP функций. Да, патчить и компилировать PHP мы не будем =)

Мы просто возьмем отсюда модуль PHP-TimeCop и установим его согласно приложенной инструкции.

После всех этих манипуляций нам остается только вызвать в начале скрипта вот такую функцию

$mytime = time()-86400;

timecop_freeze($mytime);

Таким образом мы зафиксировали в скрипте время ровно на сутки назад. Для удобства небольшой скрипт с этими двумя строчками можно подключать ко всем скриптам через директиву auto_prepend_file в .htaccess

11 Январь, 2015

Запускаем GUI-приложения в Docker

Предыстория такова - понадобился мне MySQL Workbench который в репозитории для Fedora Core 21 на момент написания статьи еще отсутствует. Сперва я попробовал накатить RPM-пакет от FC20, но он не смог установиться из-за неразрешенных зависимостей. Потом я взял в руки Docker и вот что получилось:

1) Создаем Dockerfile где описываем что мы хотим получить:

vim Dockerfile
FROM debian
RUN apt-get update
RUN apt-get install -qqy x11-apps mysql-workbench
ENV DISPLAY :0
CMD /usr/bin/mysql-workbench

2) Собираем наш контейнер с последним Debian и установленным MySQL-Workbench

docker build -t workbench - < Dockerfile

3) Объявляем для удобства переменную

XSOCK=/tmp/.X11-unix/X0

4) Запускаем контейнер и прокидываем в него сокет. Контейнер автоматически стартует MySQL-Workbench при запуске

docker run --privileged -v $XSOCK:$XSOCK workbench

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

MySQL Workbench running on Docker-container

23 Декабрь, 2014

Как зашифровать большие файлы?

В этом нам поможет утилита openssl.

Публикую 2 варианта т.к. первый опубликованный оказался с недостатком. Зашифровать большие файлы можно, но вот расшифровать можно только файлы размером менее 1.5 Gb. Такой вот неприятный сюрприз.

Вариант 1 (только для файлов менее 1.5Gb)

Для начала генерируем нашу пару ключей которая делится на приватную и публичную части. Публичной можно только шифровать файлы. Расшифровывать их надо с применением приватного ключа.

openssl req -x509 -nodes -newkey rsa:2048 -keyout private.pem -out public.pem

Шифруем наши файлики:

openssl smime -encrypt -aes256 -in file.tar.gz -binary -outform DEM -out file.tar.gz.ssl public.pem

Расшифровываем:

openssl smime -decrypt -in file.tar.gz.ssl -binary -inform DEM -inkey private.pem -out file.tar.gz

На целевой машине где файлы будут шифроваться есть смысл держать только публичный ключ. А закрытую часть ключа хранить в особо секретном месте =)

Вариант 2 (с явными ограничениями не столкнулся)

Генерируем текстовый ключ:

openssl rand -base64 32 -out key.txt

Шифруем файлы:

openssl enc -aes-256-cbc -salt -in file.tar.gz -out file.tar.gz.enc -pass file:./key.txt

Дешифруем файлы:

openssl enc -d -aes-256-cbc -in file.tar.gz.enc -out file.tar.gz -pass file:./key.txt

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

Новые записи →Home← Старые записи