Настройка веб-сервера VPS/VDS для Debian/Ubuntu

Решил написать данную статью для того, чтобы собрать всю информацию по данному поводу в одном месте.
У многих возникает вопросы по оптимизации сервера. Расскажу как я добился скорости загрузки страницы за 0.013 секунд.
Итак. У нас есть чистый Debian либо Ubuntu.

Нам предстоит установить и настроить:
— Apache 2
— PHP 5
— MySQL 5
— nginx
— memcached
— eAcellerator
— Sphinx

Буду писать для Ubuntu Server 9.04, впринципе для дебиана почти всё так же.
Расчитываем на то, что сеть у нас уже настроена.

Краткая справка по редактору vi (мы его будем использовать для редактирования):
— для вставки текста нажмите i, затем вводите текст
— для удаления символов нажмите ESC, а затем наберите x
— для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
— для сохранения и выхода нажмите ESC, а затем наберите :wq

Устанавливаем LAMP
$ sudo apt-get update
$ sudo apt-get install apache2 php5 php5-mysql mysql-server-5.0


Устанавливаем nginx.
Сам компилил из исходников, но лучше взять deb пакет здесь: http://packages.debian.org/unstable/web/nginx
Тянем пакет, устанавливаем (ссылку берём выше для своей архитектуры, у меня 64 бит).

$ wget http://ftp.de.debian.org/debian/pool/main/n/nginx/nginx_0.7.59-1_amd64.deb
$ dpkg -i nginx_*


Доустанавливаем модуль к апачу (обязательно):
$ apt-get install libapache2-mod-rpaf


Вешаем апач на другой порт, например 81 (можете на 8080, не суть важно):
$ vi /etc/apache2/ports.conf

В файле назначаем:
Listen *:81


Далее настраиваем виртуальный хост apache.
Копируем дефолтный конфиг:
$ cd /etc/apache2/sites-available
$ sudo cp ./default /etc/apache2/sites-enabled/example.com


Редактируем конфиг виртуалхоста апача:
$ vi /etc/apache2/sites-enabled/example.com


<VirtualHost *:81>
ServerName www.example.com
ServerAlias example.com
ServerAdmin webmaster@example.com

DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory〉

ErrorLog /var/log/apache2/error.log

LogLevel warn

ServerSignature On

</VirtualHost>


Настраиваем gzip сжатие для nginx. Открываем конфиг:
$ vi /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/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;


    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


Немного мана (полный ман: sysoev.ru/nginx/docs/http/ngx_http_gzip_module.html):
#Разрешить сжатие для всех проксированных запросов
gzip_proxied any;

# MIME-типы которые необходимо жать
gzip_types text/plain text/html text/xml application/xml application/x-javascript text/javascript text/css text/json;

# Уровень gzip-компрессии (у меня 9, т.е. максимальное сжатие, т.к. ресурсы позволяют)
gzip_comp_level 8;


Для виртуалхоста создаем новый конфиг:
$ vi /etc/nginx/sites-enabled/example.com


server {
listen 80;
server_name example.com;

access_log /var/log/nginx/example.com-nginx.access.log;

location / {
proxy_pass http://127.0.0.1:81/;
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 40m;
client_body_buffer_size 256k;

proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;

proxy_buffer_size 64k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#Static files location
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|html|flv|mp3)$ {
root /var/www/example.com; }

} 


Проверяем конфиг nginx:
$ nginx -t


Устанавливаем memcached:
$ apt-get install memcached


Конфигурация memcached находится по адресу /etc/php5/conf.d/memcache.ini
По началу ничего менять не стоит.

Устанавливаем eAccelerator.
Так же тянем php5-dev, т.к. нам понадобится утилита phpize.
$ sudo apt-get install php5-dev 
$ sudo apt-get install make
$ sudo cd /tmp/ 
$ sudo wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2 
$ sudo tar xvjf eaccelerator-0.9.5.3.tar.bz2 
$ sudo cd eaccelerator-0.9.5.3 
$ sudo phpize 
$ sudo ./configure --enable-eaccelerator=shared 
$ sudo make 
$ sudo make install


Создаем папку кеша:
$ sudo mkdir -p /var/cache/eaccelerator 
$ sudo chmod 0777 /var/cache/eaccelerator


Редактируем конфиг PHP:
$ vi /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"


Внимание!
Если у вас достаточно свободной оперативной памяти, то рекомендую включить режим кэширования байт-кода исключительно в оперативной памяти:
eaccelerator.shm_only           = "1"


А так же увеличить доступную память для кеша:
eaccelerator.shm_size           = "128"


Так же в пакете аксселлератора есть файл control.php, которым вы можете управлять кешем и анализировать ошибки, что очень удобно. Класть этот файл нужно обязательно по пути
eaccelerator.allowed_admin_path = "/var/www/eaccelerator"
Иначе будет выдавать ошибки.

Далее устанавливаем Sphinx.
Зачем я повторяюсь, ведь об этом уже написано несколько постов (кстати в интернете мануалов поти нет)? Отвечаю: я столкнулся с такими проблемами, которые там не обхвачены, поэтому пишу из-за этих моментов.

Тянем исходники (в репозиториях пакета нет), распаковываем и устанавливаем:
$ 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/


Далее редактируем файл конфигурации, любезно составленный kruft'ом (за что ему, или не ему, но всёравно спасибо), но приведу сразу полностью рабочий и готовый вариант (вариант из авторской статьи не актуален и требует допиливания):
$ vi /usr/local/etc/sphinx.conf


## Конфигурационный файл Sphinx-а для индексации Живой улицы

#######################
#
# Описываем индексы
#
#######################

# Источник-родитель для всех остальных источников. Здесь указываются параметры доступа 
# к базе данных сайта
source lsParentSource
{
        type            = mysql
        sql_host        = your_database_host
        sql_user        = your_database_login
        sql_pass        = your_database_password
        sql_db          = your_database_name
        sql_port        = 3306
        # Для ускорения работы прописываем путь до MySQL-го UNIX-сокета (чтобы 
        # операции с БД происходили не через TCP/IP стек сервера)
        sql_sock        = /var/run/mysqld/mysqld.sock
    
        
        mysql_connect_flags     = 32 # 32- включение сжатие при обмене данными с БД
    
        # Включам нужную кодировку соединения и выключаем кеш запросов
        sql_query_pre                   = SET NAMES utf8
        sql_query_pre                   = SET SESSION query_cache_type=OFF    
}

# Источник топиков
source topicsSource : lsParentSource
{
        # запрос на получения данных топиков
        sql_query               = \
                SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \
                tc.topic_text, t_fast.topic_publish \
                FROM prefix_topic as t_fast, prefix_topic_content AS tc \
                WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end

        # запрос для дробления получения топиков на неколько итераций
        sql_query_range         = SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic
        
        # сколько получать объектов за итерацию
        sql_range_step          = 1000

        
        # Указываем булевый атрибут критерия "топик опубликован". Для возможности указания этого критерия при поиске
        sql_attr_bool           = topic_publish

        # Атрибут даты добавления, типа "время"
        sql_attr_timestamp      = topic_date_add

        # мульти-аттрибут "теги топика"
        sql_attr_multi  = uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag

        sql_ranged_throttle     = 0
}

# Источник комментариев
source commentsSource : lsParentSource
{
        sql_query               = \
                        SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
                        FROM prefix_topic_comment \
                        WHERE comment_id>=$start AND comment_id<=$end

        sql_query_range         = SELECT MIN(comment_id),MAX(comment_id) FROM prefix_topic_comment
        sql_range_step          = 5000

        sql_attr_bool           = comment_delete
        sql_attr_timestamp      = comment_date
}

#######################
#
# Описываем индексы
#
#######################

index topicsIndex
{
        # Источник, который будет хранить данный индекса
        source                  = topicsSource
        path                    = /usr/local/SphinxIndex/topicsSource

        # Тип хранения аттрибутов
        docinfo                 = extern

        mlock                   = 0

        # Используемые морфологические движки
        morphology              = stem_enru, soundex, metaphone

        # Кодировака данных из источника        
        charset_type            = utf-8


        # Из данных источника HTML-код нужно вырезать
        html_strip                              = 1
}

# Индекс комментариев
index commentsIndex
{
        source                  = commentsSource
        path                    = /usr/local/SphinxIndex/commentsSource

        docinfo                 = extern

        mlock                   = 0

        morphology              = stem_enru, soundex, metaphone

        charset_type            = utf-8
}

#######################
#
# Настройки индексатора
#
#######################


indexer
{
        # Лимит памяти, который может использавать демон-индексатор
        mem_limit                       = 32M
}

#######################
#
# Настройка демона-поисковика
#
#######################

searchd
{
        # Адрес, на котором будет прослушиваться порт
        address                         = 127.0.0.1


        # Ну и собственно номер порта демона searchd
        port                            = 3312

        # Лог-файл демона
        log                                     = /var/log/sphinx/searchd.log

        # Лог поисковых запросов. Если закомментировать,то логировать поисковые строки не будет
        query_log                       = /var/log/sphinx/query.log

        # Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
        read_timeout            = 5

        # Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения
        max_children            = 30

        # Файл, в который сохраняется PID-процесса при запуске
        pid_file                        = /var/log/sphinx/searchd.pid
}
Не забываем прописать настройки MySQL.

Далее создаем папку для базы индекса и устанавливаем права на запись:
$ mkdir -p /usr/local/SphinxIndex
$ chmod -R 777 /usr/local/SphinxIndex/


Запускаем индексацию:
$ /usr/local/bin/indexer --all


Запускаем демон:
$ /usr/local/bin/searchd


Далее останется лишь прописать сфинкс в крон:
$ vi /etc/crontab


Добавляем:
0 */3 * * * /usr/local/bin/indexer --all --rotate

Это значит, что мы будем запускать индексацию каждые 3 часа.

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

$ service apache2 restart
$ service nginx restart
$ service memcached restart


На сим всё должно работать.
Проверяем в phpinfo()
В хеадере eAccelerator:
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright © 1998-2008 Zend Technologies
with eAccelerator v0.9.5.3, Copyright © 2004-2006 eAccelerator, by eAccelerator


И ниже
memcache support enabled


Проверяем работоспособность портов (PID и DEVICE конечно же могут быть другими):
lsof -i

Мы должны видеть ниже строки:
apache2     948 www-data    3u  IPv4  47935       TCP *:81 (LISTEN)
memcached  3096   nobody    3u  IPv4 165608       TCP localhost:11211 (LISTEN)
nginx     19605 www-data    6u  IPv4  62263       TCP *:www (LISTEN)

Если таковые имеются, то сервер работает как задумывалось.

Буду постепенно обновлять и пополнять статью.
Задавайте вопросы, возможно я мог что-то упустить.

161 комментарий

avatar
Классная статья. Спасибо за столь содержательное объяснение!

P.S. Возьми часть под кат.
avatar
забыл кат, спс
avatar
Большущее спасибо за статью! Как раз хотел создать топик с просьбой описать установку всех этих приблуд :) Добавил в избранное.
avatar
Все понимаю. Но зачем апач? По тестам на высоконагруженных сайтах (400к-600к в сутки) apache2+nginx+php ничем не лучше nginx+php-cgi. А если нет разницы, зачем держать два http-севера?
avatar
Погуглите… По всем тестам nginx в связке с апач работает быстрее. Так уж сложилось :)
avatar
Добавил конфиг для настройки gzip сжатия для nginx с комментариями.
avatar
Для gzip советую следующее:
gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_min_length 1100;
gzip_comp_level 9;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_buffers 16 8k;
# Disable gzip for certain browsers.
gzip_disable “MSIE [1-6].(?!.*SV1)”;
avatar
gzip_disable MSIE не обязательно.
gzip_min_length 1100; не обязательно.
gzip_http_version 1.0; ето да.
avatar
1) Почему? nginx сам отделяет мух от котлет? Т.е. если ИЕ версии 6 и ниже, то gzip атоматически отключается?
2) Не обязательно, но рекомендуется, т.к. не зачем кэшировать слишком маленькие файлы и загружать процессор по-пусту.
3) Эт да. =)))
avatar
1) Я не беру в расчёт Осла6 впринципе. Кому надо, тот путь берёт ^_^
2) Я могу себе позволить сжимать всё ;) Но этот параметр я давно добавил. Спасиб.
3) Да.
avatar
не кэшировать а сжимать — опечаталась.
avatar
И вообще, девушка, как вы докатились до такой жизни?)))))))
avatar
Экономия нужна, экономия важна. :)
Я работаю программистом 1С, закончила физмат. Так что как-то так.
avatar
Вам плюсуют в карму за фотку, грамотный ход))
И в чём же экономия проявляется? :)
avatar
Плюсов после размещения фотки пока не заметила. Минусы и плюсы были до того. :)

Экономия заключается в том, что не нужно нанимать сисадмина для настройки сервера.
avatar
Тогда маякну: ФОТКА В ПРОФИЛЕ!!!11111111111

Ясно, вопросов больше не имею :)
Просто не так уж и много девушек, готовых красноглазить на фряхе ^_^
avatar
У меня Дебиан. :)
avatar
А кто говорил про фрю? Эъ… старею…

Ну, суть не особо меняет ^_^
avatar
Девушек, которые в *нуксах и *никсах копаются надо поголовно в красную книгу заносить :-)
avatar
Да, и ещё она симпотичная хД

Таки да.
avatar
Я честно говоря плюсанул до размещения фотки. Просто удивился, что девушка пишет по делу, но в рейтинге минус (был).

Вам я когда-то также рейтинг прибавлял (это чтобы ни у кого не возникало иллюзий, что я девушек автоматически поддерживаю) ;-)
avatar
И вообще пишите за что минусуете. Я понимаю вам ненравится может быть мой код, но тут я уж хз))
avatar
По-тихой превращаемся в хабр. =)
avatar
Как говорит народная мудрость, «В тихом омуте черти водятся» =)
avatar
Либо это уже личная неприязнь за дерзкие комменты, либо народ боится топиков, где много кода :))

За материал спасибо! :-)
avatar
Голосую за первое)) И да, готов обосрать то что должно быть обосрано по факту и никогда не отказываюсь от своих позиций.
Только одно дело высказать свою позицию и обосновать её, а другое — тихо буркать за спиной, люто, бешено срать кирпичами и еже в карму, повышая уровень ЧСВ.

За материал пожалуйста)) Пишите если возникнут вопросы.
avatar
А если стоит Direct Admin — как быть (в плане связка ngnix+apache)!? :)
avatar
В чём конкретная проблема? Незнаю как директ админ, но многие нормальные панели имеют свой сервис.
avatar
Ну я слышал, что если поставить нгникс, то в панели перестает отображаться статистика (например по трафику для аккаунта и так далее) ввиду того, что трафик уже не идет через апач. Типо того )

Просто в конце месяца будем обновлять ПО сервера и хотелось бы найти оптимальное решение )
avatar
Apache стоит на вашем сервере. Наверняка в конфигах панели есть константа порта апача, т.к. многие апач вешают не только на 80 порт. Ну вот и пропишите там тот порт, куда вы повесили апач и ловите профит.
avatar
Спасибо. :) Так получается, что нгникс должен висеть на 80, а апач на 81?! А если оба на 80м будут, то что будет!? :)
avatar
Не обязательно 81, можете вешать и на 8080, хоть на 8081, хоть на 8082.
А если оба будут висеть на одном, то будет работать первый сервис, запущенный на сервере, второй выдаст ошибку что порт занят и пошлёт вас далеко и надолго. По-моему это логично…
avatar
Согласен ) Спасибо за инфо )
avatar
Я про апач, а фронтенд должен в любом случае висеть на 80. Нгинкс ставится на фронтенд, значит на 80 порт.
avatar
Добавил информацию для проверки открытых портов.

зы. Sphinx нужен?
avatar
Да, если не затруднит.
Заранее спасибо :)
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
avatar
Итак, пользователь skpnm забанен за регу виртуалов, накрутку и не норматив. MaxSvargal, тебе советую не употреблять на этом сайте не нормативную лексику, устал уже за тобой их удалять, дальше просто будет запрет на комменты.
Топик убивать не нужно, многим пригодится
  • ort
  • 0
avatar
Как я ещё могу отреагировать на неадекватную «критику»? Хотя мог бы и промолчать, но я не такой ^_^
Да и правда же было весело… Нет, ну правда…

зы. снеси из базы чтоль посты, а то… ну сам видишь.
avatar
В репозитарии есть пакет sphinx, но версия 0.6. С ней будет поиск работать, как думаете? :)
avatar
Ставьте последнюю. Я считаю что не так уж и сложно скомпилировать один пакет.
avatar
Ничего сложного. Вопрос — как потом обновляться? ;)
avatar
ручками, ручками. Посмотри как выходят новые версии. До обновления тебе ещё около года жить с этой версией.

зы. и вообще…
avatar
./configure && make && sudo make install XD
avatar
А можешь написать как мемкеш на сокет повесить? Это же вроде как еще быстрее должно работать :-)
  • Carw
  • 0
avatar
Проверяем работоспособность портов (PID и DEVICE конечно же могут быть другими):
lsof -i


Мы должны видеть ниже строки:
memcached  3096   nobody    3u  IPv4 165608       TCP localhost:11211 (LISTEN)
avatar
или вы про memcache -s socket?
avatar
Если так, то по моим данным через локальный сокет работает медленнее. Но я ещё поищу информацию для подтверждения…
avatar
Да, именно через локальный сокет. Я тестировал как-то и выигрыш был, правда не помню точно на сколько большой. Предлагаю протестить это дело и принять на пользование, если есть польза. :-)
avatar
Скажите, а почему в статье не написано что демон searchd нужно ставить на автозапуск? kruft в своём мануале говорил что надо.
avatar
Пара небольших замечаний:
1. sites-enabled в nginx, убрать html из обрабатываемых типов
^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|flv|mp3)$

2. Sphinx на голом сервере может и не собраться необходима поддержка libmysqlclient16-dev как-то так.

А так использовал удобно copy&paste. Я думаю на основе материала можно даже bash-скрипт написать.
  • Sky
  • 0
avatar
1 — это да.
2 — да, были большие проблемы и у меня — пришлось вручную указывать путь к mysql для sphinx, а потом уже собирать…
avatar
Далее останется лишь прописать сфинкс в крон:
$ vi /etc/crontab
Добавляем:
0 */3 * * * /usr/local/bin/indexer --all --rotate
Это значит, что мы будем запускать индексацию каждые 3 часа.

Прописал все, но почему то индексации не происходит :(
При ручном все индексируется отлично… а вот кроном — нет. Кто в курсе в чем проблема?
  • Mmka
  • 0
avatar
Забыл прописать root — у меня немного другая схема для crona
avatar
есть один минус, с конфигами приведёнными тут, у меня незаработали .htaccess
на всякий случай у меня на сайте расписано все более подробно.
avatar
Вот обьясните мне, обязательно так устанавливать? я имею ввиду
— Apache 2
— PHP 5
— MySQL 5
— nginx
— memcached
— eAcellerator
— Sphinx
если просто установить связку apache+php+mysql ну и Sphinx еще, это намного хуже будет?
avatar
И еще тут же вопросик — при варианте настройки как у вас, сколько сервер кушает ресурсов?
avatar
Здравствуйте, не могли бы вы описать в рамках данного мануала установку redis
pyha.ru/wiki/index.php?title=Redis:index
code.google.com/p/redis/downloads/list
заранее благодарен
avatar
спс за статью, хорошая. Только Вы упустили немного. memcached то установили, а php5-memcache нет. Добавьте.
  • b43
  • 0
avatar
Спасибо за мануал. Очень помог при развертывании всего с нуля.
avatar
Статья отличная.
Еще бы сравнить с тем, что у меня сейчас имеется.
windows, nginx, apache, eAccelerator, php и mysql.
Не помешало бы добавить установку и настройку iptables.
avatar
Поправьте в «Редактируем конфиг виртуалхоста апача» 12 строчку (у вас стоит символ "〉" а не ">")
avatar
у меня ваще ставиться на VPS не хочет! пишет постоянно какие-либо ошибки!
avatar
1) Если ./configure sphinx'a ругается на mysql-devel, выполняем в баше:
apt-get install libmysql++-dev libmysqlclient15-dev

2) Нужно немного подправить конфиг сфинкса:
* сменить address на listen
* сменить prefix_topic_comment на prefix_comment
* да, и если префиксы таблиц меняли — не забудьте на свои поменять )
avatar
может быть порекомендуете какую связку брать, чтобы побыстрее было? Может просто xcache+ngix+mysql или как здесь — самое то?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.