СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Сервер для школ
Сегодня как никогда велик интерес к использованию свободного ПО в учебных заведениях. Если к применению GNU/Linux, как признанного флагмана движения Open Source, на настольных системах предстоит еще пройти долгий путь, то на серверах положение не так плачевно. Энтузиасты уже давно используют преимущества свободного ПО, остается только подобрать необходимые приложения, чтобы решить возникшие задачи.
OpenAdministrationforSchools – OpenAdmin (http://richtech.ca/openadmin/index.html) представляет собой свободный Open Source-проект, предназначенный для решения задач по автоматизации учета, сбора и вывода информации, адаптированный для применения в школах и других, в том числе и высших учебных заведениях. Вся собранная информация сохраняется в базе данных, доступ к которой осуществляется при помощи веб-сервера, поэтому OpenAdmin не диктует особых требований к клиентскому ПО. Во избежание проблем с безопасностью для выдачи информации различным группам пользователей используются раздельные виртуальные веб-узлы. Так, каждая школа имеет по умолчанию три веб-узла. Все они защищены паролем. Кроме того, учителя используют индивидуальный пароль на преподавательском сайте, а устанавливаемые для удобства работы cookies имеют короткий период действия по умолчанию. Для доступа к данным на родительском и студенческом сайтах также используются индивидуальные логин и пароль. Отдельный виртуальный сайт может использоваться для вывода информации третьим лицам, что позволяет избежать делегирования прав. При этом если преподаватели ведут отдельные курсы со своими программами, для их учета используется отдельный сайт (iep). В дальнейшем планируется полная поддержка https, но пока этим заниматься придется самому. Распространяется OpenAdmin по лицензии GNU GPL.
Единственное обстоятельство,затрудняющее применение OpenAdmin в наших условиях, состоит в том, что интерфейс системы сугубо английский, хотя с учетом того, что все данные хранятся в обычных текстовых файлах, перевод можно проделать самостоятельно по мере ввода сервера в эксплуатацию. По сравнению с трудоемкостью заполнения самой базы и оптимизацией количества действительно необходимых записей это будет не так уж тяжело.
Итак, в настоящее время OpenAdmin позволяет хранить и выводить по запросу следующую информацию:
- Student Demographics – все необходимые сведения об учащихся, причем можно занести не только стандартные паспортные, контактные данные и сведения о родителях, но и при необходимости этническую, религиозную, медицинскую и другую информацию, а также организовать поиск, отбор, предварительный анализ и вывод фактически по каждому пункту.
- Attendance System – сюда заносятся данные о посещаемости, а точнее отсутствии учащихся на занятиях. Позволяет отследить посещаемость ученика не только по дням, но и по занятиям и конкретным темам. По результатам можно вывести разнообразные отчеты, включающие в том числе и информацию по различным группам, получить сведения о студентах, хорошо посещающих занятия, или наоборот, вывести список заядлых прогульщиков.
- Discipline – простой дисциплинарный модуль, поможет контролировать дисциплину учащихся. Записи можно вводить без ограничения объема, при потребности удалять, плюс для удобства учета можно создать до шести категорий нарушений. Как результат можно вывести все проделки, совершенные отдельными учащимися, в школе в целом, статистику в течение определенного периода, что позволит выявить специфические виды проблем.
- Gradebook – функция, доступная только с сайта преподавателей и позволяет выставлять оценки по предметам и тестам. Кроме ведения общей статистики, автоматически вычисляется средний бал успеваемости, который затем может быть выведен на родительском сайте.
- Report Card System – гибкая система генерации отчетов с выводом до 20 сообщений в теме при неограниченном количестве тем, кроме web может выводиться в файл формата PDF, что очень удобно при распечатывании.
- Parent Viewing – скрипты, позволяющие родителям просматривать результаты успеваемости, посещаемости и поведение своих чад.
Кроме того, имеются специальные модули экспорта/импорта, позволяющие легко переносить данные учащихся, например при их переходе в другую школу. Вполне естественно, что никто не запрещает добавить или, наоборот, удалить лишние компоненты и записи, изменить значение и положение полей, создать дополнительные отчеты и прочее.
Установка сервера OpenAdmin
Сервер OpenAdmin полностью построен на основе свободных компонентов. Все применяемые скрипты написаны на Perl, для хранения информации используется база данных MySQL. В качестве веб-сервера может быть использован любой продукт, поддерживающий виртуальные узлы. Разработчиками рекомендуется Apache. Кроме этого, необходимо наличие LibXML2 (http://www.xmlsoft.org), OpenSSL (http://www.openssl.org), TeX и нескольких модулей Perl. В большинстве дистрибутивов GNU/Linux все эти компоненты, как правило, уже имеются. Если же в качестве сервера используется Windows, то придется позаботиться об их инсталляции.
Перед тем как начать установку – общая информация о структуре веб-сервера. Каждая школа по умолчанию имеет три отдельных веб-узла. Один предназначен для общего управления содержанием, т.е. администрирования, второй предназначен для преподавателей и третий – для учащихся и их родителей. Все эти сайты находятся в архиве каталога school в соответствующих папках. Скрипты и сайт администрирования – в admin и cgi, преподавательский сайт – в tadmin и tcgi, родительский – в padmin и pcgi. При этом на одном веб-сервере можно одновременно разместить сайты нескольких школ, настройки этих серверов находятся в разных каталогах со структурой, описанной выше. Два сайта sis (Student Information System) и iep предназначены для специального (централизованного) доступа ко всем информационным ресурсам. Так как все эти сайты находятся на одном сервере, то необходимо обеспечить разрешение имен, прописав все узлы в файле /etc/hosts (что безопаснее) или в настройках DNS-сервера.
Чтобы меньше путаться в настройках, разработчики рекомендуют создать для школьных сайтов отдельный каталог, в котором и разместить всю вышеописанную иерархию.
# mkdir /schools
# cd /schools
# cp /tmp/openadmin-1.70.tar.gz
# tar xvzf openadmin-1.70.tar.gz
Для того чтобы в дальнейшем была возможность расширять сервер, добавляя новые учебные заведения, создадим для школы отдельную папку, в которую скопируем шаблоны с сайтами.
# mkdir 4school
# cp -r /schools/school /schools/4schoo
Смотрим в файле веб-сервера Apache httpd.conf в строках User и Group, от имени какого пользователя он работает, и устанавливаем его владельцем вновь созданных каталогов:
# chown -R apache:apache /schools
А для каталогов cgi устанавливаем права доступа в 755:
# chmod 755 /schools/4school/cgi
При необходимости можно установить логотип учебного заведения, заменив файл logo.gif и logotn.gif в подкаталоге admin/images. Теперь можно приступить к созданию необходимой базы данных.
# mysql -u root myschool –p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 11 to server version: 3.23.58
Type "help;" or "h" for help. Type "c" to clear the buffer.
|
Назначаем необходимые привилегии, чтобы не работать от имени администратора.
mysql> grant all on myschool.* to school@localhost identified by "schoolpasswd";
Query OK, 0 rows affected (0.01 sec) |
mysql> quit
И при помощи файла blank.sql, содержащего необходимые команды, создаем таблицы в нашей базе данных.
# mysql -p -u school myschool < /schools/utility/blank.sql
Если будет использована SIS, то в целях безопасности необходимо создать отдельного пользователя, обладающего правами только на выборку данных из таблиц школ (select). Специальный ресурс iep имеет свою структуру таблиц базы данных, для создания которых используются файлы iepdata.sql и iepstruct.sql.
Теперь об Apache. В конце файла httpd.conf имеется секция «Virtual Hosts», в которой даны примеры и краткие комментарии по настройке виртуальных веб-узлов. Фактически для минимальной настройки необходимо будет создать три одинаковых секции, отличающиеся параметрами Document Root, ServerName и ScriptAlias. Для учительского и администраторского сайта, кроме того, создаются разделы, ограничивающие доступ.
### Проверьте наличие этих строк
AddTypetext/html .shtml
AddHandler server-parsed .shtml
### Section 3: Virtual Hosts
NameVirtualHost schools
### Администраторский сайт
<VirtualHost schools>
ServerAdmin grinder@ua.fm
DocumentRoot /schools/4school/admin
ServerName admin.schools.com
ErrorLog logs/schools.error_log
CustomLog logs/schools.access_log common
ScriptAlias /cgi-bin "/schools/4school/cgi"
</VirtualHost>
### Ограничиваем доступ
<Directory ”/schools/4school/admin”>
Authtype Basic
Authname Admin
AuthUserFile /usr/local/apache/private/admin4school
Options +Includes
<Limit GET POST>
require valid-user
</Limit>
</Directory>
<Directory ”/schools/4school/cgi”>
Authtype Basic
Authname Admin
AuthUserFile /usr/local/apache/private/admin4school
<Limit GET POST>
require valid-user
</Limit>
</Directory>
</VirtualHost>
### Учительский сайт
<VirtualHost schools>
ServerAdmin grinder@ua.fm
DocumentRoot /schools/4school/tadmin
ServerName teacher.schools.com
ErrorLog logs/schools.error_log
CustomLog logs/schools.access_log common
ScriptAlias /cgi-bin "/schools/4school/tcgi"
</VirtualHost>
### Ограничиваем доступ
<Directory ”/schools/4school/tadmin”>
Authtype Basic
Authname teacher
AuthUserFile /usr/local/apache/private/teacher4school
Options +Includes
<Limit GET POST>
require valid-user
</Limit>
</Directory>
<Directory ”/schools/4school/tcgi”>
Authtype Basic
Authname Admin
AuthUserFile /usr/local/apache/private/admin4school
<Limit GET POST>
require valid-user
</Limit>
</Directory>
</VirtualHost>
### Родительско-студенческий сайт
<VirtualHost schools>
ServerAdmin grinder@ua.fm
DocumentRoot /schools/4school/padmin
ServerName parent.schools.com
ErrorLog logs/schools.error_log
CustomLog logs/schools.access_log common
ScriptAlias /cgi-bin "/schools/4school/pcgi"
</VirtualHost>
Теперь проверяем правильность новых настроек.
# apachectl configtest
Создаем пароли для каждого пользователя.
# htpasswd /usr/local/apache/private/teacher4school physicist
Перезапускаем веб-сервер.
# /etc/init.d/httpd restart
Останавливается httpd: [ ОК ]
Запускается httpd: [ ОК ]
|
И наконец, последний этап. В подкаталогах cgi и tcgi имеются файлы admin.conf, в которых необходимо изменить параметры для доступа к базе данных, расположение каталогов администраторского и учительского серверов, местонахождение утилиты pdflatex и почтовый адрес администратора, который будет выводиться в случае ошибок. В дальнейшем для упрощения настроек планируется использовать один такой файл, расположенный в /etc. При внимательном подходе к чтению на данном этапе все три сервера должны работать. Единственная проблема, с которой вы можете столкнуться, – это занесение в базу данных больших объемов информации. Регистрация одного-двух десятков учеников – терпима, но если их число превышает несколько сотен, то этот процесс превратится в настоящий кошмар. Для удобства рекомендуется воспользоваться скриптом studentupload.pl, который находится в подкаталоге utility. Этот скрипт считывает файл в формате CSV (Comma Separated Values) и заносит все сведения в базу данных. По умолчанию сценарий считывает 40 параметров и перед началом использования его необходимо подправить под свои требования. При работе скрипт не обновляет файл cgi/entry/studentnumber, в котором хранятся номера следующей записи, поэтому, чтобы не получились записи с одинаковыми порядковыми номерами, цифру в нем необходимо подправить самому. Если все же это произошло, то в решении проблемы могут помочь скрипты dupcheck.pl и sentry2.pl.
Несмотря на то что OpenAdmin ориентирован в первую очередь на применение в учебных заведениях, его наработки вполне можно использовать и в своих проектах, связанных с учетом большого количества персонала. Например, в библиотеках, дополнительно создав отдельную таблицу с книгами и используя поля оценок, контролировать для выданную литературу. Впрочем, вариантов много. По крайней мере, есть от чего оттолкнуться при возникновении такой задачи. Это довольно полезный инструмент, позволяющий избежать большого количества рутинной ручной работы.