Настраиваем сервер для LiveStreet. Часть V. Apache.
Предыдущие части:
Начиная с этого момента настраивать окружение можно по разному. Глобально можно свести к трём тезисам:
Использовать или нет Apache это вопрос очень близкий к религиозному. С моей точки зрения это стоит того, но я не буду утверждать что это наилучшее возможное решение. Есть свои плюсы и минусы.
В любом случае, я описываю именно то окружение, которые использую сам, и субъективно считаю наилучшим по совокупности достоинств. Это проверенное и работающее решение: nginx+apache+php-fpm
Устанавливаем:
Во время установки будет писать что-то по поводу «Could not reliably determine the server's fully qualified domain» — игнорировать.
Выключаем дефолтный сайт и включаем/выключаем кое-какие моды:
В конфигурационный файл /etc/apache2/httpd.conf (который будет, по идее, пустым) вносим единственную строку:
Теперь можно установить modsecurity. Я, настоятельно, рекомендую.
Ставим mod-security(он ругнётся):
Правим конфигурационный файл /etc/apache2/mods-available/mod-security.load. Первая строка должна выглядеть так(исправление — прописать полный путь к libxml2):
Включаем его конфигурацию, по умолчанию:
Создаём директории для нашего сайта (имя директории сайта совпадает с доменом, для удобства):
Замечание: здесь и далее предполагается что superls.ru — доменное имя нашего сайта.
Теперь, создаем конфигурационный файл /etc/apache2/sites-available/superls.ru для нашего сайта:
Название файла, опять для удобства, совпадает с именем домена. Конфигурация изначально предполагает наличие кое-чего, что ещё не стоит, потом разберемся. Внимание на директиву ServerAdmin она должна быть разумной. Содержимое:
Активируем сайт:
Рестартуем Apache, для уверенности:
Теперь нам нужно убедится что оно работает. Для этого добавим(временно!!! ) наш сайт в конфигурационный файл в /etc/hosts вписать туда:
Создаём тестовый файл /var/www/superls.ru/public/test.html:
Произвольного содержания. Например пишем там:
Запускаем lynx одноименной командой:
жмем кнопку G набиваем адрес (с http:// ): superls.ru:8080/test.html смотрим на наш спич и радуемся :)
Продолжение в следующей части:
Часть VI. PHP.
- Часть I. Введение, хостинг и PuTTY.
- Часть II. Vim, файловая система, hostname.
- Часть III. Некоторые настройки ядра, репозитории и базовые утилиты.
- Часть IV. MySQL.
Начиная с этого момента настраивать окружение можно по разному. Глобально можно свести к трём тезисам:
- Применить light HTTP сервер для раздачи статики и проксирования тяжёлых запросов
- Применить fast cgi PHP
- Применить кэширование данных в оперативной памяти
Использовать или нет Apache это вопрос очень близкий к религиозному. С моей точки зрения это стоит того, но я не буду утверждать что это наилучшее возможное решение. Есть свои плюсы и минусы.
В любом случае, я описываю именно то окружение, которые использую сам, и субъективно считаю наилучшим по совокупности достоинств. Это проверенное и работающее решение: nginx+apache+php-fpm
Устанавливаем:
apt-get install apache2 apache2-doc apache2-utils
apt-get -t squeeze-backports install libapache2-mod-rpaf
Во время установки будет писать что-то по поводу «Could not reliably determine the server's fully qualified domain» — игнорировать.
Выключаем дефолтный сайт и включаем/выключаем кое-какие моды:
a2dissite default
a2enmod rewrite headers actions
a2dismod autoindex deflate status auth_basic authn_file authz_groupfile authz_user
В конфигурационный файл /etc/apache2/httpd.conf (который будет, по идее, пустым) вносим единственную строку:
ServerName localhostВ конфигурационном файле /etc/apache2/ports.conf меняем значения опций NameVirtualHost и Listen на следующие:
NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080
Теперь можно установить modsecurity. Я, настоятельно, рекомендую.
Ставим mod-security(он ругнётся):
apt-get -t squeeze-backports install libapache2-modsecurity
Правим конфигурационный файл /etc/apache2/mods-available/mod-security.load. Первая строка должна выглядеть так(исправление — прописать полный путь к libxml2):
LoadFile /usr/lib/libxml2.so.2
Включаем его конфигурацию, по умолчанию:
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Создаём директории для нашего сайта (имя директории сайта совпадает с доменом, для удобства):
mkdir -p /var/www/superls.ru/public
mkdir -p /var/www/superls.ru/logs
Замечание: здесь и далее предполагается что superls.ru — доменное имя нашего сайта.
Теперь, создаем конфигурационный файл /etc/apache2/sites-available/superls.ru для нашего сайта:
vim /etc/apache2/sites-available/superls.ru
Название файла, опять для удобства, совпадает с именем домена. Конфигурация изначально предполагает наличие кое-чего, что ещё не стоит, потом разберемся. Внимание на директиву ServerAdmin она должна быть разумной. Содержимое:
Header always unset "X-Powered-By" ServerSignature Off ServerTokens Prod <VirtualHost 127.0.0.1:8080> ServerAdmin server@superls.ru ServerName superls.ru DocumentRoot /var/www/superls.ru/public/ ErrorLog /var/www/superls.ru/logs/apache.error.log CustomLog /var/www/superls.ru/logs/apache.access.log combined UseCanonicalName Off <IfModule mod_fastcgi.c> AddHandler php-fastcgi .php Action php-fastcgi /usr/sbin/php-fpm.fcgi ScriptAlias /usr/sbin/php-fpm.fcgi /usr/sbin/php-fpm <Directory /usr/sbin> Options ExecCGI FollowSymLinks SetHandler fastcgi-script Order allow,deny Allow from all </Directory> </IfModule> </VirtualHost>
Активируем сайт:
a2ensite superls.ru
Рестартуем Apache, для уверенности:
/etc/init.d/apache2 restart
Теперь нам нужно убедится что оно работает. Для этого добавим(временно!!! ) наш сайт в конфигурационный файл в /etc/hosts вписать туда:
127.0.0.1 superls.ru
Создаём тестовый файл /var/www/superls.ru/public/test.html:
vim /var/www/superls.ru/public/test.html
Произвольного содержания. Например пишем там:
Ты установил Apache2, дружок. Возьми с полки пирожок.
Запускаем lynx одноименной командой:
lynx
жмем кнопку G набиваем адрес (с http:// ): superls.ru:8080/test.html смотрим на наш спич и радуемся :)
Продолжение в следующей части:
Часть VI. PHP.
16 комментариев
Зачем? )
Для php — в php.ini есть специальная настройка . Она скроет этот заголовок. Так что нет смысла подключать доп. модуль апача ради только скрытия одного заголовка.
А ещё,
Это в принципе указывается в /etc/apache2/conf.d/security.
И ещё, я что-то не понял, а к чему у вас
Там-же системные бинарники лежат.
expose_php = Off заголовок LS не убирает, что кстати никто и не обещал, в документации.
Можно, конечно, просто закомментировать его в index.php — но это плохой путь, т.к. модификация оригинального кода движка.
Либо использовать mod_headers как сделано у меня, что Imho правильнее.
Либо на уровне nginx тоже, наверное, можно решить.
IfModule mod_headers.c на мой взгляд излишество — мы же знаем что мы установили, а что нет. Это не тот случай когда нужны дополнительные проверки.
Вся секция mod_fastcgi.c взята откуда-то, уже не помню откуда, с минимальными изменениями. Работает, как часы, менять ничего там не хочу в силу отсутствия 100% понимания. Если есть приложения что там поменять — давайте. Протестирую, если будет работать и выглядеть лучше — поменяем :)
Можно. proxy_hide_header, fastcgi_hide_header. Или модулем headers-more.
Всегда лучше учитывать все проверки, поверьте.
fastcgi модуль апача я никогда не использовал, и даже вникать сейчас как-то мало охота в него. Да и другими делами тут занят пока )
Во-первых, огромное спасибо автору за эту серию статей. Наверно, только благодаря ей взялся за настройку собственного VPS.
А теперь несколько ламерксих вопросов.
1. Что значит «разумной»? В директиве указывается е-маил куда будут приходить собщения о проблемах с сервиром или что?
И потом у меня такая проблема. У меня сейчас есть сайт, но он на шаред-хостинге. Хостер уже ругается на нагрузку, пришлось перевестись на дорогой тариф. Собственно, поэтому сейчас вожусь с настройкой VPS.
В общем, для начала хочу повесить сайт на тестовый домен, однако все настройки (имена папок итп) делаю для основого домена.
Так вот, как настроить /etc/apache2/sites-available/superls.ru для того, чтобы можно было обращаться по тестовому домену. Или например, можно было обращаться по нескольким доменам?
Т.е. если прописать это в конф. файле, то сайт будет окрываться по адресам: superls.ru www.superls.ru, test.my, www.test.my?
Плюс, чтобы там оно было показано, не нужно менять странички ошибок.
Возможны 2 варианта: /usr/lib/x86_64-linux-gnu/libxml2.so.2 или /usr/lib/i386-linux-gnu/libxml2.so.2. Далее необходимо отредактировать файл /etc/apache2/mods-enabled/mod-security.load, заменив путь, по которому расположена подключаемая библиотека с /usr/lib/libxml2.so.2 на путь к библиотеке в Вашей системе.