Архив публикаций обучающихся и сотрудников СУНЦ УрФУ

amgld 9af6a56e62 Текущая работа 2 years ago
api 9fcaf879c1 Текущая работа 3 years ago
db 37cec19fce Текущая работа 3 years ago
draft 1f64f6e245 Текущая работа 3 years ago
www 8cb226a56e Текущая работа 2 years ago
.gitignore 97f205890b Текущая работа 3 years ago
LICENSE.txt 21173b9c3c Текущая работа 3 years ago
README.md 37cec19fce Текущая работа 3 years ago
config.json d52c1afacc Текущая работа 3 years ago
kod404.html 21173b9c3c Текущая работа 3 years ago
package.json 37cec19fce Текущая работа 3 years ago
server.js 9af6a56e62 Текущая работа 2 years ago

README.md

Сайт lycArch.urfu.ru

Содержание

О сайте

  Назначение и основные возможности

  Лицензия

  Краткая техническая характеристика

  Сервер авторизации

  Структура папок

Установка, запуск и останов

  Установка на хостинг

  Запуск серверов

  Останов серверов

О сайте

Сайт lycArch.urfu.ru представляет собой архив публикаций обучающихся и сотрудников СУНЦ УрФУ и публикует научные статьи, авторами которых являются обучающиеся и сотрудники Спе­ци­а­ли­зи­ро­ван­но­го учебно-научного центра Уральского федерального университета (Екатеринбург). Сайт не является средством массовой информации.

После минимальной доработки (смены логотипа и при необходимости — дизайна страниц, редактирования текстов с упоминанием СУНЦ УрФУ, редактирования шаблона статьи) сайт может быть использован для автоматизации работы любой редакции рецензируемого журнала (с рецензированием каждой статьи одним рецензентом).

Назначение и основные возможности

Сайт предназначен для автоматизации всех редакционных процессов и позволяет:

  • неавторизованному пользователю: видеть список последних пяти опубликованных статей и читать эти статьи; производить поиск статей по тематическому разделу, фамилии автора либо фрагменту названия или ключевого слова и читать найденные статьи; знакомиться с содержимым странички «Редакция»; знакомиться с содержимым странички «Авторам» (требованиями к содержанию и оформлению статей);
  • авторизованному учащемуся или сотруднику СУНЦ УрФУ, кроме того: отправлять в редакцию свои статьи, редактировать их, удалять их; просматривать свои опубликованные и неопубликованные статьи; получать по электронной почте замечания редактора и рецензента, а также информацию о всех действиях редакции; получать сертификат о публикации в формате pdf;
  • главному редактору: назначать редакторов, корректоров и рецензентов из числа сотрудников СУНЦ УрФУ; удалять опубликованные статьи;
  • редактору: просматривать перечни неопубликованных статей по категориям (вновь поступившие, получившие замечания редактора, переданные рецензенту, получившие замечания рецензента, одобренные рецензентом и направленные корректору, прошедшие корректуру и ожидающие публикации); получать полную информацию о неопубликованной статье; редактировать статью; отправлять автору замечания редактора; направлять статью рецензенту или корректору; публиковать статью; удалять статью;
  • корректору: просматривать направленные ему редактором статьи; редактировать статьи;
  • рецензенту: просматривать направленные ему редактором статьи (без просмотра фамилий и иных данных автора и соавторов); отправлять автору статьи замечания; рекомендовать редактору удалить статью без ее рассмотрения; рекомендовать редактору опубликовать статью.

Лицензия

Программное обеспечение сайта доступно по лицензии ISC (файл LICENSE.txt).

Краткая техническая характеристика

Сайт представляет собой клиентское веб-приложение, написанное на JavaScript. Клиентская часть обращается к API серверной части, работающей на платформе Nodejs. Статические файлы отдаются посредством любого web-сервера (в настоящее время используется lighttpd). Для хранения данных используется СУБД NeDB (@yetzt/nedb — модуль Nodejs).

Сервер авторизации

Для работы сайта требуется наличие сервера авторизации пользователей (без авторизации доступен только просмотр опубликованных статей, сведений о редакции сайта и мануала для авторов).

Сервер авторизации на GET-запрос вида

хост?login-password

(пароли и логины пользователей не должны содержать дефисов; дефис используется как разделитель логина и пароля) должен выдавать строку либо noauth, либо данные пользователя вида

pupkin,Пупкин,Василий,Петрович,

(для учащихся с пустым отчеством, для сотрудников — с реальным отчеством).

Если сервер авторизации отвечает по протоколу https, то и сайт архива публикаций должен работать по протоколу https, иначе запрос к серверу авторизации будет заблокирован политикой безопасности браузера.

Структура папок

lycarch.urfu.ru
├── api                       Скрипты, реализующие API (nodejs)
│   ├── sert_blank.jpg        Фоновое изображение (бланк) сертификата
│   └── *.js                  Скрипты, реализующие API
├── db                        Таблицы базы данных
│   ├── articles.db           Каталог статей (опубликованных и ждущих публикации)
│   └── users.db              Редакторы, рецензенты, корректоры
├── draft                     Статьи, ждущие публикации (отдаются nodejs'ом!)
│   ├── z000                  Папка-заглушка для того, чтобы каталог draft не был пустым
│   └── ...                   Прочие папки со статьями, ждущими публикации
│       ├── article.txt       Аннотация, текст и библиография статьи
│       ├── editor.txt        Замечания редактора
│       └── reviewer.txt      Замечания рецензента
├── logs                      Логи сервера
├── www
│   ├── fonts                 Подгружаемые шрифты
│   ├── img                   Изображения, обслуживающие сайт
│   ├── include               Подгружаемый контент, стили, шаблоны
│   │   ├── corrector.html    Интерфейс корректора
│   │   ├── editor.html       Интерфейс редактора
│   │   ├── form.html         Форма ввода / редактирования статьи
│   │   ├── main.html         Контент страницы «Статьи»
│   │   ├── manual.html       Контент страницы «Авторам»
│   │   ├── office.html       Контент страницы «Редакция»
│   │   ├── reviewer.html     Интерфейс рецензента
│   │   ├── send.html         Контент страницы «Мои статьи»
│   │   ├── print.css         Стиль статьи
│   │   ├── style.css         Стиль страниц сайта
│   │   └── print.tpl         Шаблон статьи
│   ├── js
│   │   ├── admin.js          Обработка контента интерфейса главного редактора
│   │   ├── page.js           Обработка контента сайта и формы авторизации
│   │   └── print.js          Обработка страницы со статьей
│   ├── katex                 Библиотека katex для рендеринга формул
│   ├── pub                   Опубликованные статьи
│   │   ├── _sample           Статья-образец
│   │   ├── ...               Прочие опубликованные статьи
│   │   └── index.html        Файл перенаправления на главную страницу сайта
│   ├── index.html            Главная страница
│   ├── sections.js           Перечень тематических разделов архива публикаций
│   ├── root.html             Страничка с интерфейсом главного редактора
│   ├── favicon.ico
│   └── robots.txt
├── config.json               Определение переменных — настройки сайта
├── kod404.html               Страничка 404
├── LICENSE.txt               Текст лицензии
├── package.json
├── README.md                 Этот файл
└── server.js                 Стартовый скрипт API (nodejs)

Установка, запуск и останов

Установка на хостинг

  1. Установите любой сервер (ниже описываются действия для lighttpd; настройка Apache, nginx и других серверов выполняется аналогично). В качестве папки документов сервера укажите папку сайта www, в качестве папки логов — папку logs, в качестве странички ошибок 404 — файл kod404.html (в настройках lighttpd указывается без кода ответа и без расширения):

    server.errorfile-prefix = "путь/kod"
    
  2. В файле lighttpd.conf подключите модуль mod_proxy и включите проксирование запросов к API на порт 8080, добавив в конец этого файла строку

    $HTTP["url"] =~ "(^\/api\/)" {proxy.server = ("" => (("host" => "127.0.0.1", "port" => "8080")))}
    
  3. Установите Nodejs версии не менее 12.x.

  4. Установите дополнительные модули node-fetch, mmmagic, @yetzt/nedb (можно использовать и модуль nedb, но он имеет конфликт версий, который можно можно проигнорировать), nodemailer, pdfkit.

  5. После копирования сайта в рабочий каталог сервера измените собственника всех папок и файлов сайта на www-data и выставьте права на папки 755, а права на файлы 644.

  6. Отредактируйте файл /www/sections.js (перечень тематических разделов архива публикаций).

  7. Отредактируйте файл /config.json (определение переменных — настройки сайта):

    • ADMIN — логин главного редактора (используемый при авторизации на сервере авторизации);
    • admEml — e-mail главного редактора;
    • SALT — произвольная символьная строка, используемая в качестве соли для хеширования паролей пользователей;
    • authServ — URI сервера авторизации (вместе с протоколом http:// или https://);
    • director — инициалы и фамилия директора СУНЦ УрФУ;
    • glred — инициалы и фамилия главного редактора архива публикаций;
    • smtpSrv — URL smtp-сервера, используемого для отправки e-mail с сайта;
    • smtpPort — номер smtp-порта;
    • smtpUs — логин для авторизации на smtp-сервере;
    • smtpPwd — пароль для авторизации на smtp-сервере.

Запуск серверов

  1. Запуск и рестарт сервера lighttpd производится штатными средствами ОС, например

    service lighttpd start
    
  2. В unix-подобных ОС запуск nodejs-сервера производится командой

    nohup node /путь/server.js &
    

    Nodejs необходимо запускать из-под суперпользователя с тем, чтобы иметь доступ на запись к некоторым папкам сайта (альтернативный и более безопасный вариант — выставить права 775 на папки draft и www/pub и включить пользователя, из-под которого будет запускаться nodejs, в группу www-data).

    Для выхода из ssh-сессии необходимо предварительно подать команду exit; в случае, если возникнет предупреждение о незавершенных процессах, необходимо подать команду disown 0000 (где 0000 — id процесса), а затем снова exit.

Останов серверов

Останов сервера lighttpd производится штатными средствами ОС, например

service lighttpd stop

Останов nodejs-сервера производится командой killall node (для работы killall может потребоваться предварительная установка в системе пакета psmisc).