Проблемы с основной сетевой картой (eth0). Задача состоит в том, чтобы перекинуть все на вторую сетевую карту, которая не используется (eth1), свободных портов на циске нет, поэтому придется еще и сбросить таблицу MAC-адресов.
воскресенье, 27 марта 2016 г.
ISPmanager 4: server registration result = 'ERROR 9 : MySQL error
Довелось мне на Debian 7 обновить MySQL с версии 5.5 на версию 5.7.
Обновление вроде как самое обычное:
# echo "deb http://repo.mysql.com/apt/debian/ wheezy mysql-5.7" > /etc/apt/sources.list
# apt-get update
# apt-get install mysql-server mysql-client libmysqlclient20
Но после этого в панели перестала отображаться вкладка "Базы данных".
Зайдя в "Возможности" я обновил список пакетов и панель увидела, что MySQL 5.7 установлен, но не включен. Попытки включить через панель не получались.
В логах наткнулся на такую строчку:
# tail -f /usr/local/ispmgr/var/pkgctl.log
Mar 27 01:24:35 [20551:0] ../../src/mgr/install/pkgmysql.cpp:381 ESC[1;33mDEBUG server registration result = 'ERROR 9 : MySQL error
Решается это так:
# mysql_upgrade -u root -p
Обновление вроде как самое обычное:
# echo "deb http://repo.mysql.com/apt/debian/ wheezy mysql-5.7" > /etc/apt/sources.list
# apt-get update
# apt-get install mysql-server mysql-client libmysqlclient20
Но после этого в панели перестала отображаться вкладка "Базы данных".
Зайдя в "Возможности" я обновил список пакетов и панель увидела, что MySQL 5.7 установлен, но не включен. Попытки включить через панель не получались.
В логах наткнулся на такую строчку:
# tail -f /usr/local/ispmgr/var/pkgctl.log
Mar 27 01:24:35 [20551:0] ../../src/mgr/install/pkgmysql.cpp:381 ESC[1;33mDEBUG server registration result = 'ERROR 9 : MySQL error
Решается это так:
# mysql_upgrade -u root -p
После этого снова попробовал включить MySQL через панель, получилось. Вкладка в панели тоже появилась.
четверг, 24 марта 2016 г.
Сборка PHP 7 в Debian
Установка зависимостей:
# apt-get install git checkinstall \
apache2-threaded-dev libxml2-dev \
libcurl4-openssl-dev libjpeg-dev \
libpng-dev libxpm-dev \
libmysqlclient-dev libpq-dev \
libicu-dev libfreetype6-dev \
libldap2-dev libxslt-dev \
build-essential autoconf \
bison libbz2-dev \
libgmp-dev libmcrypt-dev \
libpspell-dev librecode-dev php-pear
Собираем пакет:
# cd /root
# git clone https://git.php.net/repository/php-src.git
# cd php-src
# ./buildconf
# ./configure --prefix=/opt/php7 \
--with-config-file-path=$HOME/tmp/usr/etc \
--enable-fpm --enable-mbstring --enable-zip --enable-bcmath \
--enable-pcntl --enable-ftp --enable-exif --enable-calendar \
--enable-sysvmsg --enable-sysvsem \
--enable-sysvshm --enable-wddx --with-curl --with-mcrypt \
--with-iconv --with-gmp --with-pspell --with-gd \
--with-jpeg-dir=/usr --with-png-dir=/usr \
--with-zlib-dir=/usr --with-xpm-dir=/usr \
--with-freetype-dir=/usr --enable-gd-native-ttf \
--enable-gd-jis-conv --with-openssl \
--with-pdo-mysql=/usr --with-gettext=/usr \
--with-zlib=/usr --with-bz2=/usr \
--with-recode=/usr --with-mysqli=/usr/bin/mysql_config
# make
# checkinstall -D make install
# тут нужно исправить "Version" со значения "src" на "7"
Если нужно сохранить пакет:
# mv ./php7-1_amd64.deb /root/php7-1_amd64.deb
Если используется селектор в ISPmanager 4, то нужно не забыть про /etc/phpversion
via.
# apt-get install git checkinstall \
apache2-threaded-dev libxml2-dev \
libcurl4-openssl-dev libjpeg-dev \
libpng-dev libxpm-dev \
libmysqlclient-dev libpq-dev \
libicu-dev libfreetype6-dev \
libldap2-dev libxslt-dev \
build-essential autoconf \
bison libbz2-dev \
libgmp-dev libmcrypt-dev \
libpspell-dev librecode-dev php-pear
Собираем пакет:
# cd /root
# git clone https://git.php.net/repository/php-src.git
# cd php-src
# ./buildconf
# ./configure --prefix=/opt/php7 \
--with-config-file-path=$HOME/tmp/usr/etc \
--enable-fpm --enable-mbstring --enable-zip --enable-bcmath \
--enable-pcntl --enable-ftp --enable-exif --enable-calendar \
--enable-sysvmsg --enable-sysvsem \
--enable-sysvshm --enable-wddx --with-curl --with-mcrypt \
--with-iconv --with-gmp --with-pspell --with-gd \
--with-jpeg-dir=/usr --with-png-dir=/usr \
--with-zlib-dir=/usr --with-xpm-dir=/usr \
--with-freetype-dir=/usr --enable-gd-native-ttf \
--enable-gd-jis-conv --with-openssl \
--with-pdo-mysql=/usr --with-gettext=/usr \
--with-zlib=/usr --with-bz2=/usr \
--with-recode=/usr --with-mysqli=/usr/bin/mysql_config
# make
# checkinstall -D make install
# тут нужно исправить "Version" со значения "src" на "7"
Если нужно сохранить пакет:
# mv ./php7-1_amd64.deb /root/php7-1_amd64.deb
via.
понедельник, 21 марта 2016 г.
cPanel 500 error "Out of memory!"
При попытке просмотра списка поддоменов в cPanel появилась ошибка 500.
Если во время воспроизведения ошибки посмотреть в лог, то можно увидеть, что не хватает памяти панели:
# tail -f /usr/local/cpanel/logs/error_log
Out of memory!
Cpanel::FHTrap was not closed properly and was unable to return the result: []
[2016-03-21 19:01:37 +0300] warn [cpsrvd] The subprocess (cpanel (cpanel)) exited with an error: The subprocess reported error number 1 when it ended. at /usr/local/cpanel/Cpanel/Server/Handlers/SubProcess.pm line 155.
Cpanel::Server::Handlers::SubProcess::_report_subprocess_errors(Cpanel::Server::Handlers::SubProcess=HASH(0x26064d0)) called at /usr/local/cpanel/Cpanel/Server/Handlers/SubProcess.pm line 72
Cpanel::Server::Handlers::SubProcess::handler(Cpanel::Server::Handlers::SubProcess=HASH(0x26064d0), "subprocess_name", "cpanel (cpanel)", "subprocess_read_handle", IO::Handle=GLOB(0x2605eb8), "subprocess_write_handle", IO::Handle=GLOB(0x26062c0), "api_type", "html", ...) called at cpsrvd.pl line 6421
cpanel::cpsrvd::cpHandler("app", "cpanel", "document", "./frontend/x3/subdomain/index.html") called at cpsrvd.pl line 2387
cpanel::cpsrvd::dodoc_cpaneld() called at cpsrvd.pl line 1645
cpanel::cpsrvd::dodoc(HASH(0x1802ea0)) called at cpsrvd.pl line 1328
cpanel::cpsrvd::handle_one_connection() called at cpsrvd.pl line 844
cpanel::cpsrvd::script() called at cpsrvd.pl line 339
Смотрим сколько памяти у нас выделено под панель:
# grep maxmem /var/cpanel/cpanel.config
maxmem=2048
Немного добавим памяти:
# vim /var/cpanel/cpanel.config
maxmem=2548
# service cpanel restart
Ошибка исчезает.
Если во время воспроизведения ошибки посмотреть в лог, то можно увидеть, что не хватает памяти панели:
# tail -f /usr/local/cpanel/logs/error_log
Out of memory!
Cpanel::FHTrap was not closed properly and was unable to return the result: []
[2016-03-21 19:01:37 +0300] warn [cpsrvd] The subprocess (cpanel (cpanel)) exited with an error: The subprocess reported error number 1 when it ended. at /usr/local/cpanel/Cpanel/Server/Handlers/SubProcess.pm line 155.
Cpanel::Server::Handlers::SubProcess::_report_subprocess_errors(Cpanel::Server::Handlers::SubProcess=HASH(0x26064d0)) called at /usr/local/cpanel/Cpanel/Server/Handlers/SubProcess.pm line 72
Cpanel::Server::Handlers::SubProcess::handler(Cpanel::Server::Handlers::SubProcess=HASH(0x26064d0), "subprocess_name", "cpanel (cpanel)", "subprocess_read_handle", IO::Handle=GLOB(0x2605eb8), "subprocess_write_handle", IO::Handle=GLOB(0x26062c0), "api_type", "html", ...) called at cpsrvd.pl line 6421
cpanel::cpsrvd::cpHandler("app", "cpanel", "document", "./frontend/x3/subdomain/index.html") called at cpsrvd.pl line 2387
cpanel::cpsrvd::dodoc_cpaneld() called at cpsrvd.pl line 1645
cpanel::cpsrvd::dodoc(HASH(0x1802ea0)) called at cpsrvd.pl line 1328
cpanel::cpsrvd::handle_one_connection() called at cpsrvd.pl line 844
cpanel::cpsrvd::script() called at cpsrvd.pl line 339
Смотрим сколько памяти у нас выделено под панель:
# grep maxmem /var/cpanel/cpanel.config
maxmem=2048
Немного добавим памяти:
# vim /var/cpanel/cpanel.config
maxmem=2548
# service cpanel restart
Ошибка исчезает.
воскресенье, 20 марта 2016 г.
Показывать progress bar снятия и заливки дампа БД
Загрузить дамп:
# pv dumpfile.sql | mysql -uuser -ppass db_name
# pv dumpfile.sql | mysql -uuser -ppass db_name
Снять дамп:
# mysqldump -uuser -ppass db_name | pv > dumpfile.sql
суббота, 19 марта 2016 г.
tlstest.paypal.com cURL error
При попытке подключения к tlstest.paypal.com появляется ошибка:
# php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); var_dump(curl_exec($ch));'
bool(false)
# curl -v https://tlstest.paypal.com/
* About to connect() to tlstest.paypal.com port 443 (#0)
* Trying 23.77.253.128... connected
* Connected to tlstest.paypal.com (23.77.253.128) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5961
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
Такая ошибка может появляться, если на сервере отключена уязвимая SSLv3.
В таком случаем можно коннектиться по безопасному TLSv1:
# curl -v https://tlstest.paypal.com/ --tlsv1
* About to connect() to tlstest.paypal.com port 443 (#0)
* Trying 23.77.253.128... connected
* Connected to tlstest.paypal.com (23.77.253.128) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_RSA_WITH_AES_256_CBC_SHA256
* Server certificate:
* subject: CN=tlstest.paypal.com,OU=CDN Support,O="PayPal, Inc.",STREET=2211 N 1st St,L=San Jose,ST=California,postalCode=95131-2021,C=US,serialNumber=3014267,businessCategory=Private Organization,incorporationState=Delaware,incorporationCountry=US
* start date: Nov 06 00:00:00 2015 GMT
* expire date: Oct 26 23:59:59 2017 GMT
* common name: tlstest.paypal.com
* issuer: CN=Symantec Class 3 EV SSL CA - G3,OU=Symantec Trust Network,O=Symantec Corporation,C=US
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: tlstest.paypal.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Content-Length: 20
< Date: Sat, 19 Mar 2016 10:26:09 GMT
< Connection: keep-alive
<
* Connection #0 to host tlstest.paypal.com left intact
* Closing connection #0
# php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); curl_setopt($ch, CURLOPT_SSLVERSION, "1" ); var_dump(curl_exec($ch));'
PayPal_Connection_OK
bool(true)
# php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); var_dump(curl_exec($ch));'
bool(false)
* About to connect() to tlstest.paypal.com port 443 (#0)
* Trying 23.77.253.128... connected
* Connected to tlstest.paypal.com (23.77.253.128) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -5961
* Closing connection #0
* SSL connect error
curl: (35) SSL connect error
Такая ошибка может появляться, если на сервере отключена уязвимая SSLv3.
В таком случаем можно коннектиться по безопасному TLSv1:
# curl -v https://tlstest.paypal.com/ --tlsv1
* About to connect() to tlstest.paypal.com port 443 (#0)
* Trying 23.77.253.128... connected
* Connected to tlstest.paypal.com (23.77.253.128) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_RSA_WITH_AES_256_CBC_SHA256
* Server certificate:
* subject: CN=tlstest.paypal.com,OU=CDN Support,O="PayPal, Inc.",STREET=2211 N 1st St,L=San Jose,ST=California,postalCode=95131-2021,C=US,serialNumber=3014267,businessCategory=Private Organization,incorporationState=Delaware,incorporationCountry=US
* start date: Nov 06 00:00:00 2015 GMT
* expire date: Oct 26 23:59:59 2017 GMT
* common name: tlstest.paypal.com
* issuer: CN=Symantec Class 3 EV SSL CA - G3,OU=Symantec Trust Network,O=Symantec Corporation,C=US
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: tlstest.paypal.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Content-Length: 20
< Date: Sat, 19 Mar 2016 10:26:09 GMT
< Connection: keep-alive
<
* Connection #0 to host tlstest.paypal.com left intact
* Closing connection #0
# php -r '$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://tlstest.paypal.com/"); curl_setopt($ch, CURLOPT_SSLVERSION, "1" ); var_dump(curl_exec($ch));'
PayPal_Connection_OK
bool(true)
четверг, 17 марта 2016 г.
ISPmanager: Этот IP адрес используется одним из почтовых доменов и не может быть удален
Если при попытке удаления IP-адреса в панели появляется подобная надпись, то нужно пойти в панель и сменить везде где используется этот адрес на другой.
В моем случае почтовых доменов было очень много и мне нужно было узнать какой именно домен использует этот адрес.
Сделать это можно так:
# cat /etc/exim/domainips | grep 1.2.3.4
site123.ru:1.2.3.4;
В моем случае почтовых доменов было очень много и мне нужно было узнать какой именно домен использует этот адрес.
Сделать это можно так:
# cat /etc/exim/domainips | grep 1.2.3.4
site123.ru:1.2.3.4;
После того как мы узнали имя почтового домена, который занимает адрес идем в панель и меняем его на другой, после этого IP-адрес можно спокойно удалить.
среда, 16 марта 2016 г.
Проверка нескольких условий if в nginx
Имеется вот такой виртуальный хост:
server {
server_name site.ru m.site.ru www.site.ru www.m.ste.ru;
...
}
Нужно сделать редирект http->https только для site.ru и для www.site.ru, но не для m.site.ru и www.m.site.ru:
set $flag A;
}
if ($host != m.site.ru) {
set $flag "${flag}B";
}
if ($scheme = http) {
set $flag "${flag}C";
}
if ($flag = ABC) {
return 301 https://$server_name$request_uri;
}
В .htaccess у меня прописан редирект с www на non-www:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.m.site.ru$ [NC]
RewriteRule ^(.*)$ http://m.site.ru/$1 [R=301,L]
Проверка:
$ curl -I http://site.ru --silent | grep Loca
Location: https://site.ru/
$ curl -I http://www.site.ru --silent | grep Loca
Location: http://site.ru/
$ curl -I http://www.m.site.ru --silent | grep Loca
Location: http://m.site.ru/
$ curl -I http://m.site.ru --silent | grep Loca
$
server {
server_name site.ru m.site.ru www.site.ru www.m.ste.ru;
...
}
Нужно сделать редирект http->https только для site.ru и для www.site.ru, но не для m.site.ru и www.m.site.ru:
set $flag 0;
if ($host = site.ru) {set $flag A;
}
if ($host != m.site.ru) {
set $flag "${flag}B";
}
if ($scheme = http) {
set $flag "${flag}C";
}
if ($flag = ABC) {
return 301 https://$server_name$request_uri;
}
В .htaccess у меня прописан редирект с www на non-www:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.m.site.ru$ [NC]
RewriteRule ^(.*)$ http://m.site.ru/$1 [R=301,L]
$ curl -I http://site.ru --silent | grep Loca
Location: https://site.ru/
$ curl -I http://www.site.ru --silent | grep Loca
Location: http://site.ru/
$ curl -I http://www.m.site.ru --silent | grep Loca
Location: http://m.site.ru/
$ curl -I http://m.site.ru --silent | grep Loca
$
среда, 9 марта 2016 г.
Ansible: nginx+php-fpm+mariadb+wordpress в контейнере Virtuozzo 7
Продолжаю разбираться с Ansible.
Тут вводная заметка по нему: http://blog.amet13.name/2016/02/ansible.html
А тут я устанавливал nginx на разные дистрибутивы: http://blog.amet13.name/2016/02/ansible-playbook-nginx.html
В этот раз задача была развернуть окружене на базе nginx+php-fpm+mariadb+wordpress в контейнере Virtuozzo. В принципе у меня это получилось. Текущий результат тут: https://github.com/Amet13/ansible-vz-wordpress
Тут вводная заметка по нему: http://blog.amet13.name/2016/02/ansible.html
А тут я устанавливал nginx на разные дистрибутивы: http://blog.amet13.name/2016/02/ansible-playbook-nginx.html
В этот раз задача была развернуть окружене на базе nginx+php-fpm+mariadb+wordpress в контейнере Virtuozzo. В принципе у меня это получилось. Текущий результат тут: https://github.com/Amet13/ansible-vz-wordpress
понедельник, 7 марта 2016 г.
Делист IP-адреса из черных списков Microsoft
Если приходит отбойник типа такого:
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:
[email protected]
host mx2.hotmail.com [65.54.188.126]
SMTP error from remote mail server after MAIL FROM:<[email protected]> SIZE=2119269:
550 SC-001 (BAY004-MC4F31) Unfortunately, messages from 1.2.3.4 weren't sent. Please contact your Internet service provider since part of their network is on our block list. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.
Делистнуть можно тут.
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:
[email protected]
host mx2.hotmail.com [65.54.188.126]
SMTP error from remote mail server after MAIL FROM:<[email protected]> SIZE=2119269:
550 SC-001 (BAY004-MC4F31) Unfortunately, messages from 1.2.3.4 weren't sent. Please contact your Internet service provider since part of their network is on our block list. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors.
Делистнуть можно тут.
суббота, 5 марта 2016 г.
Google Chrome: Unable to find expected entry 'main/binary-i386/Packages' in Release file
В Google Chrome недавно выпилили поддержку i386, после этого при попытке обновления списка пакетов появлялась ошибка:
$ sudo apt-get update
...
W: Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/Release Unable to find expected entry 'main/binary-i386/Packages' in Release file (Wrong sources.list entry or malformed file)
E: Some index files failed to download. They have been ignored, or old ones used instead.
Решение:
$ sudo sed -i -e 's/deb http/deb [arch=amd64] http/' "/etc/apt/sources.list.d/google-chrome.list"
$ sudo sed -i -e 's/deb http/deb [arch=amd64] http/' "/opt/google/chrome/cron/google-chrome"
$ sudo apt-get update
...
W: Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/Release Unable to find expected entry 'main/binary-i386/Packages' in Release file (Wrong sources.list entry or malformed file)
E: Some index files failed to download. They have been ignored, or old ones used instead.
Решение:
$ sudo sed -i -e 's/deb http/deb [arch=amd64] http/' "/etc/apt/sources.list.d/google-chrome.list"
$ sudo sed -i -e 's/deb http/deb [arch=amd64] http/' "/opt/google/chrome/cron/google-chrome"
И снова сделать update.
среда, 2 марта 2016 г.
Exim: retry time not reached for any host after a long failure period
Ошибка может появиться, если бьются базы exim'а.
# exim -Mvl 1ab5H4-0004J9-5c
2016-03-02 14:49:02 Received from [email protected] U=webmaster P=local S=50407
2016-03-02 14:49:02 [email protected] R=dnslookup T=remote_smtp defer (-53): retry time not reached for any host
Решение:
# cd /var/spool/exim/db
# rm retry retry.lockfile wait-remote_smtp wait-remote_smtp.lockfile
# service exim restart
# exim -Mvl 1ab5H4-0004J9-5c
2016-03-02 14:49:02 Received from [email protected] U=webmaster P=local S=50407
2016-03-02 14:49:02 [email protected] R=dnslookup T=remote_smtp defer (-53): retry time not reached for any host
# cd /var/spool/exim/db
# rm retry retry.lockfile wait-remote_smtp wait-remote_smtp.lockfile
# service exim restart