среда, 22 июля 2015 г.

Не стартует httpd в CentOS 7

Проблема проявилась в связке ISPmanager 5 Business и CentOS 7.

При попытке перезапуска httpd, выходит ошибка о том, что невозможно перезапустить сервис:
# service httpd status
Redirecting to /bin/systemctl status httpd.service
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: failed (Result: exit-code) since Sat 2015-07-18 09:45:40 MSK; 2min 12s ago
Process: 2471 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
Process: 1401 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
Main PID: 1401 (code=exited, status=1/FAILURE)
CGroup: /system.slice/httpd.service

Jul 18 09:45:40 localhost systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Jul 18 09:45:40 localhost kill[2471]: kill: cannot find process ""
Jul 18 09:45:40 localhost systemd[1]: httpd.service: control process exited, code=exited status=1
Jul 18 09:45:40 localhost systemd[1]: Failed to start The Apache HTTP Server.
Jul 18 09:45:40 localhost systemd[1]: Unit httpd.service entered failed state.

При этом в логах httpd ошибка такая:
# tail -f /var/log/httpd/error_log 
AH00015: Unable to open logs

Проблема в том, что systemd считал, что не хватает файловых дескрипторов для запуска httpd через httpd.service.

Решение:
# ulimit -n
16384

# mkdir -p /etc/systemd/system/httpd.service.d/
# echo -e "[Service]\nLimitNOFILE=16384" >> /etc/systemd/system/httpd.service.d/nofile.conf
# systemctl daemon-reload
# systemctl start httpd.service

вторник, 21 июля 2015 г.

[an error occurred while processing the directive]

Эта ошибка означает, что произошла ошибка при обработке SSI
Отключить ошибки:
# vim /etc/nginx/vhosts/username/site.ru.conf
ssi_silent_errors on;

# service nginx restart

пятница, 17 июля 2015 г.

Nginx (24: Too many open files) и CentOS 7

При попытке перезапуска nginx возникает ошибка:
2015/07/17 23:12:49 [emerg] 3688#0: open() "/var/www/httpd-logs/site.ru.error.log" failed (24: Too many open files)

Просто запуск:
# ulimit -n 16384
и перезапуск nginx не помогает.

Решение:
# vim /usr/lib/systemd/system/nginx.service
LimitNOFILE=16384

# systemctl --system daemon-reload
# service nginx restart

Чтобы обновление nginx не перезатерло конфиг, следует создать файл /etc/systemd/system/nginx.service.d/override.conf:
[Service]
LimitNOFILE=16384

суббота, 11 июля 2015 г.

Настройка беспроводного моста между роутерами D-Link и TP-LINK

Имеются маршрутизаторы D-Link DIR-615 и TP-LINK TL-WR740N.
Задача, увеличить зону покрытия wi-fi за счет настройки моста между ними.
Схема примерно такая:
WAN -> D-Link -> TP-LINK -> Клиенты
          |-> Клиенты

Настройка первого маршрутизатора (D-Link).
Доступ к админ панели по адресу: http://192.168.0.1/

пятница, 10 июля 2015 г.

Защита Dnsmasq от DNS Amplification

# vim /etc/dnsmasq.conf
no-resolv
dns-forward-max=0

# service dnsmasq restart

Проверка:
# dig @$IP +edns=0 +ignore +noadflag com ANY

четверг, 9 июля 2015 г.

Unable to open pty: No such file or directory

Никогда не обновляйтесь на OpenVZ-контейнерах командой:
# apt-get dist-upgrade
или ей подобной, потому что может случиться такое:
# vzctl enter $CTID
Unable to open pty: No such file or directory

Как лечить:
# vzctl exec $CTID "cd /dev; /sbin/MAKEDEV pty"
# vzctl exec $CTID "cd /dev; /sbin/MAKEDEV tty"
# vzctl enter $CTID

Поднимаем сеть:
# ifconfig venet0 up
# ip a add $IP/32 dev venet0
# ip ro add default dev venet0
# ping ya.ru -c 1
PING ya.ru (93.158.134.3) 56(84) bytes of data.
64 bytes from www.yandex.ru (93.158.134.3): icmp_req=1 ttl=57 time=1.44 ms
--- ya.ru ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.444/1.444/1.444/0.000 ms

IP-адрес смотрим в своем /etc/network/interfaces.

Если это Debian, то удаляем sysvinit и устанавливаем upstart:
# cat /etc/issue
Debian GNU/Linux 7 \n \l
# apt-get remove sysvinit
# apt-get install upstart

Ребутаем контейнер, заходим в него и проверяем:
# vzctl restart $CTID
# vzctl enter $CTID

А вот причина возникновения проблемы:
# zcat /var/log/apt/history.log.1.gz | grep dist -B1
Start-Date: 2015-06-22  12:54:14
Commandline: apt-get dist-upgrade

Потому что влечет за собой это:
# zcat /var/log/apt/history.log.1.gz | grep upstart -A1
Remove: upstart:i386 (1.6.1-1)
End-Date: 2015-06-22  12:56:12

среда, 8 июля 2015 г.

Как пинговать кириллические домены

В некоторых дистрибутивах, например Ubuntu и ей подобных нельзя пинговать кириллические домены:
$ ping рег.рф
ping: unknown host рег.рф

Решение:
$ sudo apt-get install idn
$ ping `idn рег.рф` -c 1
PING xn--c1ad6a.xn--p1ai (194.58.116.37) 56(84) bytes of data.
64 bytes from xn--c1ad6a.xn--p1ai (194.58.116.37): icmp_seq=1 ttl=58 time=30.9 ms

--- xn--c1ad6a.xn--p1ai ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 30.961/30.961/30.961/0.000 ms

пятница, 3 июля 2015 г.

Отображение времени в Thunderbird в 24-часовом формате

Установленные в системе локали:
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=

Время в Thunderbird у меня отображается в 12-часовом формате, для меня это неудобно.
Менять LC_TIME, допустим, для всей системы я не хочу.

Смена локали только для Thunderbird.

Ищем Thunderbird:
$ which thunderbird
/usr/bin/thunderbird

Генерируем локаль, если до сих пор не сгенерирована:
$ sudo locale-gen ru_RU.UTF-8

Прописываем локаль только для Thunderbird:
$ sudo vim /usr/bin/thunderbird
#!/bin/sh
LC_TIME="ru_RU.UTF-8"
export LC_TIME
...

Перезапускаем Thunderbird.

Если же нужно выставить LC_TIME системно, то можно прописать:
$ vim ~/.profile
LC_TIME="ru_RU.UTF-8"
export LC_TIME