Главная Сети и серверы от А до Я Настройка apache2 + nginx + php5 + MySQL + memcached + eaccelerator + sphinx в Ubuntu
Настройка apache2 + nginx + php5 + MySQL + memcached + eaccelerator + sphinx в Ubuntu PDF Печать Email
FAQs - Серверы и сети от А до Я
01.12.2009 02:19

Нередко из компьютерного железа приходится выжимать максимум возможного. Веб-сервера не исключение - либо сайты "тяжелые" и хорошо посещаемые, либо маловато памяти и процессор слабоват.

И тут нам на помощь приходит связка nginx+apache2. Ее смысл в том, чтобы передать "тупую" и требующую много ресурсов работу по поддержанию коннектов и выдаче статического контента исключительно эффективному и экономному в плане использования ресурсов веб-серверу nginx (используется в качестве front-end) , предоставив возможность apache сконцентрироваться на "тонкой" работе по обработке php-скриптов. В этом ему поможет eAccelerator.

Предполагается, что на системе уже установлен стандартный LAMP-сервер, на деталях его установки и настройки останавливаться не буду.
 
Итак, правим конфиг сайта по умолчанию, и далее модифицируем его при создании виртуалхостов:
 
nano /etc/apache2/sites-available/default
 
Нашей целью является переориентирование апача на прослушивание адреса/порта 127.0.0.1:81 - именно на этот адрес мы настроим проксирование nginx. Замечу, что зачастую считается достаточным использование записи вида *:81 вместо 127.0.0.1:81; у меня лично при такой сокращенной записи возникали проблемы и я рекомендую использовать "полную" форму адреса. После редактирования файл должен быть похож на вот это:
<VirtualHost 127.0.0.1:81>
        ServerAdmin webmaster@твой_сайт

        DocumentRoot /var/www/твой_сайт
       
<Directory />
                Options FollowSymLinks
                AllowOverride All
       
</Directory>
       
<Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
       
</Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
       
<Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
       
</Directory>

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
   
<Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
   
</Directory>

</VirtualHost>


Далее по аналогии настраиваем другие виртуальные хосты. При необходимости делаем ссылки на эти файлы в папке /etc/apache2/sites-enabled/

Далее необходимо настроить апач так, чтобы он записывал в свой лог файл "нвстоящие" адреса клиентов, а не 127.0.0.1. Для этого устанавливаем apache2-mod-rpaf:
aptitude install libapache2-mod-rpaf
И последнее с апачем. Редактируем файл  /etc/apache2/ports.conf:

 nano /etc/apache2/ports.conf
NameVirtualHost 127.0.0.1:81
Listen 127.0.0.1:81

Теперь устанавливаем nginx. В последних дистрибутивах ubuntu он уже имеется в стандартных репозитория, поэтому не мудрствуем:
apt-get install nginx
 
Настраиваем nginx. Открываем конфиг:

nano /usr/local/etc/nginx/nginx.conf

все стираем и делаем так:

user www
-data;
worker_processes  
1; # тут ставим кол-во процессов равное количеству ядер в процессоре).

error_log  
/var/log/nginx/error.log;
pid        
/var/run/nginx.pid;

events
{
    worker_connections  
1024;
}

http
{
    include      
/etc/nginx/mime.types;
    default_type  application
/octet-stream;
    server_names_hash_bucket_size
64;
    access_log  
/var/log/nginx/access.log;

    sendfile        on
;
   
#tcp_nopush     on;

   
#keepalive_timeout  0;
    keepalive_timeout  
65;
    tcp_nodelay        on
;


    gzip                on
;
    gzip_proxied        any
;
    gzip_min_length    
1100;
    gzip_http_version  
1.0;
    gzip_buffers        
4 8k;
    gzip_comp_level    
9;
    gzip_types          text
/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;


    include /etc/nginx/proxy.conf; #в этот файл выносим все настройки прокси
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
Создаем файл proxy.conf:
proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;
 
Для виртуальных хостов создаем файлы конфигурации в /etc/nginx/sites-enabled/:

nano /etc/nginx/sites-enabled/example.com

server {
listen
80;
server_name example
.com;
access_log
/var/log/nginx.access_log;
location
~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root
/var/www/test.gigma.ru/;
index index
.html index.php;
access_log off
;
expires
30d;
}
location
~ /\.ht {
deny all;
}
location /
{
proxy_pass http
://127.0.0.1:81/;
}
}


С такими настройками nginx у нас отдаёт всю статику (картинки, видиое, музыку, css, ява скрипты и др.), а апачь трудиться только над выполнением php.
 
Если используется phpmyadmin имеет смысл выделить следующий location:
 
    location /phpmyadmin {
    proxy_pass         http://127.0.0.1:81/phpmyadmin;
    allow 192.168.0.0/24;
    deny all;
    }
 
В противном случае phpadmin  у меня отказывается работать.
 
Устанавливаем memcached:

aptitude install memcached 
Следует иметь в виду следующие моменты:
  • файл /etc/default/memcached содержит настройки типа вкл/выкл;
  • в файле /etc/memcached.conf крайне необходимо из соображений безопасности включить строчку
    -l 127.0.0.1
  • перезагрузка memcached осуществляется /etc/init.d/memcached restart
 

Устанавливаем eAccelerator.
Так же тянем php5-dev, т.к. нам понадобится утилита phpize.

aptitude install php5-dev 
aptitude install make
cd
/tmp/
wget http
://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar xvjf eaccelerator
-0.9.5.3.tar.bz2
cd eaccelerator
-0.9.5.3
phpize
.
/configure --enable-eaccelerator=shared
make
make install


Создаем папку кеша:

mkdir -p /var/cache/eaccelerator 
chmod
0777 /var/cache/eaccelerator


Редактируем конфиг PHP:

nano /etc/php5/apache2/php.ini

Добавляем строки в самом верху:

[PHP]

; eAccelerator configuration
; Note that eAccelerator may also be installed as a PHP extension or as a zend_extension
; If you are using a thread safe build of PHP you must use
; zend_extension_ts instead of zend_extension
extension                      
= "eaccelerator.so"
eaccelerator
.shm_size           = "16"
eaccelerator
.cache_dir          = "/var/cache/eaccelerator"
eaccelerator
.enable             = "1"
eaccelerator
.optimizer          = "1"
eaccelerator
.check_mtime        = "1"
eaccelerator
.debug              = "0"
eaccelerator
.filter             = ""
eaccelerator
.shm_max            = "0"
eaccelerator
.shm_ttl            = "0"
eaccelerator
.shm_prune_period   = "0"
eaccelerator
.shm_only           = "0"
eaccelerator
.compress           = "1"
eaccelerator
.compress_level     = "9"
eaccelerator
.allowed_admin_path = "/var/www/eaccelerator"


Перезапускаем сервисы:

service apache2 restart
service nginx restart
service memcached restart


Вуаля у нас супершустрый сервер который кушает 90мб оперативной памяти.

Для тех кому нужен sphinx (free open-source SQL full-text search engine)

wget http://www.sphinxsearch.com/downloads/sphinx-0.9.8.1.tar.gz
tar
xzvf sphinx-0.9.8.tar.gz
cd sphinx
-0.9.8
.
/configure
make
make install
mkdir -p /
var/db/sphinx/log
chmod
-R 777 /var/db/
mkdir
-p /usr/local/SphinxIndex
chmod
-R 777 /usr/local/SphinxIndex/

и правим конфиг под свои нужды:
nano /usr/local/etc/sphinx.conf


Вроде ничего незабыл…
LAST_UPDATED2
 

© 2010 Web-Студия Brooks, Санкт-Петербург. Все права защищены.
Санкт-Петербург