Category Archives: sadmin

sadmin

Как да сетнем wait_timeout na постоянна връзка към mysql- pconnect

По поздразбиране времето за затваряне на persistent connection в MySQL е доста секунди, но аз искам да променя това време на по- малко, примерно 15 секунди. Това може да се направи от my.cnf,  но ще бъде сетване на всички Persistent connections (постоянни връзки), а аз искам само на текущата. Все пак за инфо как се сетва wait_timout в my.cnf

Файл: /etc/mysq/my.cnf
wait_timeout = 1800
/etc/init.d/mysqd restart
Има и друг вариант да сетнете от Mysql, wait_timeout за глобално ползване или чрез: mysql> set global wait_timeout=60 . Но този вариант няма да е така дълготраен колкото по- горния

Тук идеята обаче не е тази. Решението разбира се е както обикновенно доста простично. След като се напарави постоянна връзка се изпълнява сетването на wait_timeout. Ето пример за това:

mysql> set @@session.wait_timeout=360;

След като сетнахме секундите които трябва да изтекат преди да се затвори постоянната връзка сега можем да проверим дали всичко е наред:

mysql> select @@session.wait_timeout,@@global.wait_timeout;
+---------------------------------------+------------------------------+
| @@session.wait_timeout             | @@global.wait_timeout |
+---------------------------------------+-------------------------------+
|                                                    28800 |                                 360 |
+-----------------------------9--------+-------------------------------+
1 row in set (0.00 sec)

Очевидно всеки си е задал въпроса: Защо му е да ограничава persistent connection на 15 секунди след като може да използва обикновенна връзка mysql_connect с възможност за затваряне веднага след изпълнение на скрипта (mysql_close)? Отговорът е защото заявките които се изпълняват са в рамките на 15 секунди т.е. за 15 секунди могат да се изпълнят 20 заявки в случаен интервал т.е. не е ясно кога трябва да се затвори връзката и кога не. За целта използвам pconnect с времеви прозорец 15 секунди и абсолютно всичко работи прекрасно.

PS: Това може да бъде решение на въпроса "mysql_connect има възможност за затваряне след изпълнение mysql_close, но mysql_pconnect няма mysql_pclose" Като се окаже малко време на практика това ще бъде неформално mysql_pclose.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Инсталиране на Curl

Тази статия има за цел да я предостави информация как се инсталира Curl версия 7.19.6:

wget http://curl.haxx.se/download/curl-7.19.6.tar.gz
tar zxvf curl-7.19.6.tar.gz
cd curl-7.19.6

./configure --with-ssl \
--with-gnutls \
--disable-libssh2 \
--disable-ldaps \
--disable-ldap \
--disable-sspi \
--disable-libidn \
--disable-ares \
--disable-spnego \
--disable-gssapi \
--disable-krb4

make && make install

Проблем при изпълнението на ./configure:

configure: WARNING: SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.
configure: WARNING: Use --with-ssl, --with-gnutls or --with-nss to address this.
Решение: apt-get install libssl-dev

Промени в последната версия 7.19.6:

Changes:

* CURLOPT_FTPPORT (and curl's -P/--ftpport) support port ranges
* Added CURLOPT_SSH_KNOWNHOSTS, CURLOPT_SSH_KEYFUNCTION, CURLOPT_SSH_KEYDATA
* CURLOPT_QUOTE, CURLOPT_POSTQUOTE and CURLOPT_PREQUOTE can be told to ignore error responses when used with FTP

Bugfixes:

* crash on bad socket close with FTP
* leaking cookie memory when duplicate domains or paths were used
* build fix for Symbian
* CURLOPT_USERPWD set to NULL clears auth credentials
* libcurl-NSS build fixes
* configure script fixed for VMS
* set Content-Length: with POST and PUT failed with NTLM auth
* allow building libcurl for VxWorks
* curl tool exit codes fixed for VMS
* --no-buffer treated correctly
* djgpp build fix
* configure detection of GnuTLS now based on pkg-config as well
* libcurl-NSS client cert handling segfaults
* curl uploading from stdin/pipes now works in non-blocking way so that it continues the downloading even when the read stalls
* ftp credentials are added to the url if needed for http proxies
* curl -o -- sends data to stdout using binary mode on windows
* fixed the separators for "array" style string that CURLINFO_CERTINFO returns
* auth problem over several hosts with re-used connection
* improved the support for client certificates in libcurl+NSS
* fix leak in gtls code
* missing algorithms in libcurl+OpenSSL
* with noproxy set you could still get a proxy if a proxy env was set
* rand seeding on libcurl on windows built with OpenSSL was not thread-safe
* fixed the zero byte inserted in cert name flaw in libcurl+OpenSSL
* don't try SNI with SSLv2 or SSLv3 (OpenSSL and GnuTLS builds)
* libcurl+OpenSSL would wrongly acknowledge a cert if CN matched but subjectAltName didn't
* TFTP upload sent illegal TSIZE packets

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Fatal error: Call to undefined function xmlrpc_encode_request()

Лошава грешка. Очевидно които е ползва xmlrpc знае за какво иде реч, но все пак за тези които не са просветлени. Повече информация за функцията може да намерите тук: php.net .
Проблемът с xmlrpc_encode_request се решава като се инсталира модула за xmlrpc, а именно при Debian:

apt-get install php5-xmlrpc

Това е всичко сега вече функцията xmlrpc_encode_request работи страхотно.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Спиране на SYN Flood чрез sysctl и iptables

На една машина нямаше правила за спиране на syn flood и трябваше да добавя такива. Понеже се сетих, че преди много години това беше сериозен проблем реших да напиша тази кратка публикация която обяснява как се спира съответния syn flood. Ако искате да тествате дали вашата машина е подвластна на syn flood може да тествате със hping3 или по- конкретно:

hping3 --faster -S  example.com
#Ако искате да конкретизирате порт, ето така:
hping3 --faster -S  example.com -p 80

Ако машината ви замръзне или се случи натоварване то определено имате проблем :).

Ето решение на проблема чрез използване на sysctl + iptables :

Файл: Sysctl.conf

net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_max_syn_backlog = 2048

Записване и презареждане на sysctl:

sysctl -p

Промени в iptables(създаване на верига syn-flood) :

iptables -N syn-flood
iptables -A INPUT -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 100/s --limit-burst 150 -j RETURN
iptables -A syn-flood -j DROP

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Проблем с phpmyadmin

Днес ми репортнаха за един от моите инсталирани phpmyadmin, че извеждал грешка :
PHPMYADMIN The configuration file now needs a secret passphrase (blowfish_secret).

Решението е:

Отваряте файл /var/lib/phpmyadmin/blowfish_secret.inc.php
и се копира този ред където е въведен вашият blowfish. Пример:
$cfg['blowfish_secret'] = 'Примерен hesh81927398akjhasdklfj';

Копираната променлива и хеш записвате в най- долния ред на файла /etc/phpmyadmin/blowfish_secret.inc.php

След това презареждате phpmyadmin от браузъра и всичко е наред. :)

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Сетване на Charset UTF8 при mount на cd

Случвало ли ви се е под GNU/Linux да се опитате да монтирате диск в които всичкото съдържание е на кирилица. Предполагам да. В моя случай имах проблем с това, а именно енкодинга по подразбиране с които монтира диска не отговаряше на реалния. За целта статично казвам, че енкодинга трябва да бъде UTF8.

Ето пример как става монтиране на CD с charset UTF8:

mount -t iso9660 /dev/cdrom /media/cdrom -o iocharset=utf8

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Бърза статия за инсталиране на apache + ssl + htaccess оторизация под Debian

Днес на бързо написах една статия за Инсталиране на Apache 2 + SSL + htaccess auth под Дебиан. Идеята на статията е да спести време на всеки. Статията може да бъде открита ето тук:
Инсталиране на Apache2 под Debian- Lenny. Активиране на SSL и основна оторизация.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

whowatch- Мониторинг на процеси и потребители

Whowatch е интерактивно конзолно приложение което се използва за мониторинг на потребителите и процесите в системата. То показва моментна информация за логнатите потребители в машината. Във Whowatch може да гледате процесите на конкретен потребител представени в дървовиден вид които е адски удобен. Имате възможност и да изпращате сигнали SIGINT и SIGKILL до конкретни процеси. Убиването на процеси е адски лесно и забавно тук във whowatch :).

Повече информация отностно Whowatch може да намерите в сайта на автора на whowatch: http://wizard.ae.krakow.pl/~mike/

whowatch_pic_1

whowatch_pic_2

whowatch_pic_3

whowatch_pic_4

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Логване на бавните заявки в MySQL

Понеже това не е особено популярно да се записват бавните заявки в MySQL реших да напиша този пост. Идеята че, понякога една заявка която се изпълнява бавно може да забави вашата машина повече от колкото многократно повече заявки, но изпълнявани за по- малко време.

По подразбираме времето в секунди за бавно изпълняваща се заявка е 10 секунди, но може да промените това време по следния начин:

long_query_time=13

Чрез примерът горе времето в секунди за бавно изпълнение на заявка става 13 (тринадесет) секунди.

Но това не е достатъчно за активиране на записването на бавните заявки. Ето какво трябва да се добави:

log-slow-queries=/var/log/mysql/mysql_slow.log

Ето цял пример за записване на заявките в MySQL:

#added by amri
log=/var/log/mysql/mysql.log
log-bin=/var/log/mysql/mysql-bin.log
log-slow-queries=/var/log/mysql/mysql_slow.log
long_query_time=10

Извод: Благодарение на тези лог файлове може да извършвате добър мониторинг на своя MySQL сървър. В доста голяма полза е и възможността за записване на "бавните заявки" именно поради която причина написах тази статия.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Потребител на всеки виртуален хост в Apache

Написах една статия за това как всеки виртуален хост в Apache да работи със собствен потребител чрез модула mpm-itk . Идеята е, че може да имате лесен мониторинг и съответно да ограничавате лесно тези домейни/потребителски имена. Всичко това звучи толкова интересно, а на практика е толкова лесно :). Все пак ето тук може да научите как може да го реализирате и на практика:

Отделен потребител на всеки виртуален хост в Apache чрез mpm-itk

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)