Как ни странно, но даже в свежеустановленной CentOS 7.2 установлена довольно устаревшая версия библиотеки libcurl (7.29), в то время как для корректной работы с протоколом TLS 1.2 требуется версия 7.34 и выше.
Протокол TLS 1.2, в свою очередь, требуется для работы с Paypal (пока что только с sandbox, но уже с июня 2016 и с рабочими аккаунтами).
Ну что, будем апгрейдить libcurl
AddThis Smart Layers
Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения
среда, 9 марта 2016 г.
воскресенье, 24 января 2016 г.
Инкрементное архивирование файлов при помощи команды tar
Утилита командной строки tar в системе Linux имеет чуть ли не бесконечное количество опций и ключей. По моему скромному мнению, человек помнящий наизусть все эти ключи должен быть просто маньяком. Поэтому, дабы не забивать голову избыточной информацией я часто пользуюсь справкой по той или иной команде, например tar --help.
Но, зачастую справка слишком лаконична и не всегда понятны те или иные ньюансы использования опций требуемой команды.
Именно это и является причиной написания данной шпаргалки.
Но, зачастую справка слишком лаконична и не всегда понятны те или иные ньюансы использования опций требуемой команды.
Именно это и является причиной написания данной шпаргалки.
Настройка репликации rsync по SSH без пароля
При работе с кластерами часто необходимо делать синхронизацию файлов (репликацию) при помощи команды rsync.
Другим примером использования данной команды будет перенос файлов с одного сервера на другой при апгрейде или для создания резервных копий данных.
Если при одноразовом использовании rsync чаще всего вопросов нет, то при автоматизации процесса репликации возникает проблема авторизации.
Ведь при репликации файлов между серверами при помощи команды rsync мы устанавливаем соединение с удаленным сервером и каждый раз будет затребован пароль для идентификации пользователя.
Нам же нужно автоматизировать выполнение команды так, чтобы пароль не требовался, но при этом ни в коем случае нельзя нигде хранить пароль в текстовом виде.
Другим примером использования данной команды будет перенос файлов с одного сервера на другой при апгрейде или для создания резервных копий данных.
Если при одноразовом использовании rsync чаще всего вопросов нет, то при автоматизации процесса репликации возникает проблема авторизации.
Ведь при репликации файлов между серверами при помощи команды rsync мы устанавливаем соединение с удаленным сервером и каждый раз будет затребован пароль для идентификации пользователя.
Нам же нужно автоматизировать выполнение команды так, чтобы пароль не требовался, но при этом ни в коем случае нельзя нигде хранить пароль в текстовом виде.
Настройка timezone в CentOS 7
При создании нового сервера, который будет использован для хостинга сайтов одним из важных действий при первичной конфигурации будет настройка системного времени (timezone). Ведь даже на домашнем компьютере мы всегда настраиваем текущую дату и время, а для сервера эта настройка еще более критична. В соответствии с ней будет определяться время создания и изменение файлов, будут выполняться различные задачи, обновления и прочие действия.
Не буду сильно вдаваться в теорию, где что и как работает в CentOS, тем более что в седьмой версии этого дистрибутива задача по настройке timezone сводится всего лишь к одной команде.
Не буду сильно вдаваться в теорию, где что и как работает в CentOS, тем более что в седьмой версии этого дистрибутива задача по настройке timezone сводится всего лишь к одной команде.
Настройка hostname для Centos 7
Одним из важных действий при конфигурации нового сервера является настройка его имени или hostname, по которому данный сервер может быть идентифицирован в сети.
Также, hostname используется при отправке тех или иных уведомений сервером.
Так как в моем случае речь идет о сервере доступном через Интернет имя хоста должно быть реальным доменом или, как это правильно называется полностью квалифицированным (Fully Quilified Domain Names или FQDN), который прописывается в DNS.
Также, hostname используется при отправке тех или иных уведомений сервером.
Так как в моем случае речь идет о сервере доступном через Интернет имя хоста должно быть реальным доменом или, как это правильно называется полностью квалифицированным (Fully Quilified Domain Names или FQDN), который прописывается в DNS.
Апгрейд ядра CentOS 7
Как ни странно, но даже в седьмой версии CentOS все еще идет с ядром 3.10, в то время как давно уже вышла четвертая версия.
Ниже описана пошаговая инструкция по апгрейду ядра для дистрибутива CentOS 7 до четвертой версии.
На самом деле, ничего сложного в апгрейде ядра нет.
Ниже описана пошаговая инструкция по апгрейду ядра для дистрибутива CentOS 7 до четвертой версии.
На самом деле, ничего сложного в апгрейде ядра нет.
воскресенье, 18 октября 2015 г.
Как ограничить пользователю доступ по SFTP в свою домашнюю директорию
Это тяжело будет назвать руководством или мануалом по настройке прав доступа пользователей в Linux.
Здесь я описываю одну конкретную задачу, с которой часто приходится сталкиваться в повседневной работе.
Работаем мы в основном с CentOS, а в последнее время именно с CentOS 7, поэтому данная шпаргалка предназначена в первую очередь для данной версии системы. Если она работает и в других дистрибутивах или версиях CentOS - замечательно.
Здесь я описываю одну конкретную задачу, с которой часто приходится сталкиваться в повседневной работе.
Работаем мы в основном с CentOS, а в последнее время именно с CentOS 7, поэтому данная шпаргалка предназначена в первую очередь для данной версии системы. Если она работает и в других дистрибутивах или версиях CentOS - замечательно.
Как создать нового пользователя в CentOS 7
При настройке сервера для очередного проекта нам необходимо создать как минимум одного пользователя, от имени которого будет работать PHP, с которым можно будет подключаться к SFTP и загружать какие-либо файлы и для других задач. В конце концов, не с рутом же работать.
воскресенье, 20 сентября 2015 г.
Как настроить редактор для crontab по умолчанию
По умолчанию, после установки свежей версии CentOS 7 единственным редактором будет старый "добрый" vim. Соответственно, crontab открывается в нем же.
Первым делом установим редактор nano.
Теперь, когда жизнь снова засветилась всеми красками можно настроить новый редактор по умолчанию для работы с crontab.
Открываем для редактирования скрипт настроек консоли:
и в самом низу добавляем всего одну строку
После этого остается разлогиниться и залогиниться в терминал снова чтобы изменения вступили в силу.
Если же по какой-то причине нет возможности настроить редактор crontab по умолчанию, но нужно открыть crontab именно в редакторе nano, команда будет выглядеть следующим образом:
Первым делом установим редактор nano.
yum -y install nano
Теперь, когда жизнь снова засветилась всеми красками можно настроить новый редактор по умолчанию для работы с crontab.
Открываем для редактирования скрипт настроек консоли:
nano /etc/bashrc
и в самом низу добавляем всего одну строку
export EDITOR="nano"
После этого остается разлогиниться и залогиниться в терминал снова чтобы изменения вступили в силу.
Если же по какой-то причине нет возможности настроить редактор crontab по умолчанию, но нужно открыть crontab именно в редакторе nano, команда будет выглядеть следующим образом:
export VISUAL=nano; crontab -e
вторник, 10 июня 2014 г.
Как автоматически запускать Redis при запуске сервера
После того как мы установили и настроили сервис кеширования Redis на сервере необходимо сделать дополнительную настройку, чтобы этот сервис запускался автоматически при перезагрузке сервера. В противном случае, после каждой перезагрузки (даже если это происходит крайне редко) придется вручную запускать этот сервис.
четверг, 5 сентября 2013 г.
Шпаргалка по .htaccess
Один из наших клиентов недавно мигрировал с платформы LiveCity на Magento.
Сайт довольно большой, с тысячами товаров, сотнями категорий и множеством страниц контента.
При этом, сайт довольно популярный и хорошо проиндексирован Гуглом. Совсем не хочется клиенту терять позиции в результатах выдачи Гугла.
В Magento существует довольно продвинутый и удобный механизм URL Rewrite Management, позволяющий быстро создавать кастомные редиректы.
Все бы ничего, но проблема в том, что на старой платформе не было возможности создавать редиректы, когда пользователь заходил на сайт без www, чтобы система могла автоматически перенаправлять на адрес с www.
В результате со временем образовалось какое-то дикое количество дублирующихся ссылок.
Но даже это не было бы такой уж страшной проблемой, если бы Magento была настолько "тупой" системой и позволяла бы все также заходить на те или иные страницы с www и без него.
Так как Magento все же несколько продвинутее, у нас образовалась новая проблема, когда пользователь заходил на сайт по ссылке без www, его просто перебрасывало на главную страницу. А вот это уже совсем грустно.
Пришлось помучать немного .htaccess
Сайт довольно большой, с тысячами товаров, сотнями категорий и множеством страниц контента.
При этом, сайт довольно популярный и хорошо проиндексирован Гуглом. Совсем не хочется клиенту терять позиции в результатах выдачи Гугла.
В Magento существует довольно продвинутый и удобный механизм URL Rewrite Management, позволяющий быстро создавать кастомные редиректы.
Все бы ничего, но проблема в том, что на старой платформе не было возможности создавать редиректы, когда пользователь заходил на сайт без www, чтобы система могла автоматически перенаправлять на адрес с www.
В результате со временем образовалось какое-то дикое количество дублирующихся ссылок.
Но даже это не было бы такой уж страшной проблемой, если бы Magento была настолько "тупой" системой и позволяла бы все также заходить на те или иные страницы с www и без него.
Так как Magento все же несколько продвинутее, у нас образовалась новая проблема, когда пользователь заходил на сайт по ссылке без www, его просто перебрасывало на главную страницу. А вот это уже совсем грустно.
Пришлось помучать немного .htaccess
суббота, 10 марта 2012 г.
Как подключиться к MSSQL серверу из PHP. Новая ревизия.
Почти полтора года прошло с того момента, как я написал шпаргалку по установке драйвера PDO_DBLIB для подключения к удаленному MSSQL серверу из PHP.
Сегодня выяснилось, что кроме того, что с того времени утекло много воды, так еще и технология на месте не стоит и та шпаргалка уже не очень то актуальна.
Сегодня выяснилось, что кроме того, что с того времени утекло много воды, так еще и технология на месте не стоит и та шпаргалка уже не очень то актуальна.
вторник, 12 октября 2010 г.
Как подключиться к MSSQL серверу из PHP
У нас появилась задача - подключаться из Magento к удаленному MSSQL серверу и тянуть с него некие данные.
Так как Magento стоит на Linux сервере, это оказалось не такой уж простой задачкой.
Нужно было установить расширение, которое позволяло бы PHP подключаться к MSSQL.
Так как Magento основана на Zend Framework, родным для нее будет подключение при помощи PDO_DBLIB драйвера, который, разумеется никогда на Linux серверах по умолчанию не устанавливается.
Чтобы установить этот драйвер для начала нужно установить сам PDO модуль. С ним проблем не возникло и при помощи
А вот
Сначала на то что он не может запустить компилятор.
Решил эту проблему радикально:
На этом он не успокоился и стал требовать чтобы был установлен пакет FreeTDS
С ним прошло все более ли менее гладко и встал он куда ему и указали.
Очередная попытка установить pdo_dblib снова не увенчалась успехом, конфигурационный файл ни в какую не хотел видеть где установлен FreeTDS, даже когда ему прописывали путь в ключе.
Помогло это:
Теперь снова нашлась причина чтобы не установиться. Видите ли ему версия PDO не нравится.
Решилось просто:
Только после этого этот несчастный драйвер позволил себя сконфигурировать и установить.
Танцы с бубном продолжались не менее 4 часов. Подопытный сервер практически не пострадал, за исключением того, что в процессе пришлось перекомпилировать apache+php чтобы убить "родную" поддержку PDO, с которой PDO_DBLIB ни в какую не хотел дружить и в последствии установить PDO через Pecl. После перекомпиляции apache нужно заново переконфигурировать Nginx. Но это уже мелочи жизни :-)
Апдейт: Данная шпаргалка действительна для PHP 5.2.x. Для PHP 5.3.x. есть новая шпаргалка, там процесс настройки сильно отличается.
Так как Magento стоит на Linux сервере, это оказалось не такой уж простой задачкой.
Нужно было установить расширение, которое позволяло бы PHP подключаться к MSSQL.
Так как Magento основана на Zend Framework, родным для нее будет подключение при помощи PDO_DBLIB драйвера, который, разумеется никогда на Linux серверах по умолчанию не устанавливается.
Чтобы установить этот драйвер для начала нужно установить сам PDO модуль. С ним проблем не возникло и при помощи
pecl install pdoон успешно установился.
А вот
pecl install pdo_dblibначал ругаться.
Сначала на то что он не может запустить компилятор.
Решил эту проблему радикально:
mount -o remount,exec,suid /tmp mount -o remount,exec,suid /var/tmp
На этом он не успокоился и стал требовать чтобы был установлен пакет FreeTDS
С ним прошло все более ли менее гладко и встал он куда ему и указали.
Очередная попытка установить pdo_dblib снова не увенчалась успехом, конфигурационный файл ни в какую не хотел видеть где установлен FreeTDS, даже когда ему прописывали путь в ключе.
Помогло это:
touch {path}/freetds/include/tds.h touch {path}/freetds/lib/libtds.a
Теперь снова нашлась причина чтобы не установиться. Видите ли ему версия PDO не нравится.
Решилось просто:
pecl install -n pdo_dblibт.е. с игнорированием зависимости от версии PDO.
Только после этого этот несчастный драйвер позволил себя сконфигурировать и установить.
Танцы с бубном продолжались не менее 4 часов. Подопытный сервер практически не пострадал, за исключением того, что в процессе пришлось перекомпилировать apache+php чтобы убить "родную" поддержку PDO, с которой PDO_DBLIB ни в какую не хотел дружить и в последствии установить PDO через Pecl. После перекомпиляции apache нужно заново переконфигурировать Nginx. Но это уже мелочи жизни :-)
Апдейт: Данная шпаргалка действительна для PHP 5.2.x. Для PHP 5.3.x. есть новая шпаргалка, там процесс настройки сильно отличается.
вторник, 13 апреля 2010 г.
В поисках 503 ошибки
Пара клиентов часто жалуются на 503 ошибку (service unavailable) при заходе на свои сайты.
Поверхностное изучение показало что ошибка может быть из-за того что с одного IP было слишком много соединений.
В принципе, так как на сервере стоит Nginx, то в теории может такое быть, так как все запросы Apache поступают от него с одним и тем же IP.
Копнув глубже понял, что nginx тут не причем.
В конце концов дождался момента когда в очередной раз стала появляться ошибка 503 и полез смотреть error_log апача. И вот что там было:
Request exceeded the limit of 10 internal redirects due to probable configuration
error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
Т.е. проблема то не столько в сервере, сколько в скриптах которые эти клиенты гоняют у себя.
Но ведь главное то было волну нагнать, заставить меня перелопачивать гугль и кропотливо изучать логи сервера.
Поверхностное изучение показало что ошибка может быть из-за того что с одного IP было слишком много соединений.
В принципе, так как на сервере стоит Nginx, то в теории может такое быть, так как все запросы Apache поступают от него с одним и тем же IP.
Копнув глубже понял, что nginx тут не причем.
В конце концов дождался момента когда в очередной раз стала появляться ошибка 503 и полез смотреть error_log апача. И вот что там было:
Request exceeded the limit of 10 internal redirects due to probable configuration
error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
Т.е. проблема то не столько в сервере, сколько в скриптах которые эти клиенты гоняют у себя.
Но ведь главное то было волну нагнать, заставить меня перелопачивать гугль и кропотливо изучать логи сервера.