Пред. тема | След. тема |
Автор | Сообщение |
---|---|
Участник форума Сообщения:36 | Устанавливаем LAMP $ sudo apt-get update $ sudo apt-get install apache2 php5 php5-mysql mysql-server-5.0 Устанавливаем nginx. Сам компилил из исходников, но лучше взять deb пакет здесь: http://packages.debi...table/web/nginx Тянем пакет, устанавливаем (ссылку берём выше для своей архитектуры, у меня 64 бит). $ wget http://ftp.de.debian....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/*; } #Разрешить сжатие для всех проксированных запросов 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.eacceler...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.sphinxsea...-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) |
27 янв 2010, 13:14 | |
Страница 1 из 1 | [ 1 сообщение ] |
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы можете добавлять вложения |