среда, 20 августа 2014 г.

Рекурсивный рерайт на CGI

Сделал челу пых как cgi (без супхп), у него стала валиться 500 ошибка из-за косяка с рерайтами:
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace
r->uri = /cgi-bin/php/index.php
redirected from r->uri = /index.php
redirected from r->uri = /cgi-bin/php/index.php
redirected from r->uri = /index.php
redirected from r->uri = /cgi-bin/php/index.php
redirected from r->uri = /index.php
redirected from r->uri = /cgi-bin/php/index.php
redirected from r->uri = /index.php
redirected from r->uri = /cgi-bin/php/index.php
redirected from r->uri = /index.php
redirected from r->uri = /

Сделал отдельный рерайт для cgi-bin/php, помогло:
RewriteCond %{REQUEST_URI} ^/cgi-bin/php(.*)
RewriteRule . - [L]

среда, 13 августа 2014 г.

Замена диска в софтовом md рэйде

Чтобы в маны не лазить:

# sfdisk -d /dev/sdb > sdb.out
# sfdisk /dev/sdc < sdb.out
# mdadm --manage /dev/md0 --remove /dev/sda2
# mdadm --manage /dev/md1 --add /dev/sdc2
# cat /proc/mdstat

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[2](F) sdb3[1]
      273659136 blocks [2/1] [_U]
      bitmap: 39/131 pages [156KB], 1024KB chunk

md0 : active raid1 sdc2[2] sdb2[1]
      8193024 blocks [2/1] [_U]
      [>....................]  recovery =  1.5% (128000/8193024) finish=2.0min speed=64000K/sec
      bitmap: 0/126 pages [0KB], 32KB chunk

md1 : active raid1 sdb1[1] sda1[2](F)
      30716160 blocks [2/1] [_U]
      bitmap: 48/235 pages [192KB], 64KB chunk

# mdadm --manage /dev/md1 --remove /dev/sda1
# mdadm --manage /dev/md1 --add /dev/sdc1
# mdadm --manage /dev/md2 --remove /dev/sda3
# mdadm --manage /dev/md2 --add /dev/sdc3

# cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sdc3[2] sdb3[1]
      273659136 blocks [2/1] [_U]
        resync=DELAYED
      bitmap: 39/131 pages [156KB], 1024KB chunk

md0 : active raid1 sdc2[0] sdb2[1]
      8193024 blocks [2/2] [UU]
      bitmap: 0/126 pages [0KB], 32KB chunk

md1 : active raid1 sdc1[2] sdb1[1]
      30716160 blocks [2/1] [_U]
      [=====>...............]  recovery = 28.7% (8835968/30716160) finish=6.7min speed=54126K/sec
      bitmap: 48/235 pages [192KB], 64KB chunk

воскресенье, 3 августа 2014 г.

Centos 5: from baremetal to Xen domU

Понадобилось перенести железный сервер с Centos 5 в ксен. Как обычно сделал лвмку, засинкал, поправил fstab, grub - не грузится. Ядро не катит.
Вспомнил, что pvops в Centos 5 не было, решил в чруте на лвмке поставить ксеновое ядро. Да вот хрен там. Видимо, с инитрд косяк. Тогда поступил так:
1. на исходном сервере установил ксеновое ядро.
2. отсинкал сервер заново
3. поправил fstab, поправил grub.conf, приведя ксеновую секцию к виду:
title CentOS (2.6.18-371.11.1.el5xen)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.18-371.11.1.el5xen ro root=/dev/xvda1
        initrd /boot/initrd-2.6.18-371.11.1.el5xen.img
4. на всякий пожарный пересобрал инитрд
5. поправил /etc/modprobe.conf:
alias eth0 xennet
alias eth1 xennet
alias scsi_hostadapter xenblk
#alias eth0 e1000
#alias eth1 e1000
#alias eth2 e1000
#alias scsi_hostadapter aacraid
#alias scsi_hostadapter1 ata_piix
После этого виртуалка поднялась.

UPDATE

Проделал то же самое с ещё одной машиной - не поднялась. Паника:

XENBUS: Device with no driver: device/console/0
XENBUS: Device with no driver: device/vbd/51713
XENBUS: Device with no driver: device/vbd/51714
XENBUS: Device with no driver: device/vif/0
XENBUS: Device with no driver: device/vif/1
Initalizing network drop monitor service
Write protecting the kernel read-only data: 506k
USB Universal Host Controller Interface driver v3.0
SCSI subsystem initialized
Adaptec aacraid driver 1.1-5[24702]
device-mapper: uevent: version 1.0.3
device-mapper: ioctl: 4.11.6-ioctl (2011-02-18) initialised: dm-devel@redhat.com
device-mapper: dm-raid45: initialized v0.2594l
Kernel panic - not syncing: Attempted to kill init!
Решил так:
mount /dev/vg_vm/s9 /1
mount --bind /proc /1/proc/
mount --bind /sys /1/sys
chroot /1/
yum erase kernel-xen
yum install kernel-xen
vi /boot/grub/grub.conf
 Видимо, руками инитрд плохо пересобрал

Xen: Freebsd 10 install

Как поставить на ксен фряху:
virt-install -n testbsd -r 512 --vcpus=1 -v --hvm --cdrom /root/FreeBSD-10.0-RELEASE-amd64-disc1.iso --disk path=/dev/vg_vm/testbsd --vnc --network=bridge:br0

После чего заходим по vnc и просто сетапим )

четверг, 31 июля 2014 г.

Xen domU wrong clock

Проблема с ксеном и часами - в виртуалках время сбито вперед на размер таймзоны. Т.е. время 12:00 MSK, а в машине 16:00 MSK. И так и сяк ковырял, пробовал разные ежимы часов для машины - только ещё хуже становилось, на двойной размер уползали часы.
Правил время через NTP. Пока не наткнулся, на машину, которая не переводила часы через NTP.
Стал опять возится с часами. Решил на ноде включить часы в UTC - и помогло, часы в виртуалках встали как надо:
hwclock -w --utc --debug

среда, 9 июля 2014 г.

Как попасть в Sagrada Familia без очереди

Если вы были в Барселоне, то наверняка ходили посмотреть на Саграда Фамилиа. И наверняка она вам понравилась и вы захотели попасть внутрь ) и внезапно очередь, которая тянется огибая весь квартал, в котором стоит базилика. Стоять там можно от 2 до 4 часов.
Попасть без очереди в нее очень просто - надо купить билеты онлайн.

Заходим на офсайт:  http://www.sagradafamilia.cat/sf-eng/docs_serveis/infoTarifesInd.php
Выбираем нужный нам вид посещения - например с аудиогидом и посещением башни:

Попадаем на https://www.clorian.com/site/SagradaFamilia/product/15/type/1?lang=en
Выбираем посетителей, число и время посещения, врямя захода в башню, например на Страстном фасаде:



Забиваем свои данные, забиваем карточку, и оплачиваем:



Получаем на почту  PDF с билетами.

ВНИМАНИЕ! Во вложении именно билеты! Ничего распечатывать в банкоматах не надо!

Осталось распечатать PDF. Возможно, что печатать билеты не надо, я заметил на входе для онлайн билетов табличку: "Ticket, smartfone, tablet".

Но на всякий случай, думаю, стоит напечать. Напечатать можно в т.н. переговорных - Locuteria, типа интернет кафе. В Йорет де Мар (Lloret de Mar) нашёл только в одном месте, подсказала тетушка из кафе, в котором обедали - рядом с Автовокзалом (bus terminal):


Вход с онлайн билетами с противоположной от касс стороны базилики - со стороны фасада Рождества.

пятница, 16 мая 2014 г.

Косяк с местом в openvz

Контейнер занимает 16 гиг, df внутри показывает 35 гиг.
vzquota show тоже показывает 35.

Лечим так:
vzqouta show 100
vzctl stop 100
vzquota drop 100
vzctl start 100
vzqouta show 100

Видим разницу )

понедельник, 12 мая 2014 г.

Заявочка

Ппц тут тикет свалился:
 
Около 6-8 месяцев назад, была подключена функция параллельного отражения электронной почтя на смартфоне I-phone 5.

Функция служебной электронной почты корректно работала в течении этого периода.

Вчера около 15 часов сообщения эл. Почты перестали приходить на смартфон.
На смартфоне всплывает окно – «подключение к серверу не удалось».

Настройки смартфона в разделе эл. Почте не изменялись.
Все настройки установлены в прежнем формате.
Я плакал

понедельник, 21 апреля 2014 г.

На EX4200 из VC не заводится RE

Был VC из 2х EX4200. Демонтировал, убрал на склад. Через некоторое время один из них понадобилось поставить отдельно.
Включаю, он говорил, что он linecard, даже конфиг не сохраняет.
Убрал из конфига синхронизацию конфига, закоммитилось.

Дальше выяснилось, что свич считает, что он член разделенного шасси и re на себе не запускает. Деактивация всей ветки vc не помогла. Добавил в конфиг vc no-split-detection и свич стал мастером )

вторник, 18 марта 2014 г.

openvpn bridge и selinux

Появилась нужда поднять openvpn как мост. Чтобы сразу клиента в частную сеть совать.
Сделал ключи, серты - как обычно.
Настроил сервер:
port 1194
proto tcp
dev tap0
tls-server
keepalive 10 120
persist-key
client-config-dir /etc/openvpn/cc
server-bridge 172.30.4.0 255.255.254.0 172.30.5.240 172.30.5.253
duplicate-cn
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpnserver.crt
key /etc/openvpn/keys/vpnserver.key
dh /etc/openvpn/keys/dh2048.pem
Сделал тап и мост:
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=00:AA:BB:11:22:33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
BRIDGE=br1

# cat /etc/sysconfig/network-scripts/ifcfg-tap0
DEVICE=tap0
ONBOOT=yes
TYPE=Tap
BOOTPROTO=none
BRIDGE=br1

# cat /etc/sysconfig/network-scripts/ifcfg-br1
DEVICE=br1
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.30.4.1
NETMASK=255.255.254.0
 А дальше запускаю сервер - и selinux не дает ему взлететь из-за отсутствия прав на тап:
Mar 18 22:24:09 vpn openvpn[1103]: ERROR: Cannot ioctl TUNSETIFF tap0: Permission denied (errno=13)
Mar 18 22:24:09 vpn openvpn[1103]: Exiting due to fatal error

type=SYSCALL msg=audit(1395167049.663:28): arch=c000003e syscall=16 success=no exit=-13 a0=6 a1=400454ca a2=7fffa15bc350 a3=8 items=0 ppid=1094 pid=1103 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="openvpn" exe="/usr/sbin/openvpn" subj=unconfined_u:system_r:openvpn_t:s0 key=(null)
type=AVC msg=audit(1395167130.413:29): avc:  denied  { relabelfrom } for  pid=1122 comm="openvpn" scontext=unconfined_u:system_r:openvpn_t:s0 tcontext=system_u:system_r:initrc_t:s0 tclass=tun_socket
Решил не отключать селинукс,  а сделать разрешение.

# audit2allow -w -a
type=AVC msg=audit(1395167049.663:28): avc:  denied  { relabelfrom } for  pid=1103 comm="openvpn" scontext=unconfined_u:system_r:openvpn_t:s0 tcontext=system_u:system_r:initrc_t:s0 tclass=tun_socket
        Was caused by:
                Unknown - would be allowed by active policy
                Possible mismatch between this policy and the one under which the audit message was generated.

                Possible mismatch between current in-memory boolean settings vs. permanent ones.

# audit2allow -a
#============= openvpn_t ==============

#!!!! This avc is allowed in the current policy
allow openvpn_t initrc_t:tun_socket relabelfrom;


# audit2allow -a -M myopenvpn
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i myopenvpn.pp

# cat myopenvpn.te

module myopenvpn 1.0;

require {
        type openvpn_t;
        type initrc_t;
        class tun_socket relabelfrom;
}

#============= openvpn_t ==============

#!!!! This avc is allowed in the current policy
allow openvpn_t initrc_t:tun_socket relabelfrom;

# semodule -i myopenvpn.pp
Вот теперь все работает )