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

Качаем 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

Настройка клиентских приложений

Полезные ссылки