четверг, 24 декабря 2015 г.

Как раскидать SSH-ключи по нескольким серверам

Занесем список всех серверов в файл:
$ vim server.list
server1.ru
server2.ru
192.168.0.100
192.168.0.101
...

Установим sshpass чтобы постоянно руками не вводить пароль:
# apt-get install sshpass

Маленький скрипт, который будет раскидывать ключи:
$ vim script.sh
#!/bin/bash
while read -r line
do
    echo "running $line"
    sshpass -p пароль ssh-copy-id имя_пользователя@$line -o "StrictHostKeyChecking no"
done < "server.list"

Запускам скрипт:
$ sh script.sh
running server1.ru
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added: 1
running server2.ru
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

Number of key(s) added: 1

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

Отмена базовой авторизации apache в поддиректории

Допустим на http://test.ru стоит базовая авторизация:
# cat .htaccess 
AuthName "Password, my lord?"
AuthType Basic
AuthUserFile /var/www/.htpasswd
require valid-user

# cat .htpasswd 
admin:$apr1$uvX28MPH1

И мы хотим, что бы для http://test.ru/dir2 авторизации не было:
# pwd
/var/www
# ls
dir1 dir2 dir3

Все что нужно сделать:
# vim dir1/.htaccess
Satisfy any
Order allow,deny
Allow from all

После этого авторизации для dir1 не будет.

пятница, 18 декабря 2015 г.

ERROR 1062 (23000) at line 1: Duplicate entry '1' for key 'PRIMARY'

Нужно было обновить таблицы с нового дампа.
При попытке дампа базы, появляется ошибка:
# mysql -uuser_base -p111 my_db < my_db.sql 
ERROR 1062 (23000) at line 1: Duplicate entry '1' for key 'PRIMARY'

Решение такое, нужно в дампе заменить все INSERT'ы на REPLACE'ы.
# cp my_db.sql my_db.sql_modified
# vim my_db.sql_modified
:%s/INSERT/REPLACE/g
:wq
или через sed:
# sed -i 's/INSERT/REPLACE/g' my_db.sql_modified

Пробуем заново импортировать модифицированный дамп:
# mysql -uuser_base -p111 my_db < my_db.sql_modified && echo OK
OK

пятница, 4 декабря 2015 г.

Запуск Dota 2 с произвольным разрешением экрана

В настройках запуска игры прописываем нужное разрешение:
-w 1440 -h 900 -sdl_displayindex 1

-sdl_displayindex 1 мне понадобилось для того, чтобы запустить на дополнительном мониторе.

четверг, 19 ноября 2015 г.

Настройка сервисов в Icinga 2 и добавление самописного плагина

Тут я устанавливал Icinga 2: http://blog.amet13.name/2015/11/icinga-2-postgresql-nginx.html
Тут я рассказал, как подключить удаленный хост к мониторингу: http://blog.amet13.name/2015/11/icinga-2.html
Тут я когда-то устанавливал самописный плагин для Nagios: http://blog.amet13.name/2014/06/nagios.html

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

вторник, 17 ноября 2015 г.

Установка бесплатного сертификата от letsencrypt.org

Я являюсь участником закрытого бета-тестирования https://letsencrypt.org/.
Тут я расскажу, как получить бесплатный сертификат от Let's Encrypt.
Зарегистрироваться в закрытой бете можно тут.
3 декабря 2015 года, планируется запуск открытого бета-тестирования, поэтому ссылка выше уже может быть неактуальна.
UPD: 3 декабря запустили публичную бету, поэтому нет нужды регистрироваться в закрытой бете.

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

После регистрации в бета-тестировании, должно придти письмо:

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

Удаление символа ^M из файла с помощью vim

$ vim file
:%s/ctrl-v+ctrl-m//g

Можно также с помощью dos2unix:
$ dos2unix file

воскресенье, 15 ноября 2015 г.

Мониторинг удаленного хоста в Icinga 2

Тут я устанавливал систему мониторинга Icinga 2 с веб-интерфейсом: http://blog.amet13.name/2015/11/icinga-2-postgresql-nginx.html
В этой заметке я расскажу, как подключать удаленные хосты к мониторингу.

Первым делом необходимо инициализировать на сервере мониторинга ноду и указать, что она является мастером:
# icinga2 node wizard
Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n (указываем тут, что это мастер-нода)
Starting the Master setup routine...
Please specifiy the common name (CN) [vps.amet13.name]: icinga.amet13.name (указываем CN)
... тут идет генерация ключей и сертификатов, обновление файлов конфигов
Now restart your Icinga 2 daemon to finish the installation!

суббота, 14 ноября 2015 г.

Установка Icinga 2 в связке с PostgreSQL и nginx

Дистрибутив CentOS 7.
Документация: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc

Icinga 2 - это система мониторинга, форк Nagios.
Сравнение по багам: https://wiki.icinga.org/display/Dev/Bug+and+Feature+Comparison

Как добавить удаленный хост к мониторингу тут: http://blog.amet13.name/2015/11/icinga-2.html

Установка Icinga 2 и плагинов:
# yum install epel-release
# rpm --import http://packages.icinga.org/icinga.key
# curl -o /etc/yum.repos.d/ICINGA-release.repo http://packages.icinga.org/epel/ICINGA-release.repo
# yum makecache
# yum install icinga2 nagios-plugins-all
# systemctl enable icinga2
# systemctl start icinga2

пятница, 13 ноября 2015 г.

Установка и настройка OpenVPN в CentOS 7

Ранее я уже писал, как установить и настроить OpenVPN на Debian: http://blog.amet13.name/2015/02/openvpn-vps.html
Сейчас оставлю заметку по CentOS 7, так как тут есть несколько нюансов.

четверг, 12 ноября 2015 г.

Удобный конфиг для SSH

Вот пример моего конфига:
$ cat ~/.ssh/config
Host vs
   HostName vs.amet13.name
   Port 221
   User root
   Compression yes

Host st
   HostName site.ru
   User root

Host ovz*
   HostName %h.amet13.name
   Port 2211
   User amet13
   IdentityFile ~/.ssh/id_rsa
   Compression yes

Примеры подключения:
Подключение как [email protected] -C -p 221:
$ ssh vs

Подключение как [email protected]:
$ ssh st

Подключение как [email protected] -p 2211 -i ~/.ssh/id_rsa -C:
$ ssh ovz1

Подключение как [email protected] -p 2211 -i ~/.ssh/id_rsa -C:
$ ssh ovz99

вторник, 10 ноября 2015 г.

Проверка сервера на уязвимость SSL Poodle

Уязвимость Poodle обнаружена в SSLv3, поэтому все отказываются от использования этого протокола.
Есть много онлайн-сервисов для проверка включен ли на сервере SSLv3, вот как можно проверить вручную:
$ nmap --script ssl-enum-ciphers -p 443 host.amet13.name
Starting Nmap 6.40 ( http://nmap.org ) at 2015-11-10 20:14 MSK
Nmap scan report for host.amet13.name (31.184.196.51)
Host is up (0.050s latency).
PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers: 
|   SSLv3: No supported ciphers found
|   TLSv1.0: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.1: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.2: 
|     ciphers: 
|       TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - strong
|       TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - strong
|       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - strong
|       TLS_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_RSA_WITH_AES_128_CBC_SHA256 - strong
|       TLS_RSA_WITH_AES_128_GCM_SHA256 - strong
|     compressors: 
|       NULL
|_  least strength: strong

Nmap done: 1 IP address (1 host up) scanned in 5.24 seconds

Не работает почта в ISPmanager 5 Business

ISPmanager 5 Business совершенно по-идиотски устанавливает Postfix, хотя exim уже установлен, из-за этого возникает конфликт того, что оба сервиса хотят слушать один порт. Баг отправлен испшникам, но они не шевелятся: http://forum.ispsystem.com/ru/showthread.php?t=29277

Пока решил это дело так:
# systemctl disable postfix

Чтобы Postfix не запускался по расписанию ISPшников, я в main.cf добавил опечатку, чтобы сервис вообще не запускался:
# cat /etc/postfix/main.cf | head -2
опечатка, чтобы не запускался постфикс
# Global Postfix configuration file. This file lists only a subset

Удалить Postfix не получается, за собой тянет зависимости.

суббота, 31 октября 2015 г.

Установка админки xcache (xcache-admin)

Установка:
# yum install xcache-admin

По умолчанию создается файл конфига апача /etc/httpd/conf.d/xcache.conf и PHP: /etc/php.d/xcache.ini

Дефолтный конфиг апача нам не подходит, нужно его поднастроить:
# vim /etc/httpd/conf.d/xcache.conf
Alias /xcache /usr/share/xcache
<Directory /usr/share/xcache>
AssignUserID apache apache
   Order Deny,Allow
   Deny from 1.2.3.4
   Allow from All
   DirectoryIndex index.php
   <IfModule php5_module>
      AddType application/x-httpd-php .php  .php3 .php4 .php5 .phtml
      php_flag magic_quotes_gpc Off
      php_flag track_vars On
      php_flag register_globals Off
      php_admin_flag allow_url_fopen Off
      php_admin_flag engine on
      php_value include_path .
      php_admin_value upload_tmp_dir /tmp
      php_admin_value open_basedir "/usr/share/xcache/:/etc/xcache/
      php_admin_value session.save_path "/var/lib/php/session"
   </IfModule>
   RemoveHandler .php .php3 .php4 .phtml
   <FilesMatch "\.ph(p[3-5]?|tml)$">
      SetHandler application/x-httpd-php
   </FilesMatch>
</Directory>

Задаем пароль от админки:
# echo -n 'passw0rd' | md5sum
bed128365216c019988915ed3add75fb  -

В конфиге админки указываем имя пользователя и пароль:
# vim /etc/php.d/xcache.ini
...
[xcache.admin]
xcache.admin.enable_auth = On
xcache.admin.user = "admin"
xcache.admin.pass = "bed128365216c019988915ed3add75fb"
...

# service httpd restart

Админка лежит по адресу: http://ip-адрес/xcache/

вторник, 20 октября 2015 г.

Отбойники от Gmail (проблема с ipv6 PTR)

Если приходят отбойники от Gmail типа:
This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

   (generated from [email protected])
   SMTP error from remote mail server after end of data:
   host gmail-smtp-in.l.google.com [2a00:1450:4010:c03::1a]:
   550-5.7.1 [2a00:f940:2:1:2::55e] Our system has detected that this message does
   550-5.7.1 not meet IPv6 sending guidelines regarding PTR records and
   550-5.7.1 authentication. Please review
   550-5.7.1  https://support.google.com/mail/?p=ipv6_authentication_error for more
   550 5.7.1 information. r71si1594233lfe.161 - gsmtp

Нужно в конфиг exim добавить:
# vim /etc/exim/exim.conf
disable_ipv6 = true

Ну или для ipv6 прописать корректную PTR-запись.

понедельник, 19 октября 2015 г.

Нет выбора сертификата в ISPmanager 4

CentOS 6.
Наблюдается картина, что нельзя для www-домена выбрать сертификат, только устанавливается самоподписанный.
Это возникает из-за того, что установлена старая версия nginx, поэтому порт 443 слушает apache.

Решение обновить nginx до более поздней версии:
# echo "[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/\$basearch/
gpgcheck=0
enabled=1" > /etc/yum.repos.d/nginx.repo

Затем идем в панель и в возможностях удаляем nginx, после удаления снова устанавливаем его, в списке версий nginx должна появиться версия 1.8.
После установки nginx заново, все должно быть ок.

суббота, 3 октября 2015 г.

At least MB more space needed on the /boot filesystem

При попытке обновления:
# yum update
...
Error Summary
-------------
Disk Requirements:
  At least 5MB more space needed on the /boot filesystem.

Смотрим место:
# df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126p1    190M  152M   25M  87% /boot

Какие ядра установлены:
# rpm -qa | grep kernel
kernel-tools-libs-3.10.0-229.11.1.el7.x86_64
kernel-3.10.0-229.11.1.el7.x86_64
kernel-headers-3.10.0-229.11.1.el7.x86_64
kernel-3.10.0-123.el7.x86_64
kernel-3.10.0-229.7.2.el7.x86_64
kernel-tools-3.10.0-229.11.1.el7.x86_64

Какое сейчас задействовано:
# uname -r
3.10.0-229.11.1.el7.x86_64

Удаляем старое:
# rpm -e kernel-3.10.0-123.el7.x86_64

Места теперь хватает:
# df -h /boot
Filesystem      Size  Used Avail Use% Mounted on
/dev/md126p1    190M  118M   59M  67% /boot

Если это не помогло, то можно попробовать так:
# mount -o remount,rw /boot
# yum update

понедельник, 28 сентября 2015 г.

Логирование history в syslog

# vim /etc/profile
function log2syslog
{
   declare command
   command=$(fc -ln -0)
   logger -p local1.notice -t bash -i — $USER : $command
}
trap log2syslog DEBUG

$ echo test
test
$ grep bash /var/log/syslog
Sep 28 18:21:22 mint-17 bash[4887]: — amet13 : echo test
Sep 28 18:21:31 mint-17 bash[4895]: — amet13 : grep bash /var/log/syslog

Взято отсюда:
https://blog.rootshell.be/2009/02/28/bash-history-to-syslog/

При таком раскладе бывает, что выводит мусор в терминал.
Поэтому вариант получше тут: http://webplay.pro/linux/syslog-log-bash-history-every-user.html

среда, 23 сентября 2015 г.

Plesk: Not starting nginx as it is disabled in config

# service nginx start
Not starting nginx as it is disabled in config
# /usr/local/psa/admin/bin/nginxmng --enable
# service nginx status
nginx (pid  2063) is running...

вторник, 22 сентября 2015 г.

Как выбрать сервер

Сохраню ссылку тут.

Логирование atop каждые 10 секунд

По умолчанию atop производит логирование раз в 10 минут.
Я же хочу логировать каждые 10 секунд:
# yum install atop
# chkconfig --add atop
# chkconfig atop on
# vim /etc/sysconfig/atop
#INTERVAL=600
INTERVAL=10

# service atop start
# ps aufx | grep atop
root     26486  0.0  0.1 103248   860 pts/2    S+   13:22   0:00      \_ grep atop
root     26482  0.0  0.9  17840  5188 pts/2    S<L  13:22   0:00 /usr/bin/atop -a -w /var/log/atop/atop_20150922 10

воскресенье, 20 сентября 2015 г.

Открывать ISPmanager 5 по домену

Допустим имеем домен site.ru.
По умолчанию панель открывается по адресу: https://1.2.3.4/manager
Чтобы панель открывалась по адресу: https://site.ru/manager нужно поправить виртуальный хост для этого домена:
# vim /etc/nginx/vhosts/user/site.ru.conf
server {
   ...
   set $mgr_proxy "https://1.2.3.4:1500";
   location /manager {
      proxy_pass $mgr_proxy;
      proxy_redirect $mgr_proxy /;
      proxy_set_header Host $host:$server_port;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Secret mary123;
      chunked_transfer_encoding off;
   }
   location ^~ /mancgi/ {
      proxy_pass $mgr_proxy;
      proxy_redirect $mgr_proxy /;
      proxy_set_header Host $host:$server_port;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-Secret mary123;
      chunked_transfer_encoding off;
   }
   location ^~ /manimg/ {
      alias /usr/local/mgr5/skins/;
   }
}

# service nginx restart

Аналогично можно сделать для всех панелей ISP, создав локейшн например для billmgr.

пятница, 18 сентября 2015 г.

Проверка установки GRUB на жестком диске

# dd if=/dev/sda bs=512 count=1 | xxd | grep -i grub
1+0 records in
1+0 records out
512 bytes (512 B) copied, 1.8019e-05 s, 28.4 MB/s
0000180: 4752 5542 2000 4765 6f6d 0048 6172 6420  GRUB .Geom.Hard 

Если не установлен, то последней строчки не будет.

четверг, 10 сентября 2015 г.

Запуск Dota2 reborn под свободным драйвером

При попытке запуска Dota2 reborn появлялась ошибка:
Required OpenGL extension "GL_ARB_separate_shader_objects" is not supported.  Please update your OpenGL driver.

Система Linux Mint 17.2.
Драйвер:
$ glxinfo | grep "OpenGL version"
OpenGL version string: 3.0 Mesa 10.1.3

Собственно обновляем OpenGL:
$ sudo add-apt-repository ppa:oibaf/graphics-drivers
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install libegl1-mesa libegl1-mesa-drivers xserver-xorg-video-intel libgl1-mesa-dri libglapi-mesa mesa-vdpau-drivers

Проверяем:
$ glxinfo | grep "OpenGL version"
OpenGL version string: 3.0 Mesa 11.1.0-devel (git-13a974f 2015-09-10 trusty-oibaf-ppa)

Запускаем доту, ошибка исчезает.

P.S. Для показа FPS в игре не нужно в опциях запуска ничего прописывать, в настройках есть соответствующая галочка.

пятница, 4 сентября 2015 г.

Удаление большого количества файлов в Linux

Собственно единственный вариант который у меня заработал:
# find /dir/ -type f -delete

Варианты удаления через:
# rm -f /dir/*
# find /dir/ -name * -print0 | xargs -0 rm
# find /dir/ -name * -exec rm {} \;
# find /dir/ -name * | xargs -i rm {}
не работали, появлялась ошибка:
-bash: /usr/bin/find: Argument list too long

Превышение дисковых inodes в OpenVZ-контейнере

# vzctl start 101
Starting container...
vzquota : (warning) inode_hard_limit [1200100] < inode_current_usage [1319917]
Container is mounted
...
Killing container ...
Container was stopped
vzquota : (warning) inode_hard_limit [1200000] < inode_current_usage [1319917]
Container is unmounted

yum: DB_RUNRECOVERY: Fatal error, run database recovery

При попытке обновлении или другими операциями с yum появляется ошибка:
# yum update php
rpmdb: Thread/process 2805/139925463848704 failed: Thread died in Berkeley DB library
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 -  (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

Побились базы, как починить:
# cd /var/lib/rpm
# rm -f __db.*
# rpm --rebuilddb
# yum update php

Обновление PHP 5.3 на 5.4, 5.5 и 5.6 из репозитория atomic и remi

В связке CentOS 6 и ISPmanager 5 по умолчанию ставится версия PHP 5.3 из репозитория CentOS.
Для обновления до 5.4 нужно подключить репозиторий atomic:
# wget http://www.atomicorp.com/installers/atomic
# sh atomic
# yum update php
# service httpd restart
# php -v
PHP 5.4.44 (cli) (built: Aug 10 2015 15:43:14) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

Если нужно также обновить Zend Guard Loader:
# wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz
# tar xzvf ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64.tar.gz -C /usr/lib64/php
# chmod -R 755 /usr/lib64/php/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64/
# vim /etc/php.d/zend.ini
zend_extension=/usr/lib64/php/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-x86_64/php-5.4.x/ZendGuardLoader.so

i386:
# wget http://downloads.zend.com/guard/6.0.0/ZendGuardLoader-70429-PHP-5.4-linux-glibc23-i386.tar.gz

Обновление до 5.5:
# yum install epel-release
# yum localinstall http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# yum update
# yum --enablerepo=remi,remi-php55 update

# php -v
PHP 5.5.30 (cli) (built: Oct  1 2015 09:29:18) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

IonCube Loader для PHP 5.5 и 5.6:
# wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
# tar xzvf ioncube_loaders_lin_x86-64.tar.gz

i386:
# wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

Пример для версии 5.6, для 5.5 аналогично:
# cp ioncube/ioncube_loader_lin_5.6.so /usr/lib64/php/modules/
# echo 'zend_extension = /usr/lib64/php/modules/ioncube_loader_lin_5.6.so' > /etc/php.d/ioncube.ini

Обновление до 5.6 аналогично как и для 5.5, но вместо команды:
# yum --enablerepo=remi,remi-php55 update
нужно использовать:
# yum --enablerepo=remi,remi-php56 update

# php -v
PHP 5.6.14 (cli) (built: Sep 30 2015 14:07:43) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies

понедельник, 10 августа 2015 г.

Установка эмулятора NES (famicon/dendy) в Linux

$ sudo apt-get install fceux

Отлично настраиваются параметры видео, звука. Без проблем подхватил мой геймпад, удобная конфигурация управления.

воскресенье, 9 августа 2015 г.

Зависание компьютера при запуске optirun

При запуске приложений иногда виснет экран, при этом помогает только отключение с кнопки питания.
В /var/log/kern.log заметил такие строки:
Aug  9 17:56:52 mint-17 kernel: [98997.176103] nvidia 0000:01:00.0: irq 50 for MSI/MSI-X
Aug  9 17:56:52 mint-17 kernel: [98997.178604] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.178648] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.178668] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.178698] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.178717] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.178735] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.178773] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.178791] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)
Aug  9 17:56:52 mint-17 kernel: [98997.179120] ACPI Warning: \_SB_.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20140424/nsarguments-95)

Тут нашел решение, перед запуском приложения, выполнить команду:
$ sudo tee /sys/module/rcutree/parameters/rcu_idle_gp_delay <<<1

Пример запуска приложения:
$ sudo tee /sys/module/rcutree/parameters/rcu_idle_gp_delay <<<1 && optirun steam

Я вообще в rc.local добавил.

среда, 5 августа 2015 г.

Не работает плагин exim_mailqueue в Munin

У меня в CentOS 7 не работал плагин exim_mailqueue, который проверяет очередь писем в exim.

В дебаге:
# munin-run exim_mailqueue --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/amavis
# Processing plugin configuration from /etc/munin/plugin-conf.d/df
# Processing plugin configuration from /etc/munin/plugin-conf.d/fw_
# Processing plugin configuration from /etc/munin/plugin-conf.d/hddtemp_smartctl
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Processing plugin configuration from /etc/munin/plugin-conf.d/postfix
# Processing plugin configuration from /etc/munin/plugin-conf.d/sendmail
# Setting /rgid/ruid/ to /99/99/
# Setting /egid/euid/ to /99 99/99/
# Setting up environment
# About to run '/etc/munin/plugins/exim_mailqueue'
exim: permission denied
Error closing pipe: 
frozen.value U
mails.value U

Решение:
# vim /etc/munin/plugin-conf.d/exim
[exim*]
user root
env.logfile maillog
env.logdir /var/log

# systemctl restart munin-node
# munin-run exim_mailqueue
frozen.value 28
mails.value 23

вторник, 4 августа 2015 г.

Оптимизация изображений для web

# yum install optipng jpegoptim
# find /var/www/amet13/data/www/site.ru/wp-content/uploads/ -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve
# find /var/www/amet13/data/www/site.ru/wp-content/uploads/ -iname '*.jpg' -print0 | xargs -0 jpegoptim --max=90 --strip-all --preserve --totals

У меня примерно от 12 до 22 процентов процент сжатия был.

понедельник, 3 августа 2015 г.

(24: Too many open files) в ISPmanager 5

Проблема проявляется уже не первый раз.
В прошлый раз фиксил так: http://blog.amet13.name/2015/07/nginx-24-too-many-open-files-centos-7.html
На этот раз не помогло.

При проверке конфига nginx никаких ошибок не наблюдается:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Однако при попытке изменения/добавления/удаления www-домена в панели ISPmanager 5 появляется ошибка:
nginx: [emerg] open() "/var/www/httpd-logs/sitename.ru.access.log" failed (24: Too many open files)
nginx: configuration file /etc/nginx/nginx.conf test failed

Почему панель так реагирует -- непонятно.
Возможно из-за того, что стоит CentOS 7 и панель смотрит в одни лимиты, а сам nginx другие.

В общем решение пока такое:
# vim /usr/local/mgr5/etc/conf.d/nginx.conf
path nginx-configtest /usr/sbin/nginx.custom -t

# vim /usr/sbin/nginx.custom
#!/bin/sh
/usr/sbin/nginx -t

# vim /etc/systemd/system/ihttpd.service.d/nofile.conf
[Service]
LimitNOFILE=99999

# vim /etc/systemd/system/httpd.service.d/nofile.conf
[Service]
LimitNOFILE=99999

# systemctl --system daemon-reload

Поддержка ISPsystem конечно же не знают что это и как нужно фиксить.

среда, 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 г.

четверг, 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

воскресенье, 21 июня 2015 г.

Восстановление пароля FreeBSD по VNC

Забыли пароль root от виртуальной машины на FreeBSD.
Есть доступ к VNC через панель VMmanager KVM.
Перезагружаем через панель виртуальную машину, во время загрузки вызываем меню загрузчика, например нажимая кнопку Enter.
Загружаемся в Single Mode.
В Single Mode выбираем командный интерпретатор, по умолчанию /bin/sh.

Проверка ФС на ошибки:
# fsck -y

Монтирование ФС в read-write режиме:
# mount -o rw /

Задаем новый пароль root:
# passwd root

Перезагружаемся:
# reboot

суббота, 13 июня 2015 г.

Ошибка steam при запуске игры с использованием optimus

Mint 17, при попытке запуска игры возникает ошибка:
Game update: AppID 570 "Dota 2", ProcID 27118, IP 0.0.0.0:0
ERROR: ld.so: object '/home/amet13/.steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ATTENTION: default value of option vblank_mode overridden by environment.
ATTENTION: default value of option vblank_mode overridden by environment.
ERROR: ld.so: object '/home/amet13/.steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ATTENTION: default value of option vblank_mode overridden by environment.

malloc: unknown:0: assertion botched
free: called with unallocated block argument
last command: (null)
Aborting...Aborted
Game removed: AppID 570 "Dota 2", ProcID 27118 

Как починить:
# sudo mv /usr/lib/x86_64-linux-gnu/primus/libGL.so.1 /usr/lib/x86_64-linux-gnu/primus/libGL.so.1.bak
# sudo ln -s /usr/lib/i386-linux-gnu/primus/libGL.so.1 /usr/lib/x86_64-linux-gnu/primus/libGL.so.1

Перенос BILLmanager 4 на новый сервер

На старом сервере.
Снимаем дамп базы:
[root@old]# mysqldump billmgr -p > billmgr.sql

Пароль базы в /usr/local/ispmgr/etc/billmgr.conf

воскресенье, 24 мая 2015 г.

Простой upgrade/downgrade версии PHP в CentOS 6

http://centosup.ispsystem.info/
При этом необходимо учесть, что если придется устанавливать расширения PHP, может быть каша в зависимостях. Поэтому этот репозиторий стоит использовать только в крайних случаях.

воскресенье, 17 мая 2015 г.

Перенос DNSmanager между серверами

На основе этой статьи.
old -- старый сервер,
new -- новый.

Установка DNSmanager:
root@new # apt-get update && apt-get upgrade
root@new # wget http://download.ispsystem.com/install.sh
root@new # sh install.sh
...
=================================================
dnsmanager is installed
Go to the "https://ip-address:1500/dnsmgr" to login
Login: root
Password: <root password>
=================================================

среда, 6 мая 2015 г.

Избавление от трояна XOR.DDoS на Linux-сервере

На сервере (CentOS 6) периодически стали возникать перебои с сетью, большая часть пингов приходила с ошибкой. Кое-как соединился к серверу по ssh, краем глаза зацепил вывод ps и увидел, что на сервере запущены сторонние процессы.
Получив доступ к IPMI я начал разбираться с вирусом. Сразу скажу, что сервер был взломан, просто сбрутфорсили словарный пароль, который клиент не сменил, security.log тому подтверждение.

понедельник, 4 мая 2015 г.

Установка Ubuntu/MInt на ноутбук с EFI

При попытке установки Ubuntu/Mint может наблюдаться картина, что не видно распределение томов на диске, примерно так:

Скорее всего это из-за того, что используется разметка GPT, например после установки Windows 8.
Для того чтобы конвертировать GPT в MBR необходимо открыть консоль установочного диска:
$ sudo -i
# apt-get install gdisk
# fixparts /dev/sda
где /dev/sda -- имя диска.

После этого можно закрыть терминал и обновить таблицу, разделы снова станут видны и можно устанавливать ОС.

пятница, 1 мая 2015 г.

Проблема с eaccelerator и генерация coredump для php-fpm

Действия происходят на CentOS 6.5, в других дистрибутивах пути к конфигам могут отличаться.

После сброса кэша eaccelerator, почему-то nginx стал отдавать ошибку 502 Bad Gateway.
Интерено то, что на странице с phpinfo eaccelerator работал, а с самим сайтом нет.

Стал смотреть логи.
В логах php-fpm были замечены строки:
# tail -1 /var/log/php-fpm/error.log
WARNING: [pool user] child 6711 exited on signal 11 (SIGSEGV - core dumped) after 4.257027 seconds from start

четверг, 30 апреля 2015 г.

Проверка русской орфографии в LaTeXila

$ sudo apt-get install aspell aspell-ru

Затем в LaTeXila:
Edit -> Spell Check

В самом документе:
Правая кнопка мыши -> Languages -> Russian

четверг, 16 апреля 2015 г.

Автозагрузка терминальных сессий в guake

У меня после перезагрузки системы запускается guake и есть одно неудобство, все время приходится запускать одни и те же терминальные сессии.
Решение, в ярлыке сменить:
guake или /usr/bin/guake
на
guake & guake -n k -r "tab1" --execute-command='ssh user@host1' && guake -n k -r "tab2" --execute-command='ssh user@host2'

После этого в двух дополнительных вкладках будут запускаться нужные сессии, в которых уже будет идти коннект по SSH.

вторник, 14 апреля 2015 г.

Оптимизация Linux для SSD

Купил SSD для ускорения системы. Решил настроить свой Linux Mint 17.1 MATE x64 для SSD.

Разбивка системы такая:
200Mb -- /efi
20Gb -- /
остальное ~220Gb -- /home

SWAP нет, так как памяти у меня достаточно.

TRIM позволяет распределять данные по твердотельному накопителю, таким образом увеличивается время работы SSD.
Проверка поддержки TRIM:
# sudo hdparm -I /dev/sda | grep "TRIM supported"
   *   Data Set Management TRIM supported (limit 1 block)

четверг, 9 апреля 2015 г.

Установка модулей Perl: Geo::IP и Geo::IP::PurePerl в Debian

Установка Geo::IP:
# apt-get install libgeo-ip-perl perl-doc
# perldoc -l Geo::IP
/usr/lib/perl5/Geo/IP.pm

Установка Geo::IP::PurePerl:
# cpan -i Geo::IP::PurePerl
# perldoc -l Geo::IP::PurePerl
/usr/local/share/perl/5.14.2/Geo/IP/PurePerl.pm

суббота, 4 апреля 2015 г.

Воспроизведение видео во flash-player в Linux Mint

Не работает воспроизведение видео с некоторых сайтов, например: http://stream.1tv.ru/live
Решение:
$ sudo add-apt-repository ppa:mjblenner/ppa-hal
$ sudo apt-get update
$ sudo apt-get install hal

Затем нужно в домашнем каталоге очистить:
$ rm -Rf ~/.cache/mozilla
$ rm -Rf ~/.adobe

Подсказал Руслан Вихров: defuze.cc.ua
Работает в Mozilla Firefox, в Google Chrome не работает.

понедельник, 30 марта 2015 г.

Установка старой версии Sphinx 0.9.9

Нужно установить на Debian 7 Sphinx 0.9.9.
При попытке установить просто так, ничего не компилировалось, нужен был компилятор версии 4.4.

Устанавливаем нужную версию компилятора и делаем новые симлинки на старые версии компиляторов:
# apt-get install g++-4.4
# rm /usr/bin/g++
# ln -s /usr/bin/g++-4.4 /usr/bin/g++
# rm /usr/bin/gcc
# ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

Качаем Sphinx, устанавливаем:
# wget http://sphinxsearch.com/files/archive/sphinx-0.9.9.tar.gz
# tar xzf sphinx-0.9.9.tar.gz 
# cd sphinx-0.9.9/
# ./configure --without-mysql

# apt-get install checkinstall
# checkinstall

Во время сборки у меня появилась ошибка, о том, что невозможно создать каталог, создадим его вручную:
# mkdir -p /usr/local/var/data && mkdir -p /usr/local/var/log
# checkinstall

Сборка пакета прошла успешно, устанавливаем его:
# dpkg -i sphinx_0.9.9-1_i386.deb

Проверка версии пакета:
# search
Sphinx 0.9.9-release (r2117)