Opera и SSL сертификаты, или критическая ошибка (49)

История началась с того, что на моём вэб сервере истекла дата, сгенерированного мною SSL сертификата безопасности. Она конечно не на что не влияет по сути, но не люблю, когда мне пишут, что я не защищён. Надо было сгенерировать новый сертификат, или… Вот об этом ИЛИ мы и поговорим. Вспомнил что ранее мне на глаза попадался сервис StartSSL™, который предлагал нам бесплатно SSL сертификат, который воспринимают правильно все популярные вэб браузеры. Захотелось мне провернуть именно этот вариант. Поскольку самый популярный у меня браузер Opera, то в нём всё это и происходило изначально, т.е. регистрация, получение персонального сертификата для авторизации, попытки получить SSL сертификат для вэб сервера. Заметьте, именно попытка. В этом браузере сервис вёл себя крайне не стабильно. Когда я это понял, экспортировал персональный сертификат из Opera и импортировал его в IE8 с галочкой что он не для экспорта. И вот в течении этих всех операций как-то так всё закрутилось, у меня почему-то перестал открываться сайт StartSSL в Opera, я тогда так и не понял почему. Много чего пытался сделать, в том числе удалил из Opera персональный сертификат, который мне выдал сервис StartSSL™, о чём сейчас жалею. Ведь тот сертификат, который я экспортировал ранее, почему то не принимается Opera и Firefox. Ну да ладно, не так он важен на данный момент. SSL сертификат был успешно установлен на вэб сервер, благодаря подсказкам от тех же StartSSL™.Но почему-то браузеры не переставали твердить что соединение не защищено. Оказывается сайтом подгружались библиотеки от Google через не защищённый протокол http, достаточно было изменить на https их адреса и всё нормализовалось. ...

13 квітня 2016 · 3 хвилин · 439 слів · dimetrius

Vbulletin и возникающие с ним вопросы

В этой заметке будут описаны проблемные моменты, которые возникали у меня при установке, или переносе vbulletin. 1 2 php_value mbstring.language neutral php_value mbstring.internal_encoding ISO-8859-1 Эти строчки влияли на обработку в тэгах русских символов и знаков препинания. Выходит частично не работали BBкоды. 1 php_flag zlib.output_compression On Эта настройка помогла побороть проблему загрузки страницы не до конца. Особенно было заметно на форме входа в админку, она загружалась без кнопок. 1 AddDefaultCharset WINDOWS-1251 Без этой настройки всё работало, но ошибки выводились в не правильной кодировке. 1 2 3 4 # sysctl net.inet.tcp.recvspace=32768 net.inet.tcp.recvspace: 16384 -> 32768 # sysctl net.inet.tcp.sendspace=262140 net.inet.tcp.sendspace: 131070 -> 262140 Эта настроечка помогла на FreeBSD избавиться от затыков случайных, если юзер залогинен. Через раз страница грузилась по 3-5 секунд.

13 квітня 2016 · 1 хвилина · 119 слів · dimetrius

Битые вложения после переноса phpbb3

Сегодня после переноса форума phpbb3 на новый сервер заметил что все вложения оказались битыми. Заметно это было по частично открывающимся картинкам и при детальном осмотре, всех остальных битых вложений. Начал сразу рыться в настройках nginx, т.к. до этого форум работал на базе apache, но это результатов не дало. Пошёл в ход поиск в google и на одном из форумов были найдены ключевые слова… двоичный режим. Небольшое отступление… Обычно я использую в качестве FTP клиента Filezilla, спросите почему его, а не всеми любимый Total Commander? Да потому что Total Commander почему-то никогда не использует всю возможную скорость. Вот как и в этот раз. Через Filezilla на сервер заливается два файла одновременно, каждый со скоростью ~1 Mbyte/s, при попытке залить через Total Commander получаем один поток и скорость ~150-200 kbyte/s. Ну не издевательство ли? :) Причём это подтверждалось не один раз и не на одном сервере такое происходит. Так вот всё же решение вопроса: Если вы используете Total Commander, то продолжайте, он заливает вроде правильно. Если же вы используете Filezilla, то перед тем как скачивать файлы со старого сервера, или заливать на новый, выберите в меню “Передача” - “Режим передачи” - “Двоичный режим” После передачи файлов, не забудьте сравнить отображаемый клиентом размер файлов на сервере и у вас в локальной папке, он должен быть одинаковым!

13 квітня 2016 · 1 хвилина · 213 слів · dimetrius

В Google Adsense для Украины доступен банковский перевод на счёт

16 апреля 2014 года в интерфейсе Google Adsense стал доступен вывод заработка через банковский перевод на счёт для Украины. С чем связано не знаю, возможно ситуация в Украине повлияла, а может просто “доросли”. Поскольку я пользуюсь Приват банком, попробую вам на его примере рассказать что и как делать… Во первых обязательно нужно иметь виртуальную долларовую визу (Google выводит только в долларах, к тому же SWIFT платежи отправляются только в долларах и евро) Для получения реквизитов нужно в Приват24 перейти по адресу “Все услуги - Инфо - Мои реквизиты”, выбрать вашу виртуальную визу, “SWIFT-платежом” и нажать кнопку “Получить реквизиты”. {loadposition ads} Сегодня сам первый раз заполнил реквизиты на вывод, затрудняюсь однозначно ответить что нужно указывать в последнем поле от Google, которое называется “Реквизиты для последующего зачисления (необязательно)”. В любом случае Google сначала автоматически отправляет пробный платёж, после его получения вы должны написать им точную сумму перевода (около доллара), на основании чего они делают вывод что реквизиты верны и на них можно отправлять деньги. Если же деньги не прошли, значит реквизиты заполнены не верно, нужно пересмотреть варианты. Выходит вы точно не потеряете свои деньги. Что радует: Google говорит что никаких комиссий не берёт Приват банк говорит что комиссия равна обычной кредитке, а у меня на зачисление 0% (хз, не врёт ли оператор в чате) Сроки зачисления обещают 3-5 рабочих дней Расстраивает: Google снова перевёл всё в доллары не известно по какому курсу. Кажется евро было интереснее выводить. ...

13 квітня 2016 · 2 хвилин · 240 слів · dimetrius

Восстановление MySQL репликации после повреждения relay логов slave

Остановилась MySQL репликация на слейве (version 5.1.61). Slave_IO_Running было отмечено как Yes, но Slave_SQL_Running как No. Обычный перезапуск слейва не помог, значит требуется более детальный анализ проблемы. Похоже на то что повреждены relay логи слейва, т.к. тестирование с помощью “mysqlbinlog” показало ошибку. Следовательно, решением должно быть удаление текущих бинлогов слейва и указание слейву позиции с которой нужно продолжить репликацию из бинлогов мастера. Вот полный вывод команды “show slave status\G” на остановившемся слейв сервере: {loadposition ads} 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 Slave_IO_State: Waiting for master to send event Master_Host: 10.1.79.48 Master_User: replica Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.002046 Read_Master_Log_Pos: 639600842 Relay_Log_File: triton-relay-bin.001957 Relay_Log_Pos: 243 Relay_Master_Log_File: mysql-bin.002045 Slave_IO_Running: Yes Slave_SQL_Running: No Replicate_Do_DB: pretinac_radio,web Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: web.logging_www,web.logging_raspored,web.web_korisnik Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 1594 Last_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave. Skip_Counter: 0 Exec_Master_Log_Pos: 103641119 Relay_Log_Space: 983411603 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 1594 Last_SQL_Error: [the same error description as in Last_Error] Для исправления этой ошибки нужно сбросить текущий бинлог слейва и указать позицию, с которой нужно продолжить репликацию. До этого важно запомнить два параметра, которые мы видели выше в выводе статуса на слейве, это Relay_Master_Log_File и Exec_Master_Log_Pos: ...

13 квітня 2016 · 3 хвилин · 449 слів · dimetrius

Дизайн шаблона Joomla CMS

Слово Jumla на языке суахили означает «все вместе», «как одно целое». Когда-то давно, довольно долгое время я верстал сайты на HTML/CSS/JavsScript и не имел никакого представления о CMS. Пугающим моментом было то, что как я полагал владение PHP является крайне необходимым, однако по факту каких-то базовых знаний оказалось достаточно (простой код оказывается понятен программисту любого другого языка, а в дебри лезть не обязательно). Для человека, владеющего только версткой и скриптами, довольно достаточно знать какие-то определенные моменты, для того, чтобы с ходу приступить к работе с Joomla. Что-то в этих моментах схоже с другими CMS, что-то отличается. Постарался изложить эти моменты кратко. Если бы они мне были известны сразу, то смог бы начать создавать администрируемые пользователями сайты гораздо быстрее. Итак, если вы владеете HTML, но не имеете представления о CMS Joomla, то вам следует нажать кнопку ниже. Для общего представления основные понятия этой CMS: Шаблон/Template – совокупность папок/файлов, определяющих компоновку и дизайн страниц сайта. На одном сайта можно иметь множество установленных шаблонов. Таким образом можно изменять дизайн сайта за считанные секунды, переключив с одного шаблона на другой. В HTML шаблоне определены области страницы (как правило, это div блоки), в которых будет выводится определенное содержимое. Например, как правило, в центральной области отображается содержимое страницы. Владелец/автор сайта будет иметь возможность создавать статьи-артикулы с помощью встроенного редактора WYSIWYG, которые и будут отображаться в этой области. Также в HTML шаблоне могут быть определены области для отображения различных объектов. Как правило, это такие области как: шапка документа (то, что всегда отображается вверху), подвал (то что отображается внизу), область для меню, какие-то области по бокам. Здесь уже все зависит от пожеланий автора шаблона. Эти области называют позициями. У шаблона есть и другие функции, которые будут описаны далее. Модуль/Module – объект с HTML/PHP/CSS/JavaScript кодом, который может быть отображен в определенных отведенных для этого местах страницы. Пример типичных моделей: переключатель языка сайта, блок авторизации на сайте, строка с поиском по сайту, голосование и т.п. Плагин/Plugin– это объект с HTML/PHP/CSS/JavaScript кодом, который может быть встроен внутрь содержимого страницы. Отличие от модуля только в месте отображения на странице. Автор артикула, при работе в WYSIWYG редактором будет иметь возможность вставить определенный код (подобный HTML коду). На самом сайте этот код будет заменен на объект подобный модулю. Компонент/Component – глобальный объект, который имеет множество настроек. Как правило, в придачу к компоненту идут и модули и плагины. Для примера компонентом может быть гостевая книга, интернет-магазин, форум. Все эти объекты имеют множество настроек и могут выводится отдельной страницей. WYSIWYG редактор – текстовый онлайн редактор (what you see is what you get). С помощью упрощенной панели, похожей на панель Microsoft Word или WordPad можно создавать статьи, которые редактор автоматически преобразует в код HTML. ...

13 квітня 2016 · 10 хвилин · 2056 слів · dimetrius

Динамические поддомены на nginx

Заметка об использовании переменных в домене на web сервере nginx, или динамические поддомены. Важно не забыть выше расположить статические поддомены, чтоб динамические их не перебивали. Ну и примеры ниже: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 server { server_name www.example.com; location / { proxy_pass 127.0.0.1:80; } } server { server_name ~^(?<dynamic>[a-z0-9\-]+)\.example.com$; location / { proxy_pass 127.0.0.1:80/sites/$dynamic$uri$is_args$args; } } Вот ещё вариант: Если у вас много поддоменов или вы хотите создавать их автоматически, тогда имеет смысл создать одну универсальную конфигурацию, которая будет обслуживать все поддомены, направляя запросы посетителей в соответствующие каталоги. В первую очередь, необходимо настроить DNS: добавить поддомен с именем * (звездочка, без кавычек) и направить его на IP вашего веб-сервера. Измените секцию server вашего сайта следующим образом: 1 2 3 4 5 6 7 8 9 10 11 12 server { listen 80; server_name example.com *.example.com; root /var/www/example.com/$subdomain; set $subdomain ""; if ($host ~* ^([a-z0-9-\.]+)\.example.com$) { set $subdomain $1; } if ($host ~* ^www.example.com$) { set $subdomain ""; } } Не забудьте поменять example.com на имя вашего домена. Эта конфигурация работает следующим образом: ...

13 квітня 2016 · 1 хвилина · 213 слів · dimetrius

Добавляем DKIM подписи в Exim, параллельно настраиваем SPF, DMARC на примере CentOS

Создаём директорию 1 mkdir /etc/exim/dkim Генерируем ключ 1 openssl genrsa -out /etc/exim/dkim/example.com.key 1024 из него генерируем публичную часть ключа 1 openssl rsa -in /etc/exim/dkim/example.com.key -out /etc/exim/dkim/example.com.key.pub -pubout Прописываем в DNS публичную часть ключа 1 mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..." Проверяем что запись корректно добавилась на DNS dig mail._domainkey.example.com TXT Настраиваем Exim 1 2 3 4 5 6 7 8 9 10 11 12 13 14 begin transports # тут добавляем наш DKIM DKIM_DOMAIN = ${lc:${domain:$h_from:}} DKIM_FILE = /etc/exim/dkim/${lc:${domain:$h_from:}}.key DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}} remote_smtp: driver = smtp dkim_domain = DKIM_DOMAIN dkim_private_key = DKIM_PRIVATE_KEY dkim_selector = mail dkim_canon = relaxed dkim_strict = yes Не забываем перезагрузить Exim (service exim reload) Параллельно обычно приходится настраивать SPF и DMARC. Это не сложно. Добавляем на DNS подобные записи: 1 2 example.com. IN TXT "v=DMARC1\;p=reject" example.com. IN TXT "v=spf1 mx a ip4:222.222.222.222 ~all" 222.222.222.222 это IP для примера, обычно приходится прописывать, когда почта отправляется с интерфейсного IP, который не совпадает с записями A, MX… статья не закончена

13 квітня 2016 · 1 хвилина · 163 слів · dimetrius

Дополнительные IP в CentOS

Пусть для примера установлен 1 ip на интерфейсе eth0: 1 2 eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 Задача: добавить еще один адрес 192.168.0.11. Создадим /etc/sysconfig/network-scripts/ifcfg-eth0:0 со следующим содержанием: 1 2 3 4 5 DEVICE=eth0:0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.0.11 NETMASK=255.255.255.255 Это можно сделать выполнив команду: vim ifcfg-eth0:0 После этого выполняем service network restart Выполняем ifconfig, видим что появился eth0:0 1 2 3 4 eth0:0 Link encap:Ethernet HWaddr 00:11:22:33:44:55 inet addr:192.168.0.11 Bcast:192.168.0.11 Mask:255.255.255.255 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:185 Base address:0xa000 Теперь несколько усложним задачу, предположим нам нужно добавить 20 штук ip 192.168.0.101-120. Можно сделать 20 конфигов, аналогичных указанному выше, но для добавления непрерывного диапазона ip есть способ лучше. Создадим /etc/sysconfig/network-scripts/ifcfg-eth0-range0 1 2 3 4 5 IPADDR_START=192.168.0.101 IPADDR_END=192.168.0.120 NETMASK=255.255.255.255 CLONENUM_START=1 NO_ALIASROUTING=yes Выполним service network restart В результате появятся 20 алиасов eth0:1 - eth0:20, c заданными нами адресами. Нужно отметить что добавлять/изменять/удалять ip-адреса можно с помощью команд ip и ifconfig, например если нужно временно поднять дополнительный адрес: ifconfig eth0:0 inet 192.168.0.11/32 Естественно, после перезагрузки адрес пропадет. Чтобы убрать: ifconfig eth0:0 down ...

13 квітня 2016 · 1 хвилина · 204 слів · dimetrius

Запуск, остановка и перезапуск сетевых интерфейсов в ОС Ubuntu Server 14.04, Debian 7

С некоторых пор команды запуска, остановки, перезапуска сетевых интерфейсов не срабатывают так, как мы того ждём. 1 2 3 service networking start service networking stop service networking restart Вместо них теперь используются новые команды: запуск сетевого интерфейса eth0 ifup eth0 остановка сетевого интерфейса eth0 ifdown eth0 и, соответственно, перезапуск ifdown eth0 && sudo ifup eth0

13 квітня 2016 · 1 хвилина · 55 слів · dimetrius