веб-сервер

Настройка PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль Apache2) на одном сервере под управлением Ubuntu 10.04+

Ситуация проста: на новый и очаровательный сервер с Ubuntu 10.04+ и современным PHP 5.3, пригодным для всех актуальных версий CMS, вдруг требуется подселить старый-старый сайт, начинающий сыпать ошибками при попытке запуска на PHP 5.3 (подавай ему чего-нибудь постарше, например, PHP 5.2). Кто виноват — понятно. Но что делать?

Не паниковать! На одном сервере с одним Apache2 прекрасно заводятся и соседствуют PHP 5.2 (через fastcgi) и PHP 5.3 (как модуль Apache2). Мы далее решим проблему так, что указать какой именно PHP использовать можно будет на уровне настроек виртуального хоста.

Что такое SSL и зачем он на вашем сервере? Разберёмся и настроим защищенный SSL доступ для Apache2 с самоподписным сертификатом за пару минут в Ubuntu 10.04+

Вообще, я обо всём об этом уже писал. Но тема акутальности не потеряла. К тому же, появилось совсем уж простое техническое решение для Ubuntu 10.04+. Но начну с краткого ликбеза, потому что в целом вопрос, о котором речь пойдёт далее, из тех, что рекомендуются новичкам к скорейшему изучению. Итак, незащищённое http-соединение опасно тем, что любой, кто слушает (снифает) трафик, прекрасно видит все пароли, которые вы отсылаете на сайты вместе с логинами по протоколам POST или GET. Заниматься таким могут злоумышленники или, например, обезумевшие админы вашего провайдера.

Зато, если соединение с удалённым сервером устанавливается по протоколу https (с использованием для шифрования данных SSL сертификата), весь перехваченный трафик злоумышленникам — не пригодится, потому что ваши запросы к серверу и его ответы вам — зашифрованы (а расшифровка, в общем случае, архисложна или невозможна).

SSL сертификат это набор средств, которые позволяют шифровать передаваемую информацию открытым ключом (так, чтоб расшифровал только получатель) и однозначно идентифицировать владельца сертификата (для защиты от фишинга: злоумышленники не смогут подделать сертификат домена вашего банка, поэтому если вы попали на правильный домен и соединение защищено SSL — расслабьтесь). SSL сертификаты выдают специальные организации и обычно берут за это деньги (например, $100 в год). Но! Сертификат можно создать самостоятельно. Увы, при первом заходе на сайт с таким сертификатом браузер будет ругаться (ведь он заранее знает о центрах сертификации, но ничего не знает о вас), зато потом, когда вы подтвердите, что сертификату можно доверять — браузер создаст защищенное соединение с сервером, которое будет не хуже, чем обеспечиваемое платным сертификатом.

Конечно, это всё не нужно пользователям, если на сервере у вас крутится уютный бложик или какой-нибудь форум (и вы, наверное, догадываетесь, что на шифрование тоже тратятся ресурсы). Но ведь на том же самом сервере для тех же самых бложика с форумом, вы можете пользоваться веб-интерфейсом phpMyAdmin для управления СУБД. Перехваченные пароли нескольких пользователей форума — это так себе проблема, а вот пароль от всей базы данных ресурса с тысячими юзеров — куда страшнее. Соответственно, вам, как вебмастеру, ходить в phpMyAdmin и админку форумов/сайтов и пр. — лучше по защищенному SSL соединению. Согласны?

А теперь о том, как всё это настроить и запустить на своём сервере под управлением Ubuntu за пару минут (или даже быстрее, если вы быстро печатаете в консоли — потребуется лишь 5 команд).

Решение проблемы: apache2 could not reliably determine the server's fully qualified domain name using…

Часто встречаю мучительные поиски решений упомянутой в заголовке проблемы в Debian-подобных дистрибутивах, в том числе и в Ubuntu.

А решение, тем временем, тривиальное и однозначное.

Надо в vhosts.conf добавить директиву ServerName со значением localhost.

Проще всего это сделать одной лаконичной командой:
sudo echo ServerName localhost >> /etc/apache2/conf.d/vhosts.conf

Как подсказали в комментариях, представленный выше пример — неправильный, от суперпользователя будет выполняться echo, а нам надо, чтобы от него выполнилась запись в файл, поэтому делаем вот так (если вы конечно уже не суперпользователь):
echo ServerName localhost | sudo tee -a /etc/apache2/conf.d/vhosts.conf

И после этого надо перезапустить сервер:
service apache2 restart

Создание самоподписного SSL-сертификата и настройка хоста Apache 2 для работы по https

Великий веб-сервер Apache 2 умеет работать по защищенному протоколу https в рамках которого всё передаваемая информация шифруется сервером и клиентом по криптографическому протоколу SSL. Это значит, что даже перехвативший запросы клиента и страницы возвращаемые сервером — не сможет посмотреть содержание этих запросов и этих страниц. Как минимум, все эти данные постоянно оседают у провайдера и если, например, его гнусный сотрудник захочет, то легко узнает те пароли, которые вы отправляете на многие сайты в POST- или GET-запросах.

Для собственного сервера вам, как минимум, следует беречь пароли от баз данных, вбвиаемые в веб-морду phpMyAdmin.

Для того, чтобы организовать шифрованную передачу по протоколу SSL требуется специальный сертификат на сервере. Его подтверждают (обычно за деньги) всякие серьёзные центры по сертификации. Но можно сгененрировать сертификат и самостоятельно — такой сертификат называется самоподписным, потому что никакой центр аттестации его не подтверждает, а подтверждаете лично вы.

Понятно, что для сайтов из мира электронной коммерции (особенно для тех, где имеется некий личный кабинет с каким-то счётом, который может быть злоумышленником опустошён) применять требуется полноценные сертификаты, подтверждённые авторитетным центром, а для сайтов не хранящих какие-то важные пользовательские данные — шифрование вообще ни к чему (ещё и нагрузку на сервер создаёт же), но для собственных нужд (вроде упомянутого phpMyAdmin`а) — сойдём и самоподписной.

Всего-то придётся успокоить браузер, при попытке первого соединения с хостом, зашифрованным самоподписным сертификатом, разок взглянув на примерно такое окошко:

Что, конечно, критично для неосведомлённых посетителей (тем более, если ваш сайт ориентирован далеко не на гиков), но годно — для вас лично или для команды разработчиков, коллег и пр. Так вот о том, как на своём сервере за несколько минут для нужного хоста настроить SSL с самоподписным сертификатом — далее и пойдёт речь.

Экспресс очистка сервера с целью освобождения дискового пространства

Опасно разводить беспорядок на сервере, потому будучи брошенным на произвол судьбы он рано или поздно съест всё свободное место на диске. Сервер с отсутствующим свободным местом может вас даже по ssh в гости не пустить. В этом я недавно убедился. А потому предлагаю краткий набор рекомендаций для тех, кто как и я, бросает серверы без присмотра на длительные сроки, а потом удивляется: «Это что ж с ним случилось?».

Ubuntu для веб-разработчика или как заполучить GD bundled

Столкнулся недавно с интересной ситуацией: с пакетом php5.2.4-2ubuntu5.1 (свежайшая сборка php5, из имеющихся в официальном репозитории Ubuntu) библиотека GD идёт хоть и второй версии, но оригинальная, а не в том варианте, что поставляется в комплекте с php от его разработчиков (GD bundled). Последняя же умеет много чего полезного, например, позволяет использовать целый ряд дополнительных фильтров применительно к обрабатываемому изображению. Для веб-разработчиков — нужный функционал.

Как же получить требуемую версию библиотеки? Нашлось целых два непохожих варианта, о которых далее.

Установка анализатора логов awstats на веб-сервер под управлением Ubuntu Server

Apache2 сохраняет подробнейшую статистику о посетителях сервера в своих логах. Существует не мало средств для анализа логов посещений, но наибольшую популярность, насколько я себе представляю, снискали универсальные инструменты: webalizer и awstats. О настройке последнего далее и поговорим. Awstats написан на Perl и имеется на многих (думаю, что на большинстве) виртуальных хостингах, так что его можно считать чуть ли не традиционным инструментом для анализа логов.

Сразу должен заметить, что рассмотренная ниже конфигурация довольно просто реализуется, но не идеальна в смысле безопасности. Отчёты awstats мы скроем только при помощи нестандартного адреса и никак более, устанавливать пакет будем также в стандартные директории, что небезопасно для ответственных серверов. Однако, если читателям будет интересно, то милости прошу в комментарии: наберётся достаточно вопросов — будет и продолжение статьи.

RSS-материал