Apache: (28)No space left on device

Запись создана 9 сентября, 2008

По разным причинам (например утечка памяти в mod_perl), заканчиваются свободные семафоры, Apache падает, и подыматься отказывается, мотивируя это пространной ошибкой: (28)No space left on device

Допустим апач работает от пользователя httpd, тогда для того чтобы посмотреть занятые семафоры сделаем:

ipcs -s | grep httpd

ну и собственно живительная пилюля, убивающая занятые семафоры:

[cc lang=»bash»]
ipcs -s | grep httpd | perl -e ‘while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}’

или

ipcs -s | grep httpd | gawk ‘{ print $2 }’ | xargs -n 1 ipcrm sem
[/cc]

» Запись из раздела web server | Комментировать

linux hardware lister — выводим список железа

Запись создана 24 августа, 2008

Несколько статей в этом блоге посещалось определению материнской платы, дисковой системы. Наткнулся на замечательную тулзу которая позволяет определить ещё остальное. Установка и пример использования ниже. Ставить будем на Centos 5.2 из rpmforge.
[cc lang=»bash»]
[root@dev2 ~]# yum install lshw -y
[root@dev2 ~]# lshw -short
H/W path Device Class Description
======================================================
system VT82C694X
/0 bus 694X-686
/0/0 memory 128KiB BIOS
/0/4 processor Celeron (Coppermine)
/0/4/a memory 32KiB L1 cache
/0/4/b memory 128KiB L2 cache
/0/1f memory 512MiB Flash Memory
/0/1f/0 memory 128MiB DIMM
/0/1f/1 memory 256MiB DIMM
/0/1f/2 memory 128MiB DIMM
/0/1f/3 memory DIMM [empty]
/0/100 bridge VT82C693A/694x [Apollo PRO133x]
/0/100/1 bridge VT82C598/694x [Apollo MVP3/Pro133x AGP]
/0/100/1/0 display NV11DDR [GeForce2 MX200]
/0/100/7 bridge VT82C686 [Apollo Super South]
/0/100/7.1 storage VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE
/0/100/7.1/0 ide0 bus IDE Channel 0
/0/100/7.1/0/0 /dev/hda disk TOSHIBA DVD-ROM SDM2012C
/0/100/7.1/0/1 /dev/hdb disk 120GB ST3120026A
/0/100/7.1/0/1/1 /dev/hdb1 volume 32GiB EXT3 volume
/0/100/7.1/0/1/2 /dev/hdb2 volume 39GiB EXT3 volume
/0/100/7.1/0/1/3 /dev/hdb3 volume 39GiB EXT3 volume
/0/100/7.1/0/1/4 /dev/hdb4 volume 1506MiB Linux swap volume
/0/100/7.1/0/1/4/5 /dev/hdb5 volume 1498MiB Linux swap / Solaris partition
/0/100/7.1/1 ide1 bus IDE Channel 1
/0/100/7.1/1/0 /dev/hdc disk 120GB ST3120814A
/0/100/7.1/1/0/1 /dev/hdc1 volume 111GiB EXT3 volume
/0/100/7.2 bus VT82xxxxx UHCI USB 1.1 Controller
/0/100/7.2/1 usb1 bus UHCI Host Controller
/0/100/7.3 bus VT82xxxxx UHCI USB 1.1 Controller
/0/100/7.3/1 usb2 bus UHCI Host Controller
/0/100/7.4 bridge VT82C686 [Apollo Super ACPI]
/0/100/7.5 multimedia VT82C686 AC97 Audio Controller
/0/100/9 eth0 network VT6105 [Rhine-III]
[/cc]

» Запись из раздела CentOS Linux | 2 комментария

Добавляем диапазон ip адресов.

Запись создана 24 августа, 2008

Без лишних слов привожу листинги, однозначно работает это в Red Hat, Fedora Core ну и в CentOS на примере которого и буду показывать.

[cc lang=»bash»]
[root@dev2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:0
# VIA Technologies, Inc. VT6105 [Rhine-III]
DEVICE=eth0:0
HWADDR=00:04:23:dc:ef:29
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=192.168.12.222
GATEWAY=192.168.12.100
TYPE=Ethernet
[/cc]

[cc lang=»bash»]
[root@dev2 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0-range0
IPADDR_START=192.168.12.223
IPADDR_END=192.168.12.230
CLONENUM_START=1
[/cc]

рестартим сеть /etc/init.d/network restart

и получаем желаемое:
[cc lang=»bash»]
inet 192.168.12.200/24 brd 192.168.12.255 scope global eth0
inet 192.168.12.222/24 brd 192.168.12.255 scope global secondary eth0:0
inet 192.168.12.223/24 brd 192.168.12.255 scope global secondary eth0:1
inet 192.168.12.224/24 brd 192.168.12.255 scope global secondary eth0:2
inet 192.168.12.225/24 brd 192.168.12.255 scope global secondary eth0:3
inet 192.168.12.226/24 brd 192.168.12.255 scope global secondary eth0:4
inet 192.168.12.227/24 brd 192.168.12.255 scope global secondary eth0:5
inet 192.168.12.228/24 brd 192.168.12.255 scope global secondary eth0:6
inet 192.168.12.229/24 brd 192.168.12.255 scope global secondary eth0:7
inet 192.168.12.230/24 brd 192.168.12.255 scope global secondary eth0:8
[/cc]

» Запись из раздела CentOS Linux, networking | Комментировать

Включаем IP Forwarding в Linux

Запись создана 23 августа, 2008

По умолчанию в большинстве дистрибутивов IP Forwarding выключен, но форвардинг может понадобится если на сервере будет подниматься VPN или например это будет роутер.

Проверить включен ли IP Forwarding можно так:
[cc lang=»bash»]
sysctl net.ipv4.ip_forward
cat /proc/sys/net/ipv4/ip_forward
[/cc]

Включить можно так (действовать будет до перезагрузки):
[cc lang=»bash»]
sysctl -w net.ipv4.ip_forward=1
или
echo 1 > /proc/sys/net/ipv4/ip_forward
[/cc]

Или жётско включить (действовать будет и после перезагрузки):
[cc lang=»bash»]
# grep forward /etc/sysctl.conf
net.ipv4.ip_forward = 1
[/cc]

В RedHat подобных:
[cc lang=»bash»]
# grep -i forward /etc/sysconfig/network
FORWARD_IPV4=true
[/cc]

в Debian (Ubuntu):
[cc lang=»bash»]
# grep -i forward /etc/network/options
ip_forward=yes
[/cc]
После правки конфигов (перманентное включение) необходимо перезапустить сеть. например, /etc/init.d/network restart

Note that: В OpenVPN используется первый способ (изменение на лету), это прописано в стартап скриптах.

» Запись из раздела CentOS Linux, networking, Unix | 5 комментариев

выводим список процессов windows в коммандной строке

Запись создана 20 августа, 2008

Список текущих процессов можно вывести при помощи Windows Instrumentation command-line interface (WMIC) или pstools, ниже несколько примеров.

список процессов локальной машины:
[cc lang=»dos»]wmic process get description,executablepath[/cc]

Список процессов удалённой машины:
[cc lang=»dos»]wmic /node:имя_удалённой_машины process get description,executablepath[/cc]

Вывод списка можно направить в файл:
[cc lang=»dos»]wmic /output:c:\process.txt process get description,executablepath [/cc]

Ну и любимые PsTools, конечно же:
[cc lang=»dos»]pslist[/cc]
[cc lang=»dos»]pslist \\имя_удалённой_машины [/cc]

При помощи PsTools можно так же:
* PsExec — запуск приложения на удалённой машине
* PsFile — отобразить список открытых файлов
* PsGetSid — отобразить SID машины или пользователя
* PsInfo — информация о машине
* PsKill — убить процесс по номеру ID (удалённо или локально)
* PsList — детализированная информация о процессах.
* PsLoggedOn — отобразить всех залогиненых и удалённых пользователей
* PsLogList — дамп с евент-лога
* PsPasswd — изменение пароля на аккаунты.
* PsService — управление сервисами (удобнее чем логиниться telnet и делать net start|stop|pause)
* PsShutdown — выключение или перезапуск системы (хотя есть встренная системная утилита shutdown)
* PsSuspend — саспенд процессов
* PsUptime — аптайм системы с последней перезагрузки.

добавим сюда возможности которые нам даёт UnxUtils и Gawk for Windows, и жизнь в CLI под windows становится приятнее.

» Запись из раздела windows | Комментировать

proftpd докачка файлов

Запись создана 6 августа, 2008

В дефолтной установке proftpd докачка файлов отключена и ftp клиент может выдавать ошибку:

Append/Restart Not permitted, try again

Исправить ситуацию поможет директива, прописанная в proftpd.conf:

AllowStoreRestart on

» Запись из раздела web server | Комментировать

Смена временной зоны в Linux

Запись создана 1 августа, 2008

Меняем Timezone на машине с кривым временем Fri Aug 1 15:03:20 EDT 2008
[cc lang=»bash»]
mv /etc/localtime /etc/localtime-old
ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
ntpdate -s time.nist.gov
hwclock —systohc
[/cc]

Поясниловка или что было сделано. Убираем текущий файл таймзоны, делаем симлинк на временную зону Москвы, синхронизируем системное время с ntp сервером, устанавливаем апаратные часы в соответствии с системными часами.

» Запись из раздела CentOS Linux | Комментировать

proftpd vs symlinks

Запись создана 1 августа, 2008

Описываю ситуацию, на сервере установлен proftpd (CentOS 5.2 Linux), включен анонимный доступ для всех желающих, расшарены папки:

/var/ftp/pub
/var/ftp/uploads

У юзера shakirov в хоумдире есть папка iso с кучей iso-шек которые он хочет предоставить в анонимный доступ. Первое что приходит в голову это ln -s /home/shakirov/iso /var/ftp/pub
симлинк создаётся прекрасно, но доступа как небыло так и нет (несмотря на то что ftp юзерам вроде-бы показывается символическая ссылка) а всё по простой причине, proftpd не умеет ходить по симлинкам. Тут на помощь приходит комманда mount, ниже пример для конкретного примера:
[cc lang=»bash»]
[root@dev2 ~]# mount —bind /home/shakirov/iso/ /var/ftp/pub/iso/
[root@dev2 ~]# mount -l
/home/shakirov/iso on /var/ftp/pub/iso type none (rw,bind)
[/cc]

Этого более чем достаточно. Для того чтобы этот трюк работал и после перезагрузки, необходимо в /etc/fstab прописать соответствующую строчку. Для конкретного примера будет:
[cc lang=»bash»]
/home/shakirov/iso /var/ftp/pub/iso none bind
[/cc]

» Запись из раздела CentOS Linux | 3 комментария

Invalid command ‘AuthDigestProvider’

Запись создана 1 августа, 2008

Если включить дефолтный конфиг /usr/local/apache2/conf/extra/httpd-dav.conf веб сервера Apache 2 и стартануть апача, то возможна ошибка:
[cc lang=»bash»]
Syntax error on line 30 of /usr/local/apache2/conf/extra/httpd-dav.conf:
Invalid command ‘AuthDigestProvider’, perhaps misspelled or defined by a module not included in the server configuration
[/cc]

а всё по тому что апач был собран без параметра

 --enable-auth-digest

» Запись из раздела web server | Комментировать

whois и домены .me

Запись создана 1 августа, 2008

Буквально месяц назад была открыта регистрация доменов в зоне .me для всех желающих. Зона .me пренадлежит стране Montenegro (кусок югославии).
По информации от IANA доменная зона обслуживается whois службой whois.nic.me, но есть несколько сложностей с просмотром whois данных по доменам, например в CentOS 5.2 jwhois-3.2.3-8.el5 при запросе любого домена, запрос направляется на whois.internic.net, который в свою очередь отдаёт «No match for domain».

Что же делать? ответ как всегда прост, править /etc/jwhois.conf и вносить зону. В конфиг /etc/jwhois.conf необходимо внести строчку:
[cc lang=»bash»] «\\.me$» = «whois.nic.me»; [/cc]
в соответствиями с рекомендацией/предписанием IANA, а теперь самое смешное, этот самый whois.nic.me не работает постоянно. Путём гугления был найден альтерантивный whois.
[cc lang=»bash»] «\\.me$» = «whois.meregistry.net»;[/cc]

который вполне сносно работает. А теперь ещё минута веселья, известный регистратор OnlineNIC похоже свой whois сервис настроить не удосужился, и на проверке любого домена .me выдаёт NOT FOUND.

» Запись из раздела Несортированное | 2 комментария

« предыдущая страницаследующая страница »