Повышение производительности веб-сервера: ставим nginx перед apache

В одной из заметок мы описали как настроить nginx + php-fpm. Но nginx можно использовать и немного по другому. Например, если нету желания полностью отказываться от apache, но ускорить работу веб сервера хочется. (Возможно, у вас реализована сложная система редиректов, которую не хотите портировать на nginx).

В таком случае возможное решение - использовать nginx только для отдачи статики (картинок, css, js и т.д. файлов). Остальные же запросы (к php движку, к примеру) перенаправим по прежнему к apache (подразумевается, что у вас уже настроен сайт для работы с последним). Для этого настроим nginx для отдачи статики, все остальные запросы по прежнему проксируем к apache. (В таком случае можно обойтись без php-fpm).

Резервное копирование сайта на dropbox

Недавно столкнулся с проблемой резервного копирования сайтов на vps. Сайты работают на wordpress, так что нормальные варианты с git, composer и т.д. не рассматривал. Все как можно проще, но надежно. Итак, постановка задачи: с некой периодичностью нужно бэкапить базы и все содержимое нескольких проектов.

А так как я ленив, хочу не просто делать бэкап на сервере, а сразу получать его у себя на жестком диске и с минимумом телодвижений; нужно, чтобы данные сразу отправлялись мне. 

Настройка nginx + php-fpm в Debian/Ubuntu

Nginx - это HTTP-сервер. По сравнению с apache он более отказоустойчив, способен выдержать большое количество соединений. В основном применяется на продакшн серверах, почему-то его редко настраивают для локальной разработки, хотя это не сложнее, чем настроить apache + php.

Mapping usb модема в udev

Решил поставить себе на Gentoo ядро 3.10.4, с tuxonice патчем.

Результатом остался очень довольный, много проблем с системой пропало, и это учитывая тот факт, что я не изменял старую конфигурацию ядра. Первым, что заметил - наконец-то нормально стала работать сеть после выхода из suspend.

Но кое-что пришлось подправить.

Ограничение доступа при помощи .htaccess

Иногда удобным методом ограничить доступ к разделам сайта  (например, к панели администратора или каким-то конфиденциальным данным) есть ограничение доступа при помощи .htaccess (или, по другому, basic authentication). Конечно, с помощью скриптов это можно сделать изящнее, удобнее, а иногда даже безопаснее. Дело в том, что вся информация для получения доступа отправляется с каждым запросом в виде заголовков. Но если это не критично, то можно использовать; это наверное, самый быстрый вариант.

Конвертация движка таблицы в MySQL

Иногда нужно конвертировать движок таблицы MySQL в уже существующей базе данных.

Например, мне понадобилось создать связи между таблицами. Для их создания таблицы должны быть InnoDB (чтобы поддерживать foreign key).

Старые Wordpress (и не только) проекты используют MyISAM, потому что до версии MySQL 5.5.4 это был движок по умолчанию. Но он не поддерживает множество полезных функций, таких как внешние ключи, транзакции и т.д. Все эти функции поддерживает более современный движок InnoDB, который теперь используется по умолчанию.

ru en

Создание связей между таблицами с помощью phpmyadmin

В этой заметке мы научимся создавать связи между таблицами в базе данных MySQL с помощью phpmyadmin. Если по какой-то причине вы не желаете использовать phpmyadmin, смотрите приведенные ниже SQL-запросы.

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

Например, можно запретить удалять категорию, если с ней связана хотя б одна заметка. Или удалить все заметки, если удалена категория. Или установить NULL в связующее поле. В любом случае, с помощью связей повышается отказоустойчивость и надежность приложения.

Настройка PHP timezone в php.ini

Во время работы с Symfony framework получил следующее предупреждение (warning):

Warning: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /var/www/symfony/app/cache/prod/classes.php on line 5009

На самом деле, ничего страшного или необычного - это было вызвано обновлением PHP до версии 5.4, а так как новая версия стала рядом со старой с новыми конфигами, пришлось заново настроить PHP timezone в php.ini. Для начала, нужно узнать, в какой мы timezone. Точнее, как ее нужно указать в PHP конфиге.

Установка и настройка Apache / PHP / MySQL в Ubuntu

Вы только что установили последнюю версию Ubuntu 13.04, и хотите  установить дополнительное программное обеспечение для изучения веб-программирования и запуска фреймворков, например, Symfony 2, yii, zend и т.д.? Тогда вам к нам. Расмотрим всего лишь 10 шагов для этого. Мы сначала рассмотрим установку веб-сервера, потом Symfony.