вторник, 30 декабря 2014 г.

Подключение NTFS диска к CentOS 6

Понадобилось по запросу клиента подключить его съемный диск к выделенному серверу. В датацентре его подключили к серверу, теперь давайте примаунтим.

Поставим драйвер для ntfs, так как при маунте без него была такая ошибка:
mount: неизвестный тип файловой системы 'ntfs'
# yum install ntfs-3g

Создадим каталог для маунта
# mkdir /mnt/disk

Найдем наш диск:
# fdisk -l | grep NTFS
/dev/sdc1               1      121598   976728064    7  HPFS/NTFS

Примонтируем его
# mount -t ntfs /dev/sdc1 /mnt/disk

воскресенье, 28 декабря 2014 г.

OpenVZ Debian 7 (VPS) init not start

Бывает такое на OpenVZ, что гостевые VPS с Debian 7 после dist-upgrade не загружаются, при попытке зайти с хост ноды видим:
# vzctl enter 1001
enter into CT 1001 failed
Unable to open pty: No such file or directory

Ну ничего, данную ошибку я уже описывал тут: http://blog.asidorov.name/2013/12/unable-to-open-pty-no-such-file-or.html

Правим так:
# vzctl exec 1001 "cd /dev; /sbin/MAKEDEV pty"
# vzctl exec 1001 "cd /dev; /sbin/MAKEDEV tty"

Теперь зайдем в VPS'ку:
# vzctl enter 1001

InnoDB Corruption Repair Guide

Довольно не плохой гайд, советую для ознакомления по восстановлению InnoBD: http://forums.cpanel.net/f402/innodb-corruption-repair-guide-418722.html

пятница, 19 декабря 2014 г.

Host 'host_name' is blocked because of many connection errors

Обращаются клиенты с проблемой:
Host 'host_name' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'

Смотрим, какое значение max_connect_erros выставлено сейчас:
# mysql -uroot -p -e "SHOW VARIABLES LIKE '%max_connect_errors%';"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_connect_errors | 10    |
+--------------------+-------+

Как-то маловато, увеличим хотя бы до 100:
# mysql -uroot -p -e "SET GLOBAL max_connect_errors=100;"

Проверяем:
# mysql -uroot -p -e "SHOW VARIABLES LIKE '%max_connect_errors%';"
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| max_connect_errors | 100   |
+--------------------+-------+

Документация:

Fatal error: Class 'Mongo' not found ...

На сайте, которому нужна MongoDB после установки по их мануалу: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/
Fatal error: Class 'Mongo' not found ...

Просто не хватает драйвера php для MongoDB, поставим:
# yum install -y php-pear php-devel
# pecl install mongo

Убедимся, что подключен драйвер:
# cat /etc/php.d/mongo.ini 
extension=mongo.so

Перезапустим Апач:
# /etc/init.d/httpd restart

суббота, 13 декабря 2014 г.

plugin_googlemap2_proxy.php

Часто на шаред серверах вижу такие запросы:
ip.ip.ip - - [29/Nov/2014:18:39:26 +0300] domain.com HEAD /plugins/system/plugin_googlemap2/plugin_googlemap2_proxy.php?url=www.proxy.domain.com HTTP/1.1 499 0 "-" "Mozilla/5.0" "-" 0.001--

Оказывается это вирусняк для Joomla.
Более подробно тут: http://securityvulns.ru/docs30603.html

четверг, 11 декабря 2014 г.

Docker Hello world

Напишем простенький hello world:
# docker run ubuntu:14.10 /bin/echo 'Hello world'
Unable to find image 'ubuntu:14.10' locally
Pulling repository ubuntu
d6028e3b0b34: Download complete 
511136ea3c5a: Download complete 
df50890ba698: Download complete 
b526f11c9576: Download complete 
dde78202d417: Download complete 
Hello world

# docker run ubuntu:14.10 /bin/echo 'Hello world'
Hello world

Что тут произошло? Docker не нашел образ ubuntu:14.10 на локальном компьютере, поэтому скачал его с Docker Hub (https://hub.docker.com)

Установка docker на Ubuntu 14.10 (x64)

Решил начать знакомство с докером и установил Ubuntu 14.10 (x64) на DigitalOcean дроплет.
Собственно краткий копипаст из документации docker'а:

Установим последний доступный убунту пакет(не факт, что в нем будет последняя версия docker'а)
# apt-get update
# apt-get install docker.io

Подгрузим таб дополнение в баш:
# source /etc/bash_completion.d/docker

Если же вы хотите последнюю версию докера, то делаем так:
Проверим, может ли apt общаться по https протоколу, если есть файл
# ls -l /usr/lib/apt/methods/https 
-rwxr-xr-x 1 root root 80000 Oct 17 05:41 /usr/lib/apt/methods/https

Tor: Луковый маршрутизатор второго поколения

Если кому интересно, как же устроен Tor советую к прочтению:

English version: http://www.onion-router.net/Publications/tor-design.pdf
Russian version: http://www.opennet.ru/soft/tordesign.pdf

среда, 3 декабря 2014 г.

Защита от брутфорса WordPress, Joomla на шаред хостинге с помощью fail2ban

Понадобилось блокировать особо любопытных, написал пару правил.

Защита от брутфорса для сайтов на базе CMS WordPress:

Создадим файл с регексом для фильтрации попытки логина в админку:
# cat /etc/fail2ban/filter.d/bruteforce_wp.conf
[Definition]
failregex = ^<HOST> - - .* "POST /wp-login.php
ignoreregex = 

Проверим сразу попадают ли запросы под наше правило:
# fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/bruteforce_wp.conf
Running tests
=============
Use   failregex file : /etc/fail2ban/filter.d/bruteforce_wp.conf
Use         log file : /var/log/nginx/access.log

Results
=======
Failregex: 122795 total
|-  #) [# of hits] regular expression
|   1) [122795] ^<HOST> - - .* "POST /wp-login.php
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
|  [790258] Day/MONTH/Year:Hour:Minute:Second
`-
Lines: 790258 lines, 0 ignored, 122795 matched, 667463 missed
Missed line(s): too many to print.  Use --print-all-missed to print all 667463 lines

Как видим, 123 тысячи запросов попадают под данное правило, а значит и будем блокировать таким способом.

среда, 15 октября 2014 г.

Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

Во время добавления epel на CentOS 6:
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -Uvh epel-release-6*.rpm

Получил ошибку:
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

Отредактируем файл:
# vim /etc/yum.repos.d/epel.repo 

И в строке:
mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch

Заменим https на http.

# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink                                                                                                                 |  28 kB     00:00     
 * base: mirror.corbina.net
 * epel: mirror.logol.ru
 * extras: mirror.corbina.net
 * updates: mirror.corbina.net
epel                                                                                                                          | 4.4 kB     00:00     
epel/primary_db                                                                                                               | 6.3 MB     00:03     
repo id                                              repo name                                                                                 status
base                                                 CentOS-6 - Base                                                                            6,367
epel                                                 Extra Packages for Enterprise Linux 6 - x86_64                                            11,124
extras                                               CentOS-6 - Extras                                                                             15
updates                                              CentOS-6 - Updates                                                                         1,602
vz-base                                              vz-base                                                                                        3
vz-updates                                           vz-updates                                                                                     8
repolist: 19,119

Вот и все. Наглый копипаст отсюда:

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

Bitrix VM не стартует nginx

Собственно обратился клиент с проблемой в сабже.


Проявляется это так:
# /etc/init.d/nginx start
Starting nginx: nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 268435456) failed (12: Cannot allocate memory)
                                                           [FAILED]

четверг, 11 сентября 2014 г.

Error Table 'mysql.servers' doesn't exist

Обратился клиент с проблемой:
Во время смены пароля для пользователя в ISPmanager:
Ошибка:MySQL error

В логе ISPmanager:
# tail -f /usr/local/ispmgr/var/ispmgr.log
ERROR Exception 9: MySQL error: Table 'mysql.servers' doesn't exist

Стало ясно, что поломалась системная таблица servers, посмотрим рутовый пароль от MySQL:
# grep Password /usr/local/ispmgr/etc/ispmgr.conf

FastCGI HTTP request length

Обратился клиент с проблемой:
Сайт работает в режиме FastCGI, не загружаются изображения размером более 2Мб.
Хотя в php.ini параметры:
max_upload_filesize = 50Mb
post_max_size = 50Mb

В логе Apache2 увидел такую запись:
[Wed Sep 10 20:38:26 2014] [warn] [client 194.58.88.147] mod_fcgid: HTTP request length 135045 (so far) exceeds MaxRequestLen (131072), referer: http://domain.com/goods/edit/24
Wed Sep 10 20:38:26 2014] [warn] [client 194.58.88.147] mod_fcgid: HTTP request length 135045 (so far) exceeds MaxRequestLen (131072), referer: http://domain.com/goods/edit/24

пятница, 5 сентября 2014 г.

PHP Fatal error: Image: Imagetype (jpg) not supported for reading

Обратился клиент с проблемой:
Некорректно работает плагин tiny_mce для загрузки изображений.

В логе данного плагина:
/home/user/public_html/admin/js/tiny_mce/plugins/images/connector/php/error_log

Были вот такие ошибки:
PHP Fatal error:  Image: Imagetype (jpg) not supported for reading. in /home/user/public_html/admin/js/tiny_mce/plugins/images/connector/php/Image_Toolbox.class.php on line 444

Последняя версия Image_Toolbox.class.php вышла в 2003 году.

Однако решить данную проблему довольно легко:
Проверьте код файла в районе 99-й строки (определение массива var $_types = array), там должно быть:
'mime' => 'image/jpeg' 

Проверьте код файла в районе 186-й строки. Если там у вас код:
Change $gd_info['JPG Support'] 

То нужно просто добавить букву "E":
Change $gd_info['JPEG Support'] 

Все, после этого класс должен работать.

Копипаст: http://siarzhuk.ru/oshibka-v-image_toolbox-class-php-pri-perekhode-na-php-5-3.html

ISPmanager. Невозможно создавать поддомены с владельцем оличным от владельца домена

Обратился клиент с такой задачей:
У клиента установлена панель управления ISPmanager, на одном пользователе (user1) создан домен, например example.com и ему необходимо на втором пользователе (user2) создать поддомен для данного домена, например test.example.com.

Но панель ISPmanager не позволяет сделать этого с такой ошибкой:
Доменное имя example.com верхнего уровня принадлежит другому пользователю. Настройки политики не позволяют вам создавать поддомены с владельцем отличным от владельца домена верхнего уровня.

Решается эта проблема очень легко, дополнив опцию в конфигурационном файле ISPmanager:
# vim /usr/local/ispmgr/etc/ispmgr.conf

А добавить нужно вот такую запись:
Option InsecureDomain

Теперь же надо просто перезапустить панель управления ISPmanager:
# killall -9 -r ispmgr

Теперь можно спокойно создать необходимые поддомен у user2.

Копипаст: http://dozmorov.ru/administrirovanie/freebsd/ispmanager-nevozmozhno-sozdavat-poddomeny-s-vladelcem-olichnym-ot-vladelca-domena/

Ошибка fail2ban в CentOS 5 из EPEL репозитория

Обратился клиент с CentOS 5.8 с проблемой с fail2ban, ошибка ниже:

# /etc/init.d/fail2ban restart
Stopping fail2ban:                                         [  OK  ]
Starting fail2ban: ERROR  NOK: ('invalid syntax', ('/usr/share/fail2ban/server/filterpyinotify.py', 214, 21, '\t\texcept Exception as e:\n'))
ERROR  NOK: ('nginx-wordpress-auth',)
...
ERROR  NOK: ('nginx-wordpress-auth',)
ERROR  NOK: ('invalid syntax', ('/usr/share/fail2ban/server/filterpyinotify.py', 214, 21, '\t\texcept Exception as e:\n'))
ERROR  NOK: ('ssh-iptables',)
...
ERROR  NOK: ('ssh-iptables',)
ERROR  NOK: ('invalid syntax', ('/usr/share/fail2ban/server/filterpyinotify.py', 214, 21, '\t\texcept Exception as e:\n'))
ERROR  NOK: ('nginx-http-auth',)
...
ERROR  NOK: ('nginx-http-auth',)
ERROR  NOK: ('nginx-wordpress-auth',)
ERROR  NOK: ('ssh-iptables',)
ERROR  NOK: ('nginx-http-auth',)

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

Postfix получить количество писем в очереди

Бывают такие случаи, когда очередь писем в postfix'а очень большая и вывод количества писем занимает много времени. Я решил сравнить 3 варианта получаения количества писем в очереди:

# time mailq | tail -n 1
postqueue: warning: Mail system is down -- accessing queue directly
-- 264906 Kbytes in 48315 Requests.

real 0m1.768s
user 0m1.008s
sys 0m1.006s

Скачать файл wget'ом если URL с редиректом

Понадобилось скачать файл wget'ом файл: http://revisium.com/rwp/
Но вот такая ссылка на скачивание имеет не полный путь к файлу, а редирект через параметр к файлу index.php .

И если просто выполнить:
# wget http://www.revisium.com/rwp/index.php?q=779587151148169836337981912151261 , то скачивается какая-то фигня.

Скачать интересующий файл rwp_checker.zip мне помог такой параметр команды wget:
# wget --content-disposition http://www.revisium.com/rwp/index.php?q=779587151148169836337981912151261
И файл успешно скачался.

Этот параметр добавляет хедер Content-Disposition.

exim4 Mailing to remote domains not supported

Обратился клиент с проблемой, что не отправляется почта с сервера с Debian 7. В логе exim нашлась такая запись:
Mailing to remote domains not supported

Решается довольно просто - реконфигом exim4
# dpkg-reconfigure exim4-config

И выбираем:
internet site; mail is sent and received directly using SMTP

Теперь почта ходит отлично, копипаст отсюда:
http://i-notes.org/debian-exim-error-mailing-to-remote-domains-not-supported/

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

Plesk Panel Presence Builder (Message: Undefined property "controlPanelLink" in object "SB_ORM_TokenAccess".; Code: 0)

Появилась такая проблема, после обновления Plesk Panel до версии 12. При входе в Presence Builder вылазит такая ошибка:
Internal Parallels Presence Builder error.
File: /usr/local/sb/include/Base/ORM/Object.php; Line: 249
Message: Undefined property "controlPanelLink" in object "SB_ORM_TokenAccess".; Code: 0

Лечиться это просто и описано в KB Parallels'а: http://kb.sp.parallels.com/en/119875 . Так что тупой копипаст, для себя.

Проверим первый вариант, что отсутствует поле control_panel_link в таблице token_access базы данных sitebuilder5.
Зайдем в базу данных sitebuilder5:
# mysql -uadmin -p sitebuilder5

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

Exim Failed to create spool file

Обратился клиент с проблемой, что не отправляется почта с его VPS.
# cat /etc/issue
CentOS release 6.1 (Final)
Kernel \r on an \m


В /var/log/exim/mainlog видим вот такие записи:
2014-07-24 20:06:06 1XALWw-0002W0-1a Failed to create spool file /var/spool/exim/input//1XALWw-0002W0-1a-D: Permission denied
2014-07-24 20:06:06 1XALWw-0002Vz-KU Failed to create spool file /var/spool/exim/input//1XALWw-0002Vz-KU-D: Permission denied
2014-07-24 20:06:09 1XALWz-0002W1-24 Failed to create spool file /var/spool/exim/input//1XALWz-0002W1-24-D: Permission denied
2014-07-24 20:06:25 1XALXF-0002W3-IZ Failed to create spool file /var/spool/exim/input//1XALXF-0002W3-IZ-D: Permission denied

Правится это очень легко (Для CentOS):
# chown -R exim:exim /var/spool/exim/

Для Debian (Ubuntu):
# chown -R Debian-exim:Debian-exim /var/spool/exim4/

Почему такая ошибка возникла - неизвестно. Возможно клиент что-то натворил. Но делаю себе заметку и может кому еще будет полезно.

MySQL error 1286: Unknown table engine 'InnoDB'

Во время тюнинга MySQL на одном из серверов, поймал такую ошибку - MySQL error 1286: Unknown table engine 'InnoDB'. Оказалось, что виноваты мои кривые руки.

Собственно посмотрим, какие движки MySQL нам доступны:
mysql> SHOW ENGINES;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+

И видим, что нету движка InnoDB.

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

Как очень просто установить GitLab сервер

Недавно решил попробовать поставить GitLab, но что-то у меня постоянно были проблемы, пользовался этими статьями:
http://www.linuxspace.org/archives/4748
http://blog.compunet.co.za/gitlab-installation-on-ubuntu-server-12-04/
http://skycase.ru/blog/gitlab-setup-guide/
http://blog.bobbyallen.me/2014/01/11/setup-your-own-private-github-server-using-gitlab-and-ubuntu-server-12-04-lts/
https://gitlab.com/gitlab-org/gitlab-ci/blob/master/doc/install/installation.md
https://www.digitalocean.com/community/tutorials/how-to-set-up-gitlab-as-your-very-own-private-github-clone
http://habrahabr.ru/sandbox/82051/
http://blog.phusion.nl/2012/04/21/tutorial-setting-up-gitlab-on-debian-6/

Потом зашел на сайт официальной документации: http://doc.gitlab.com/ce/install/installation.html и о чудо нашел такое предложение: " If you want to install on RHEL/CentOS we recommend using the Omnibus packages."

Мониторинг Linux системы в реальном времени с помощью Scout Realtime

Набрел на эту статью: http://www.linuxspace.org/archives/5731

И понравилась внешне система мониторинга в реальном времени Scout Realtime. Далее идет почти тупой копипаст. Мне не понадобилось устанавливать REMI & EPEL (в этой статье EPEL нужен для установки пакета perl-HTTP-Server-Simple, для системы Monitorix).

Так как в репозиториях CentOS старая версия Ruby:
# yum info ruby | grep Version
Version    : 1.8.7.352

суббота, 19 июля 2014 г.

Apache2 завершается сразу после старта

Добрый день.

Возникла проблема: Apache2 падает сразу после запуска.
То есть инициализация проходит:
# /etc/init.d/httpd start
Запускается httpd:                                         [  OK  ]

Но если сразу глянуть состояние сервиса:
# /etc/init.d/httpd status
httpd не работает, но pid-файл существует

То видим, что Apache2 не работает:
# ps aux | grep http
root     23242  0.0  0.0 103256   904 pts/0    S+   04:19   0:00 grep http

В error логе Apache2 увидел такое:
# tail /var/log/httpd/error_log
[Sun Jul 20 04:18:41 2014] [warn] pid file /etc/httpd/run/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Sun Jul 20 04:18:41 2014] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.23121) (5)
[Sun Jul 20 04:20:34 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Sun Jul 20 04:20:34 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Jul 20 04:20:34 2014] [notice] Digest: done
[Sun Jul 20 04:20:34 2014] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.23306) (5)
[Sun Jul 20 04:21:51 2014] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Sun Jul 20 04:21:51 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Jul 20 04:21:51 2014] [notice] Digest: done
[Sun Jul 20 04:21:51 2014] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.23481) (5)

пятница, 18 июля 2014 г.

Varnish, nginx, php-fpm, mysql, apc, wordpress на Centos 6

Добрый день.

Решил поставить небольшую связку на своем VPS сервере. Что бы посмотреть результаты и скорость работы сайта. Основные компоненты: 

nginx [engine x] — это HTTP-сервер и обратный прокси-сервер, а также почтовый прокси-сервер, написанный Игорем Сысоевым. Уже длительное время он обслуживает серверы многих высоконагруженных российских сайтов, таких как ЯндексMail.RuВКонтакте и Рамблер. Согласно статистике Netcraft nginx обслуживал или проксировал 19.21% самых нагруженных сайтов в июне 2014 года. Вот некоторые примеры успешного внедрения nginx (тексты на английском языке): NetflixWordpress.comFastMail.FM.

MySQL (МФА: [maɪ ˌɛskjuːˈɛl]) — свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

PHP-FPM (FastCGI Process Manager) - PHP реализация FastCGI.

Varnish - HTTP ускоритель предназначен для тяжелых динамических веб-сайтов. В отличие от других ускорителей Интернета, таких как Squid, который начал существовать в качестве кэш со стороны клиента, или Apache и Nginx, которые в первую очередь web сервера, Varnish был разработан в качестве ускорителя HTTP. Varnish сосредоточен исключительно на HTTP, в отличие от других прокси-серверов, которые часто поддерживают FTP, SMTP и другие сетевые протоколы.

The Alternative PHP Cache — бесплатный и открытый opcode кэшер для PHP. Он был задуман, как бесплатный, открытый и стабильный фреймворк для кэширования и оптимизации исходного кода PHP, так же возможно кэширование пользовательских данных.

Общая схема работы примерно такая:


понедельник, 14 июля 2014 г.

Практические задачи № 1

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

Вот первое, что попалось: https://www.freelancer.com/projects/PHP-MySQL/help-Regex-phone-pattern.html?t=b&utm_expid=294858-205.srtFykaOR_ulbzvw6_f6Sw.1
Само задание:
I want good regex expretion for phone numbers with these pattern for 8 digit after international code :
* 00965 xxxxxxx 
* +965 xxxxxxxx
* 00965xxxxxxxx
* +965xxxxxxxx
* xxxxxxxx
* (+965)(xxxxxxxx)
* (00965)(xxxxxxxx)
* (+965) xxxxxxxx
* (00965) xxxxxxxx

that format that I think will be enough ,,


Бюджет: 10-30 Баксов.

Собственно за 10 минут была написана небольшая регулярка:
((?:\(?(?:00|\+)?\d{3}\)?\s?\(?)?\d{7}\)?)

А вот ссылка на онлайн чекер: http://regex101.com/r/bJ8pL8/1

Вот так просто можно было бы заработать 10-30 баксов.

воскресенье, 29 июня 2014 г.

awstat error: couldn't open server log file

Обратился клиент, что ему на почту стали приходить такие письма:

Error while processing /etc/awstats/awstats.conf
Create/Update database for config "/etc/awstats/awstats.conf" by AWStats 
version 7.0 (build 1.971)
From data in log file "/var/log/apache2/access.log"...
Error: Couldn't open server log file "/var/log/apache2/access.log" : 
Permission denied
Setup ('/etc/awstats/awstats.conf' file, web server or permissions) may be 
wrong.
Check config file, permissions and AWStats documentation (in 'docs' 
directory).
Error while processing /etc/awstats/awstats.conf
Create/Update database for config "/etc/awstats/awstats.conf" by AWStats 
version 7.0 (build 1.971)
From data in log file "/var/log/apache2/access.log"...
Error: Couldn't open server log file "/var/log/apache2/access.log" : 
Permission denied
Setup ('/etc/awstats/awstats.conf' file, web server or permissions) may be 
wrong.
Check config file, permissions and AWStats documentation (in 'docs' 
directory).


iptables NAT Openvz

Появилась задача - на OpenVZ контейнере нужно подключить поддержку NAT. Так как при просмотре содержимого таблицы NAT мы видим такое:
# iptables -t nat -nvL
iptables v1.4.12: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.


isp access denied

Случилось так, что перестало пускать в панель под определенным пользователем.

В логах ISPmanager ошибка:
# tail /usr/local/ispmgr/var/ispmgr.log
May  4 20:28:04 [ 1589:409] WARNING Access not allowed ip ’11.111.111.111′. Rejected.
May  4 20:35:31 [ 1589:410] INFO Request [11.111.111.111][nobody] ‘username=root&password=*&theme=sirius&lang=ru&func=auth’


пятница, 13 июня 2014 г.

Эксперемент с дисковым кешем в Linux

Эффекты диского кеша во время выделения памяти в приложениях


Дисковый кеш не мешает приложениям в получении памяти, которой им необходимы. Вот небольшая программа на языке С (munch.c) которая выделяет столько памяти, сколько сможет или до определенного лимита:
$ cat munch.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv) {
    int max = -1;
    int mb = 0;
    char* buffer;

    if(argc > 1)
        max = atoi(argv[1]);

    while((buffer=malloc(1024*1024)) != NULL && mb != max) {
        memset(buffer, 0, 1024*1024);
        mb++;
        printf("Allocated %d MB\n", mb);
    }
   
    return 0;
}


Когда память заканчивается - это не круто, но OOM-killer должен убить только этот процесс и надеюсь остальные процессы он не затронет.

воскресенье, 18 мая 2014 г.

Поддержка OpenVPN в контейнере OpenVZ

Установим поддержку TUN интерфейсов для OpenVPN на OpenVZ.

Проверим, есть ли поддержка данного интерфейса на Хост ноде:
# lsmod | grep tun
tunnel4                 2959  1 ipip
tun                    19157  4 

Размер писем и почтовых ящиков (Postfix)

Изменить размер писем отправляемых и доставляемых postfix'ом.

Смотрим нынешнее значение:
# postconf | grep message_size_limit
message_size_limit = 10240000
Что означает ~10 Мб. Значение задается в байтах.

Отключение рекурсии Dnsmasq

Dnsmasq - легкий, легко конфигурируемый DNS, DHCP и TFTP сервер, спроектированный обеспечивать доменными именами (и опционально DHCP и TFTP) небольшие сети. Более детально можно изучить на офф. сайте.

По умолчанию он устанавливается с возможностью рекурсии. Что делает его восприимчивым к атакам вида DNS Amplification.

SSH не стартует (sshd: /var/empty/sshd must be owned by root and not group or world-writable)

Смотрим, нет ли процессов ssh:
# ps aux | grep ssh
root     10462  0.0  0.1   5476   724 pts/0    D+   23:48   0:00 grep ssh

Пробуем перезапустить:
# /etc/init.d/sshd restart
Stopping sshd:                                             [FAILED]
Starting sshd: /var/empty/sshd must be owned by root and not group or world-writable.
                                                           [FAILED]

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

Ошибка: rotate уже существует (ISPmanager)

При создании домена и добавлении WWW домена появилась ошибка как в сабже:
Ошибка: rotate уже существует

Все просто, домен уже был и остался конфиг для ротации логов давнного домена.
Нужно отредактировать файл:
# vim /usr/local/ispmgr/etc/rotate.conf

Невозможно реконфигурировать DNS сервер. Убедитесь, что сервер запущен и правильно настроен ISPmanager

Если  у вас на CentOS стоит панель ISPmanager и упорно ругается ошибками на любую попытку добавить домен:
> "Невозможно реконфигурировать DNS сервер. Убедитесь, что сервер запущен и правильно настроен."
А на команду
# rndc status

Выдаёт:
rndc: connect failed: 127.0.0.1#953: connection refused

суббота, 12 апреля 2014 г.

ISPmanger логин в панели без пароля

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

Редактируем конфиг файл:
# vim /usr/local/ispmgr/etc/ispmgr.conf

Добовляем в конфиг такую запись
TrustIP 10.10.10.10 - где вы указываете свой IP-адрес, его можно посмотреть на сайте 2ip.

Перезапускаем панель:
# killall ispmgr

И попадаем в панель под root без ввода пароля.

ISPmanager отключить префикс баз данных

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

Редактируем конфиг файл панели:
# vim /usr/local/ispmgr/etc/ispmgr.conf

И закомментируем данные строки:
Option DatabasePrefix - отключение префикса баз данных
Option DatabaseUserPrefix - отключение префикса mysql пользователей

Теперь перезапустим панель:
# killall ispmgr