Создание бэкапов данных сервера в dropbox

Недавно столкнулся с задачей созданием бэкапов данных сервера на моей vps. На ней хостятся разные сайты. Мои личные работают под управлением более-менее вменяемых технологий/движков, так что весь код есть в системе контроля версий. Для таких сайтов нужно только резервное копирование базы данных и загружаемых данных. Некоторые сторонние сайты  работают на wordpress, так что нужно также сохранять исходники. 

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

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

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

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

Настройка 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

Create relations in MySQL database using phpmyadmin

After reading this article, you will be able to create relations in MySQL database using phpmyadmin. If for some reasons you don't want to use phpmyadmin, please look at SQL queries below.

So, what reason to store relations in the database? After all, your application also solves this task. Actually, it's all about the restrictions and actions upon changes, which can be set using relations.

For example, you can deny deleting category while any article connected with it. Or remove all articles if category removed. Or set NULL in relation field. In any case, using relations increases fault tolerance and reliability of the application.

You need to use an InnoDB engine to create a relation. Only this engine supports foreign keys. If you have MyISAM tables, you can read how convert it to InnoDB.

Настройка 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.