+1.98
Рейтинг
9.60
Сила
  • avatar dsg
  • 0
все так. На мемкеш надо выставлять 256-512мб, если сайт хоть как то посещаемый
  • avatar dsg
  • 0
Мы, видимо, не поняли друг друга. Этот файл есть в том же архиве.
В apache кстати тоже надо будет настроить странички ошибок, раз он у вас на бэкэнде.
Как это настроить?
  • avatar dsg
  • 0
сами страницы есть в том архиве для nginx, а как настроить переадресацию на них с apach'a если сам сайт не отдаст 404 или еще какую ошибку?
  • avatar dsg
  • 0
может выложите аналог того, что Вы выложили для nginx? Для тех, кто не очень шарит)
  • avatar dsg
  • 0
пробовал, крон заработал, сфинкс нет. В общем, сношу всю систему и переустанавливаю по новой. Спасибо за Ваши топики, очень пригождаются)
  • avatar dsg
  • 0
одну проблему нашел: cron тоже перестал запускаться и при запуске файла notify.php через консоль вижу, что ругается на файл /plugins/aceadminpanel/config/config.localhost.php — Undefaned index: SERVER NAME
Копаю дальше)
  • avatar dsg
  • 0
А вы не знаете, это может быть как-то связано с правами, от которых LS слушает порт 9312?

Я уже просто не знаю, что еще посмотреть. У меня сейчас стоит чистый debian 6 с апачем, поиск через консоль так же работает, но сайт ничего не выводит…
  • avatar dsg
  • 0
а что, пингатор здорово грузит сайт?
  • avatar dsg
  • 0
снес все, что было: nginx, fast-cgi, php5-fpm, эффекта 0, все равно на сайте поиск ничего не выводит
  • avatar dsg
  • 0
а ошибка в логах nginx (которую выше указал) появляется при его перезапуске
  • avatar dsg
  • 0
поставил 32М, ничего не изменилось)
  • avatar dsg
  • 0
в какую сторону? или может вообще его убрать?
  • avatar dsg
  • 0
точно пусто. В логах сфинкса данные о успешном запуске/перезапуске. В лог запросов ничего не записывается. Лог ошибок nginx полон таких записей:
2013/03/25 18:56:39 [warn] 1893#0: *1340 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000016, client: 89.109.46.164, server: ХХ.ХХ.ХХ.ХХХ, request: "POST /manager/ispmgr HTTP/1.1", host: "ХХ.ХХ.ХХ.ХХХ", referrer: "https://ХХ.ХХ.ХХ.ХХХ/manager/ispmgr?func=file.edit&elid=sphinx.conf&plid=etc%2Fsphinxsearch&operafake=911"

и я понимаю, что это про сфинкс, но ни при поиске ни при перезапуске демона такая строка не появляется и откуда она берется никак не пойму.

Меня, в этой связи, сильно смущает — конфиг nginx. Он поставился сам и я его подкорректировал в сторону работы с php5-fpm, но у меня нет директивы site-aviable или site-enable, т.е. все сразу в nginx.config прописалось. Может он глючный (я половину дефолтных команд не очень понимаю) и перенаправляет куда-нибудь? Посмотрите, пожалуйста:

user www-data;worker_processes  1;

timer_resolution 100ms;
worker_rlimit_nofile 8192;
worker_priority -5; #Увеличитваем приоритет

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


events {
    worker_connections  1024;
}


http {
    
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    # Включаем сжатие
gzip  on;
#Степень сжатия (рекомендую 4-5, больше смысла не имеет нагрузка на ЦПУ растет, а файлы не значительно уменьшаются)
gzip_comp_level     5; 
# Разрешаем выдавать в ответе строку заголовка "Vary: Accept-Encoding" (Google Page Speed будет доволен)
gzip_vary on;
# Запрещаем проверку наличие готового сжатого файла. (в правилах разрешаем только там где нужно, если везде проверять дополнительные действия будут в системе делаться чтобы проверить существование таких файлов)
gzip_static off;
# Типы файлов которые мы будем сжимать
gzip_types text/css text/plain application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
# Указываем минимальную длина ответа, при которой модуль будет сжимать, в байтах (сжимаем файлы больше киллобайта, меньше смысла не имеет слабо ощутимо сжатие будет)
gzip_min_length  1024;
# Запрещаем сжатие ответа методом gzip для IE4-6 (можно записать регулярным выражением, но по словам автора nginx так быстрее будет работать)
gzip_disable     "msie6";
# Разрешить сжатие для всех проксированных запросов 
gzip_proxied     any;


    include /etc/nginx/conf.d/*.conf;
	include /usr/local/ispmgr/etc/nginx.domain;
	client_max_body_size 16M;
	log_format isp '$bytes_sent $request_length';
	server {
		server_name site.ru www.site.ru;
		listen XX.XX.XX.XXX;
                server_tokens off;
		disable_symlinks if_not_owner from=$root_path/$subdomain;
                index index.php;
		set $root_path /var/www/site/data/www/site.ru;
                root /var/www/site/data/www/site.ru;
    
		set $subdomain "";
		if ($host ~* ^((.*).site.ru)$) {
			set $subdomain $2;
		}        
               
                               
		location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
			root $root_path/$subdomain;
			access_log /var/www/nginx-logs/site isp;
			error_page 404 = @fallback;
            
          
               
		}
		location / {
			proxy_pass http://XX.XX.XX.XXX:81;
			proxy_redirect http://XX.XX.XX.XXX:81/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
                        try_files $uri $uri/ /index.php?q=$uri&$args;
                  
		}
                location /templates/cache/synio/ {
	                gzip_static on;
                }
                location ~ \.php {
                       fastcgi_pass  unix:/tmp/fastcgi.socket;
                       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                       include fastcgi_params;
                }

                location ~ \.(tpl|xml|log)$ {
                       deny all;
                }  
                location /uploads/ {
		       location ~ .*\.(php)?$
		       {
			    deny all;
		        }
	        }  
                 location /bannerbank/banner/ {
		       location ~ .*\.(php)?$
		       {
			    deny all;
		        }
	        }            
		location ~* ^/(webstat|awstats|webmail|myadmin|pgadmin)/ {
			proxy_pass http://XX.XX.XX.XXX:81;
			proxy_redirect http://XX.XX.XX.XXX:81/ /;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
		}
                
		location @fallback {
			proxy_pass http://XX.XX.XX.XXX:81;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
			proxy_set_header X-Real-IP $remote_addr;
		} 
               
                
		include /usr/local/ispmgr/etc/nginx.inc;
               
	}
  • avatar dsg
  • 0
не, отдельно port=9312 не помогло
  • avatar dsg
  • 0
ввел команду, searchd действительно слушает 9312

У меня стоит сейчас 2.0.6, но точно помню, что в 0.8.х, который раньше как-то ставил, я убирал директиву порт, т.к. с ней не работало. Ее снова вернули в обиход?
  • avatar dsg
  • 0
## Конфигурационный файл Sphinx-а для индексации Живой улицы

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

# Источник-родитель для всех остальных источников. Здесь указываются параметры доступа 
# к базе данных сайта
source lsParentSource
{
        type            = mysql
        sql_host        = localhost
        sql_user        = user
        sql_pass        = pass
        sql_db          = 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_comment \
                        WHERE target_type='topic' AND comment_id>=$start AND comment_id<=$end

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

        sql_attr_bool           = comment_delete
        sql_attr_timestamp      = comment_date
}

# Источник компаний
source companiesSource : lsParentSource
{
        sql_query               = \
                        SELECT company_id, company_name, company_name_legal, company_description, UNIX_TIMESTAMP(company_date_add) as company_date_add, company_active, company_city \
                        FROM prefix_company \
                       WHERE company_id>=$start AND company_id<=$end

        sql_query_range         = SELECT MIN(company_id),MAX(company_id) FROM prefix_company
        sql_range_step          = 1000

        sql_attr_uint = company_active
        sql_attr_timestamp      = company_date_add
		sql_ranged_throttle     = 0
}

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

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
}

# Индекс компаний
index companiesIndex
{
        source                  = companiesSource
        path                    = /usr/local/SphinxIndex/companiesSource/

        docinfo                 = extern

        mlock                   = 0

        morphology = stem_enru

        charset_type            = utf-8
        
        # Из данных источника HTML-код нужно вырезать
        html_strip                              = 1
        html_remove_elements = style, script, code
}

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


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

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

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


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

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

        # Время в секундах, которое ждет демон при обмене данными с клиентом. По исчерпании происходит разрыв коннекта
        read_timeout            = 5
        client_timeout   = 300
        # Максимальное количество одновременно-обрабатываемых запросов. 0 означает дофига, а точнее без ограничения
        max_children            = 100

        # Файл, в который сохраняется PID-процесса при запуске
        pid_file                        = /var/run/searchd.pid
       workers	= threads
       compat_sphinxql_magics = 0
     
}


/**
 * Конфиг модуля "search"
 */
$config['entity_prefix']  = '';
$config['sphinx']['host'] = 'localhost';
$config['sphinx']['port'] = '9312';

return $config;

Ровно с этими конфигами все работало раньше, т.е. они 100% рабочие, но вот почему LS не получает результата поиска — вопрос.
  • avatar dsg
  • 0
справился. Ищет, выдает все верно из консоли, а вот в LS не выдает
  • avatar dsg
  • 0
ой, а можете пример команды в консоли написать, а то с английским совсем плохо)
  • avatar dsg
  • 0
такая же ерунда — поставил на сервер nginx+php-fpm+fast-cgi и сфинкс умолк. Все работает, индексы создаются верно, все порты работают (даже через сокет пробовал), но сайте пустота — ничего не выдает и в логи запросов ничего не пишет и в логе searchd тоже пусто
  • avatar dsg
  • 0
После этих изменений все прекрасно работает.