Adding configs as a first-class-citizen of the zamboni file-space... not as a dirty submodule... see ya remora.

This commit is contained in:
Dave Dash 2010-05-03 17:26:28 -07:00
Родитель f8276b6feb
Коммит c223b31689
5 изменённых файлов: 410 добавлений и 0 удалений

99
configs/init.d/celeryd Normal file
Просмотреть файл

@ -0,0 +1,99 @@
#!/bin/bash
#
# chkconfig: 35 68 38
# description: Starts celeryd
#
# @author Jeremy Orem <oremj@mozilla.com>
# @author Dave Dash <dd@mozilla.com>
#
DJANGO_PROJECT_DIR=/data/amo_python/www/preview/zamboni
VIRTUAL_ENV="/data/virtualenvs/zamboni"
CELERYD_PID_FILE="/var/run/celeryd-preview.pid"
CELERYD_LOG_FILE="/var/log/celeryd-preview.log"
CELERYD_LOG_LEVEL="INFO"
CELERYD="$DJANGO_PROJECT_DIR/manage.py"
CELERYD_OPTS="-f $CELERYD_LOG_FILE"
PROG_NAME="celeryd"
# I'm running this as apache. No reason.
user="apache"
CELERYD_OPTS="-f $CELERYD_LOG_FILE -l $CELERYD_LOG_LEVEL"
# Source function library.
. /etc/rc.d/init.d/functions
start() {
if [ -r $CELERYD_PID_FILE ]; then
oldpid=`cat $CELERYD_PID_FILE`
checkpid $oldpid
if [ "$?" -eq "0" ]; then
echo "$PROG_NAME: Already running in $oldpid"
exit 1
fi
fi
echo -n $"Starting $PROG_NAME: "
sudo -u $user $VIRTUAL_ENV/bin/python $CELERYD $PROG_NAME $CELERYD_OPTS &
echo $! > $CELERYD_PID_FILE
RETVAL=$?
if [ "$RETVAL" -eq "0" ]; then
echo_success
else
echo_failure
fi
return $RETVAL
}
stop() {
echo -n $"Stopping $PROG_NAME: "
killproc -p $CELERYD_PID_FILE
RETVAL=$?
rm -f $CELERYD_PID_FILE
if [ "$RETVAL" -eq "0" ]; then
echo_success
else
echo_failure
fi
return $RETVAL
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p $CELERYD_PID_FILE
exit $?
;;
restart)
stop
start
;;
*)
echo $"Usage: celeryd {start|stop|restart}"
exit 1
esac
echo ""
exit 0

Просмотреть файл

@ -0,0 +1,25 @@
import os
import sys
SETTINGS_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), \
os.path.pardir, os.path.pardir, "site/app/config/migrations"))
sys.path.append(SETTINGS_DIR)
import settings
s = settings.params
### IT Change this to connect to the slave that sphinx reads from
MYSQL_PASS = s['password']
MYSQL_USER = s['user']
MYSQL_HOST = s['host']
MYSQL_NAME = s['database']
### /IT
CATALOG_PATH = '/opt/local/data/sphinx'
LOG_PATH = '/opt/local/log/searchd'
ETC_PATH = '/opt/local/etc'
LISTEN_PORT = 3312
MYSQL_LISTEN_PORT = 3307
MYSQL_LISTEN_HOST = 'localhost'

Просмотреть файл

@ -0,0 +1,31 @@
import os
import sys
SETTINGS_DIR = os.path.realpath(
os.path.join(os.path.dirname(__file__), os.path.sep.join(('..',)*2)))
sys.path.append(SETTINGS_DIR)
sys.path.append(os.path.join(SETTINGS_DIR,'lib'))
import settings_local as settings
s = settings.DATABASES['default']
MYSQL_PASS = s['PASSWORD']
MYSQL_USER = s['USER']
MYSQL_HOST = s.get('HOST', 'localhost')
MYSQL_NAME = s['NAME']
if MYSQL_HOST.endswith('.sock'):
MYSQL_HOST = 'localhost'
if os.environ.get('DJANGO_ENVIRONMENT') == 'test':
MYSQL_NAME = 'test_' + MYSQL_NAME
BASE_PATH = '/tmp'
CATALOG_PATH = BASE_PATH + '/data/sphinx'
LOG_PATH = BASE_PATH + '/log/searchd'
ETC_PATH = BASE_PATH + '/etc'
LISTEN_PORT = 3312
MYSQL_LISTEN_PORT = 3307
MYSQL_LISTEN_HOST = 'localhost'

249
configs/sphinx/sphinx.conf Executable file
Просмотреть файл

@ -0,0 +1,249 @@
#!/usr/bin/env python
try:
from localsettings import *
except ImportError:
from localsettings_django import *
config = """
source addons
{
type = mysql
sql_host = %s
sql_user = %s
sql_pass = %s
sql_db = %s
sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=OFF
sql_query = \
SELECT \
id, app, addon_id, type, status as addon_status, locale, \
locale_ord, averagerating, weeklydownloads, totaldownloads, \
inactive, guid_ord,\
name, name AS name_ord, \
homepage, description, developercomments, \
( \
SELECT 1 FROM features f \
WHERE f.addon_id=t.addon_id \
AND f.start <= NOW() \
AND f.end > NOW() \
AND (f.locale IS NULL OR t.locale = f.locale) \
AND t.app = f.application_id \
AND t.type != 9 \
LIMIT 1 \
) AS recommended, \
IF (status=6, 1, \
( \
SELECT count(*) \
FROM versions v, files f \
WHERE f.version_id=v.id AND addon_id=t.addon_id AND f.status>0\
) \
) AS num_files, \
(\
SELECT count(DISTINCT av.application_id) \
FROM addons a, versions v, applications_versions av \
WHERE a.id=t.addon_id AND v.addon_id=a.id AND av.version_id=v.id \
) AS num_apps, \
( \
SELECT GROUP_CONCAT(version) \
FROM versions WHERE addon_id = t.addon_id \
) AS addon_versions, \
( \
SELECT GROUP_CONCAT(nickname) \
FROM addons_users au, users u \
WHERE addon_id=t.addon_id AND au.user_id = u.id AND listed = 1 \
) AS authors, \
( \
SELECT GROUP_CONCAT(tag_text) \
FROM users_tags_addons, tags \
WHERE tags.id = tag_id \
AND addon_id = t.addon_id \
) AS tags, \
( \
SELECT IF(type=4,9999999999999, max(version_int)) \
FROM versions s_v, applications_versions s_av, appversions max \
WHERE s_v.addon_id = t.addon_id \
AND s_av.application_id = t.app \
AND s_av.version_id = s_v.id AND s_av.max = max.id \
) AS max_ver, \
( \
SELECT IF(type=4,0, min(version_int)) \
FROM versions s_v, applications_versions s_av, appversions min \
WHERE s_v.addon_id = t.addon_id \
AND s_av.application_id = t.app \
AND s_av.version_id = s_v.id \
AND s_av.min = min.id \
) AS min_ver, \
created, \
modified \
FROM \
( \
SELECT DISTINCT \
(name.autoid*100+IFNULL(av.application_id,0)) AS id, \
IF(a.addontype_id IN (4,9), 99, av.application_id) AS app, \
a.id AS addon_id, \
a.addontype_id AS type, \
a.status, \
CRC32(a.guid) AS guid_ord, \
name.locale, \
CRC32(name.locale) AS locale_ord, \
a.bayesianrating AS averagerating, \
a.weeklydownloads, \
a.totaldownloads, \
a.inactive, \
LTRIM(name.localized_string) AS name, \
homepage.localized_string AS homepage, \
description.localized_string AS description, \
summary.localized_string AS summary, \
developercomments.localized_string AS developercomments, \
UNIX_TIMESTAMP(a.created) AS created, \
UNIX_TIMESTAMP(a.last_updated) AS modified \
FROM \
( \
translations name, \
addons a \
LEFT JOIN versions v ON v.addon_id = a.id \
LEFT JOIN applications_versions av ON av.version_id = v.id \
) \
LEFT JOIN translations homepage \
ON a.homepage = homepage.id \
AND homepage.locale = name.locale \
LEFT JOIN translations description \
ON a.description = description.id \
AND description.locale = name.locale \
LEFT JOIN translations summary \
ON a.summary = summary.id \
AND summary.locale = name.locale \
LEFT JOIN translations developercomments \
ON a.developercomments = developercomments.id \
AND developercomments.locale = name.locale \
WHERE \
a.name = name.id \
AND name.localized_string IS NOT NULL \
AND \
( \
description.localized_string IS NOT NULL \
OR summary.localized_string IS NOT NULL \
OR defaultlocale = name.locale \
) \
) t
sql_attr_uint = addon_id
sql_attr_uint = app
sql_attr_uint = num_files
sql_attr_uint = num_apps
sql_attr_str2ordinal = name_ord
sql_attr_uint = guid_ord
sql_attr_uint = type
sql_attr_uint = addon_status
sql_attr_uint = weeklydownloads
sql_attr_uint = totaldownloads
sql_attr_uint = locale_ord
sql_attr_bigint = max_ver
sql_attr_bigint = min_ver
sql_attr_str2ordinal = locale
sql_attr_float = averagerating
sql_attr_bool = inactive
sql_attr_bool = recommended
sql_attr_str2ordinal = homepage
sql_attr_timestamp = created
sql_attr_timestamp = modified
sql_attr_multi = uint category from query; \
SELECT \
(name.autoid*100+IFNULL(av.application_id,0)) id, \
ac.category_id AS category \
FROM \
(translations name, addons a, addons_categories ac) \
LEFT JOIN versions v ON v.addon_id = a.id \
LEFT JOIN applications_versions av ON av.version_id = v.id \
WHERE \
a.name = name.id AND \
a.id = ac.addon_id
sql_attr_multi = uint category_featured from query; \
SELECT \
(name.autoid*100+IFNULL(av.application_id,0)) id, \
ac.category_id AS category \
FROM \
(translations name, addons a, addons_categories ac) \
LEFT JOIN versions v ON v.addon_id = a.id \
LEFT JOIN applications_versions av ON av.version_id = v.id \
WHERE \
ac.feature = 1 AND \
a.name = name.id AND \
a.id = ac.addon_id
sql_attr_multi = uint tag from query; \
SELECT DISTINCT\
(name.autoid*100+IFNULL(av.application_id,0)) id, \
t.tag_id AS tag \
FROM \
(translations name, addons a, users_tags_addons t) \
LEFT JOIN versions v ON v.addon_id = a.id \
LEFT JOIN applications_versions av ON av.version_id = v.id \
WHERE \
a.name = name.id AND \
a.id = t.addon_id
sql_attr_multi = uint platform from query; \
SELECT \
(name.autoid*100+IFNULL(av.application_id,0)) id, \
IFNULL(platform_id,1) AS platform \
FROM \
(translations name, addons a) \
LEFT JOIN versions v ON v.addon_id = a.id \
LEFT JOIN applications_versions av ON av.version_id = v.id \
LEFT JOIN files f ON f.version_id = v.id \
WHERE \
a.name = name.id
sql_query_info = SELECT a.* \
FROM \
translations name,\
addons a\
LEFT JOIN versions v ON v.addon_id = a.id\
LEFT JOIN applications_versions av ON av.version_id = v.id\
WHERE \
a.name = name.id AND \
(name.autoid*100+IFNULL(av.application_id,0)) = $id
}
""" % (MYSQL_HOST, MYSQL_USER, MYSQL_PASS, MYSQL_NAME,)
config = config + """
index addons
{
source = addons
path = %s/catalog
# morphology = stem_en
# symlink sphinx-wordforms.txt to this location:
wordforms = %s/sphinx-wordforms.txt
# Firebug will get indexed as Firebug, Firebu, Fireb, Fire, Fir - equally
# We can enable star if necessary.
min_infix_len = 3
infix_fields = name
charset_type = utf-8
charset_table = 0..9,U+41..U+5a->U+61..U+7a, U+61..U+7a, U+aa, U+b5, U+ba, U+c0..U+d6->U+e0..U+f6, U+d8..U+de->U+f8..U+fe, U+df..U+f6, U+f8..U+ff, U+100..U+12f/2, U+130->U+69, U+131, U+132..U+137/2, U+138, U+139..U+148/2, U+149, U+14a..U+177/2, U+178->U+ff, U+179..U+17e/2, U+17f..U+180, U+181->U+253, U+182..U+185/2, U+186->U+254, U+187..U+188/2, U+189..U+18a->U+256..U+257, U+18b..U+18c/2, U+18d, U+18e->U+1dd, U+18f->U+259, U+190->U+25b, U+191..U+192/2, U+193->U+260, U+194->U+263, U+195, U+196->U+269, U+197->U+268, U+198..U+199/2, U+19a..U+19b, U+19c->U+26f, U+19d->U+272, U+19e, U+19f->U+275, U+1a0..U+1a5/2, U+1a6->U+280, U+1a7..U+1a8/2, U+1a9->U+283, U+1aa..U+1ab, U+1ac..U+1ad/2, U+1ae->U+288, U+1af..U+1b0/2, U+1b1..U+1b2->U+28a..U+28b, U+1b3..U+1b6/2, U+1b7->U+292, U+1b8..U+1b9/2, U+1ba..U+1bb, U+1bc..U+1bd/2, U+1be..U+1c3, U+1c4->U+1c6, U+1c5..U+1c6/2, U+1c7->U+1c9, U+1c8..U+1c9/2, U+1ca->U+1cc, U+1cb..U+1dc/2, U+1dd, U+1de..U+1ef/2, U+1f0, U+1f1->U+1f3, U+1f2..U+1f5/2, U+1f6->U+195, U+1f7->U+1bf, U+1f8..U+21f/2, U+220->U+19e, U+221, U+222..U+233/2, U+234..U+23a, U+23b..U+23c/2, U+23d->U+19a, U+23e..U+240, U+241->U+294, U+250..U+2c1, U+2c6..U+2d1, U+2e0..U+2e4, U+2ee, U+37a, U+386..U+389->U+3ac..U+3af, U+38c..U+38e->U+3cc..U+3ce, U+390, U+391..U+3a1->U+3b1..U+3c1, U+3a3..U+3ab->U+3c3..U+3cb, U+3ac..U+3ce, U+3d0..U+3d7, U+3d8..U+3ef/2, U+3f0..U+3f3, U+3f4->U+3b8, U+3f5, U+3f7..U+3f8/2, U+3f9->U+3f2, U+3fa..U+3fb/2, U+3fc..U+3ff, U+400..U+40f->U+450..U+45f, U+410..U+42f->U+430..U+44f, U+430..U+45f, U+460..U+481/2, U+48a..U+4bf/2, U+4c0, U+4c1..U+4ce/2, U+4d0..U+4f9/2, U+500..U+50f/2, U+531..U+556->U+561..U+586, U+559, U+561..U+587, U+5d0..U+5ea, U+5f0..U+5f2, U+621..U+63a, U+640..U+64a, U+66e..U+66f, U+671..U+6d3, U+6d5, U+6e5..U+6e6, U+6ee..U+6ef, U+6fa..U+6fc, U+6ff, U+e01..U+e30, U+e32..U+e33, U+e40..U+e46, U+e81..U+e82, U+e84, U+e87..U+e88, U+e8a, U+e8d, U+e94..U+e97, U+e99..U+e9f, U+ea1..U+ea3, U+ea5, U+ea7, U+eaa..U+eab, U+ead..U+eb0, U+eb2..U+eb3, U+ebd, U+ec0..U+ec4, U+ec6, U+edc..U+edd, U+1000..U+1021, U+1023..U+1027, U+1029..U+102a, U+1050..U+1055, U+10a0..U+10c5->U+2d00..U+2d25, U+10d0..U+10fa, U+10fc, U+2d00..U+2d25, U+1d00..U+1dbf, U+1e00..U+1e95/2, U+1e96..U+1e9b, U+1ea0..U+1ef9/2, U+3005..U+3006, U+3031..U+3035, U+303b..U+303c, U+3041..U+3096, U+309d..U+309f, U+30a1..U+30fa, U+30fc..U+30ff, U+31f0..U+31ff
ngram_chars = U+3400..U+4DB5, U+4E00..U+9FA5, U+20000..U+2A6D6
ngram_len = 1
}
""" % (CATALOG_PATH, ETC_PATH)
config = config + """
searchd
{
listen = %d
listen = %s:%d:mysql41
log = %s/searchd.log
query_log = %s/query.log
pid_file = %s/searchd.pid
}
""" % ((LISTEN_PORT, MYSQL_LISTEN_HOST, MYSQL_LISTEN_PORT) + (LOG_PATH,)*3)
print config

Просмотреть файл

@ -0,0 +1,6 @@
fire bug > firebug
stumble upon > stumbleupon
stumbleupons > stumbleupon
ad block > adblock
fire fox > firefox