Jump to content

Toolserver/For users/Ru

From Meta, a Wikimedia project coordination wiki

Здесь приведена информация для пользователей zedler.

Ваш аккаунт

[edit]

У вас есть учётная запись. Вы можете зайте по ssh на сервере login-services.zedler.knams.wikimedia.org (или or tools.wikimedia.org — краткое имя). Сейчас его IP-адрес — 145.97.39.142.

Для всех аккаунтов задано время истечения в будущем (выводится при каждом входе). Используемые аккаунты нужно обновить в соответствии с правилами (см. Toolserver).

Применяется аутентификация с использованием публичных ключей. Чтобы добавить новый SSH-ключ, измените ~/.ssh/authorized_keys и допишите его туда на новой строке (формат OpenSSH, только ключи второй версии SSH).

Если у вас возникли проблемы, напишите на zedler-admins@wikimedia.org. В качестве альтернативы, можно воспользоваться списком рассылки toolserver-l или же спросить в IRC-канале #wikimedia-toolserver.

База данных

[edit]

У вас есть база с названием «u_<имяпользователя>». Пароль к ней записан в вашем файле ~/.my.cnf. К ней имеете доступ на запись только вы, но таблицы, названия которых начинаются с «pub_», может прочитать любой другой пользователь. Имя SQL-сервера — sql (но не localhost)

Для большинства открытых вики есть реплицируемые базы данных. Их названия имеют вид <язык><проект>_p, где <язык> — это язык (например, «ru», «en»), а <проект> — кодовое название проекта («wiki» для Википедии, для остальных — «wiktionary», «wikibooks» и так далее). Вы можете их только читать. Список всех баз с информацией о языке и размере находится в таблице wiki базы данных toolserver.

Предоставлены следующие таблицы:

  • categorylinks
  • cur
  • hitcounter
  • image
  • imagelinks
  • interwiki
  • logging
  • math
  • oldimage
  • page
  • pagelinks
  • querycache
  • revision
  • site_stats
  • text
  • updates
  • user_groups
  • recentchanges
  • archive
  • user_ids (урезанная таблица user: только поля user_name и user_id)

Из-за бага в MySQL запросы насчёт представлений работают неэффективно; мы надеемся, что рано или поздно это будет исправлено.

В некоторых из этих баз есть дополнительные индексы, не описанные в стандарте. Справка по ним хранится в /usr/local/etc/views. Если вам нужно добавить свой индекс, напишите нам.

Представление текста в таблицах cur и text

[edit]

Текст в таблицах 'cur' и 'text' может быть сжатым или закодированным.

  • для сжатого текста в old_flags есть флаг 'gzip' (zlib-сжатие без заголовков)
  • текст с флагом «utf8» находится в кодировке UTF-8. Текст без этого флага может быть (а может и не быть) в ASCII (TODO: задокументировать).
  • текст с флагом «object» закодирован как PHP-объект; это может встречаться в :
    • отметках cur; объект PHP содержит cur_id строки в таблице cur с самим текстом.
    • blob-ы истории. Это специальное сжатое хранилище (TODO: задокументировать).
    • что-нибудь ещё?
  • тест с флагом «external» в old_flags хранится во внешних базах и пока ещё не доступен на zedler.

Вы можете использовать MediaWiki-функцию Revision::getRevisionText для получения текста (см. также Revision.php).

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

Внимание: если в базе есть данные, помеченные флагом «latin1», то они закодированы не в ASCII. Чаще всего правильная кодировка — UTF-8. Это проблема возникла при создании совместимой с MySQL 4.0 реализации. Будьте внимательны и не давайте клиенту MySQL пробовать перевести данные в UTF-8 за вас, или вы получите мусор.

Отметки времени

[edit]

Временные отметки — это не числа, а строки, состоящие из цифр. Поэтому всегда окружайте их кавычками (например, rc_timestamp > '200500000000' вместо rc_timestamp > 200500000000). Если вы об этом забудете, то запрос будет гораздо медленнее (в 50 раз и больше).

SQL-запросы

[edit]
  • Запросы-зомби: выход не останавливает длительные запросы. Если вы случайно инициировали запрос, требующий много времени, вы можете получить его идентификатор по команде SHOW PROCESSLIST и завершить его с помощью KILL идентификатор
  • Массовая вставка: вставка из файлов, в которых поля разделены символами табуляции, гораздо быстрее, чем вставка записей по отдельности. Используется следующая команда: LOAD DATA LOCAL INFILE полный_путь_к_файлу IGNORE INTO TABLE имя_таблицы
  • Если вам приходится запускать длительные запросы к базе данных, прочтите советы по оптимизации.

Веб-хостинг

[edit]

Вам предоставляется хостинг по адресу http://tools.wikimedia.de/~<username>/. Помещайте содержимое в ~/public_html/. Вы можете использовать PHP или (в качестве альтернативы) CGI-скрипты (последние следует располагать в каталоге ~/public_html/cgi-bin/). Как CGI-, так и PHP-скрипты запускаются под вашим идентификатором пользователя.

Статистика (сгенерированная с помощью Webalizer) для узла tools.wikimedia.de доступна здесь: [1] (обновляется раз в 6 часов). Обратитесь к участнику Duesentrieb в случае если с этим возникнут проблемы.

Дисковые квоты

[edit]

Для вас установлена дисковая квота в 256 мегабайт на файловой системе /u01 . Это сделано не для того, чтобы ограничить использование, а чтобы не дать пользователям по ошибке занять слишком много места. Мы можем увеличить этот лимит; для этого напишите на zedler-admins@wikimedia.org с указанием того, сколько места вам нужно и зачем.

Программы

[edit]

Большинство обычных средств, которые могли бы вам понадобится, установлены здесь. Напишите администраторам, если вам понадобится что-то ещё. Следует заметить, что:

64-битное окружение
по умолчанию на Solaris всё компилируется в 32-битном режиме. Чтобы получить 64-битный исполняемые файл, используйте «-xarch=amd64» (для cc) или «-m64» (для gcc); mysql : 32-битные клиентские библиотеки находятся в /opt/mysql50/, а 64-битные — в /usr/local/mysql/
Компиляторы C/C++
доступны два: GCC и Sun Studio. Если вы предпочитаете gcc, используйте /usr/sfw/bin/gcc (C) или /usr/sfw/bin/g++ (C++). Для Studio используйте /opt/SUNWspro/bin/cc (C) или /opt/SUNWspro/bin/CC (C++).
/bin/sh
не используйте его! Используйте /usr/bin/ksh или /usr/xpg4/bin/sh

Окружение GNU

[edit]

Если вы предпочитаете использовать GNU-версии утилит, добавьте /usr/local/gnu/bin в начало переменной окружения PATH:

$ export PATH=/usr/local/gnu/bin:$PATH

Вы можете добавить это в свой файл ~/.profile.

Отложенные задания

[edit]

Иногда возникает необходимость запустить длительные процессы, создающие большую нагрузку на процессор. Вы можете оптимизировать такие задачи с помощью Fair Share Scheduler[2] (он следит, чтобы система не перегружалась).

Чтобы запустить новый процесс в классе планирования batch (отложенное задание), используйте newtask:

$ /bin/id -p # (GNU id, /usr/local/gnu/bin/id, does not support the p flag)
uid=1001(kate) gid=102(users) projid=3(default)
$ newtask -p batch bash
$ id -p
uid=1001(kate) gid=102(users) projid=4(batch)

любые процессы, которые вы запустите здесь, продолжат выполняться с меньшим приоритетом, когда вы вернётесь в свою обычную оболочку с помощью

$ exit