Архив публикаций обучающихся и сотрудников СУНЦ УрФУ
amgld 9af6a56e62 Текущая работа | 2 years ago | |
---|---|---|
api | 3 years ago | |
db | 3 years ago | |
draft | 3 years ago | |
www | 2 years ago | |
.gitignore | 3 years ago | |
LICENSE.txt | 3 years ago | |
README.md | 3 years ago | |
config.json | 3 years ago | |
kod404.html | 3 years ago | |
package.json | 3 years ago | |
server.js | 2 years ago |
Назначение и основные возможности
Краткая техническая характеристика
Сайт lycArch.urfu.ru
представляет собой архив публикаций обучающихся и сотрудников СУНЦ УрФУ и публикует научные статьи, авторами которых являются обучающиеся и сотрудники Специализированного учебно-научного центра Уральского федерального университета (Екатеринбург). Сайт не является средством массовой информации.
После минимальной доработки (смены логотипа и при необходимости — дизайна страниц, редактирования текстов с упоминанием СУНЦ УрФУ, редактирования шаблона статьи) сайт может быть использован для автоматизации работы любой редакции рецензируемого журнала (с рецензированием каждой статьи одним рецензентом).
Сайт предназначен для автоматизации всех редакционных процессов и позволяет:
Программное обеспечение сайта доступно по лицензии 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)
Установите любой сервер (ниже описываются действия для lighttpd
; настройка Apache
, nginx
и других серверов выполняется аналогично). В качестве папки документов сервера укажите папку сайта www
, в качестве папки логов — папку logs
, в качестве странички ошибок 404 — файл kod404.html
(в настройках lighttpd
указывается без кода ответа и без расширения):
server.errorfile-prefix = "путь/kod"
В файле lighttpd.conf
подключите модуль mod_proxy
и включите проксирование запросов к API на порт 8080, добавив в конец этого файла строку
$HTTP["url"] =~ "(^\/api\/)" {proxy.server = ("" => (("host" => "127.0.0.1", "port" => "8080")))}
Установите Nodejs версии не менее 12.x.
Установите дополнительные модули node-fetch
, mmmagic
, @yetzt/nedb
(можно использовать и модуль nedb
, но он имеет конфликт версий, который можно можно проигнорировать), nodemailer
, pdfkit
.
После копирования сайта в рабочий каталог сервера измените собственника всех папок и файлов сайта на www-data
и выставьте права на папки 755
, а права на файлы 644
.
Отредактируйте файл /www/sections.js
(перечень тематических разделов архива публикаций).
Отредактируйте файл /config.json
(определение переменных — настройки сайта):
Запуск и рестарт сервера lighttpd
производится штатными средствами ОС, например
service lighttpd start
В 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
).