Настройка web-сервера
Материал из RSU WiKi
Содержание |
Задача
Создать ... с поддержкой MySQL и PHP
Описываемая система работает на базе операционной системы SLES9 SP3 (ppc64) [1] в логическом разделе LPAR [2] на сервере IBM pSeries [3]. Используется 64х-битная ppc-сборка Apache 2.0.49
Установка
Nginx
Качаем src.rpm и собираем.
mod_security
- http://www.novell.com/coolsolutions/feature/19399.html
- http://www.howtoforge.com/installing-mod-security-on-sles10
Качаем src.rpm с сервера software.opensuse.org, собираем:
rpmbuild --rebuild mod_security2.src.rpm
Ставим из /usr/src/packages/
Лезем в /etc/apache2 и редактируем httpd.conf:
### Global Environment ###################################################### # # The directives in this section affect the overall operation of Apache, # such as the number of concurrent requests. <b># Load libxml2 LoadFile /usr/lib/libxml2.so</b> # Mod_security policy file Include /etc/apache2/mod_security.conf
Лезем в /etc/sysconfig/apache2 и добавляем модули в APACHE_MODULES:
uniqe_id security2
Настройка
Nginx
mod_security
Apache
Юникод как кодировка по-умолчанию вместо ISO-8859-1
Для SLES 9 и 10, в файле /etc/apache2/mod_mime-defaults.conf:
AddDefaultCharset UTF-8
Сжатие на стороне сервера и другая оптимизация вывода
Правим файл /etc/sysconfig/apache2. Добавляем (если нет) в строку APACHE_MODULES модули deflate, headers и expires
Добавляем в каталог /etc/apache2/conf.d/ файл optimize.conf следующего содержания:
# добавляем Content-Type для всех файлов с расширением .gz
AddEncoding gzip .gz
# включаем сжатие для HTML- и XML-файлов
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
# и для иконок (об этом чуть ниже)
AddOutputFilterByType DEFLATE image/x-icon
# также для CSS- и JavaScript-файлов
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# выставляем максимальную степень сжатия (если возникнут проблемы с
# серверной производительностью, следует уменьшить до 7 или 1)
DeflateCompressionLevel 9
# и максимальный размер окна для архивирования
DeflateWindowSize 15
# отключаем архивирование для «проблемных» браузеров
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# добавляем заголовок Vary для корректного распознавания браузеров,
# находящихся за локальными прокси-серверами
Header append Vary User-Agent
# запрещаем кэширование на уровне прокси-сервера для всех файлов,
# для которых у нас выставлено сжатие,
<FilesMatch .*\.(css|js|php|phtml|shtml|html|xml)$>
Header append Cache-Control: private
</FilesMatch>
# Устанавливаем Expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 week"
</IfModule>
# Устанавливаем ETag
FileETag MTime Size
Virtual Hosts
Домашние страницы пользователей
Subversion (SVN)
Основная статья: Subversion
MySQL
Основная статья: MySQL
Юникод в БД
DROP DATABASE www; CREATE DATABASE www CHARACTER SET utf8 COLLATE utf8_general_ci; USE www; set CHARACTER SET utf8;
PHP
Ruby on Rails
Скачиваем с сайта Novell SDK для SLES и подключаем его. Затем устанавливаем ruby, rails и fastcgi. Подключаем в апаче fcgi модуль в /etc/sysconfig/apache2, выполняем
SuSEconfig
и
rcapache2 restart
Логи
Как собрать все User-agent'ы из логов для дальнейшего анализа
Кладем в /var/log/apache2 следующий скрипт:
#!/bin/bash
date > useragents.txt
echo "------------------" >> useragents.txt
echo "" >> useragents.txt.tmp
echo "Думаю:"
for i in `ls *-access_log-*.gz`
do
echo -n "."
gunzip -d -c $i | awk 'split ($0, a, "\"") {print a[6]}' | sort | uniq >> user
done
cat useragents.txt.tmp | sort | uniq >> useragents.txt
rm useragents.txt.tmp
echo "Сделано! Уникальных строк User-agent:"
cat useragents.txt | wc -l

