Веб-сервер с функциональностью CGI — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
Строка 4: Строка 4:
 
Презентация проекта: http://1drv.ms/1VmeBQ0
 
Презентация проекта: http://1drv.ms/1VmeBQ0
  
 +
Ментор проекта: Виктор Яковлев
 +
 +
Аккаунты ментора в git-сервисах:
 +
 +
* [http://GitHub.com GitHub.com]: victor-yacovlev
 +
* [http://GitLab.com GitLab.com]: v-yacovlev
 +
* [http://BitBucket.org BitBucket.org]: victor_yacovlev
  
 
== Что это за проект ==
 
== Что это за проект ==

Версия 13:59, 19 октября 2015

Метаданные

ID проекта: cgi

Презентация проекта: http://1drv.ms/1VmeBQ0

Ментор проекта: Виктор Яковлев

Аккаунты ментора в git-сервисах:

Что это за проект

Введение

Веб-серверы - это программы, которые работают на физических серверах и обеспечивают выдачу содержимого браузерам.

Common Gateway Interface (CGI) - простой интерфейс взаимодействия между веб-сервером и сторонними программами, генерирующими динамический контент. В отличии от веб-фреймворков, используется там, где нужна очень простая функциональность.


Что требуется

Реализовать веб-сервер, функционально аналогичный старым версиям Apache.

Требования к серверу:

1. Обслуживать много клиентов

2. Уметь выполнять CGI-программы и выдавать динамический контент


Чему вы научитесь (помимо разработки очередного велосипеда)

1. Устройство протокола HTTP, работа с заголовками и запросами

2. Основам параллельного программирования

3. Умение разрабатывать программы для Unix-подобных систем и ориентироваться в POSIX API

Начальные требования

1. Умение разрабатывать программы на Cи или C++


Критерии оценивания

Первая контрольная точка (24 октября 2015 г.)

Необходимо иметь git-репозиторий с проектом, в который приглашен ментор. В репозитории должно быть:

  • Файл README.md, который содержит описание проекта, написанный в расчета на "конечного пользователя". Это описание должно быть написано самостоятельно, а не скопировано из Wiki, и отражать Ваше понимание того, что нужно сделать.
  • Реализацию TCP-сервера, который при запуске создает сокет, принимает хотя бы по одному соединению одновременно, и выводит в качестве отладочной информации (на стандартный поток вывода или стандартный поток ошибок) данные, который ему передает клиент (для тестирования можно использовать программу telnet).
  • Для тех, кто реализует проект на Си/C++, - проектный файл CMakeLists.txt.

Вторая контрольная точка (14 ноября 2015 г.)

Необходимо иметь режиме веб-сервер, который умеет выдавать статические страницы и запускать сторонные CGI-программы с помощью fork().

Итоговая оценка

  • 4 балла. Реализован веб-сервер, который умеет выдавать статические страницы и обслуживать одновременно несколько подключений
  • 6 баллов. Помимо выдачи статического содержимого, сервер умеет выполнять сторонние программы и выдавать результат их работы
  • 8 баллов. Реализована функциональность прерывания работы и изоляции потенциально опасных CGI-скриптов.
  • +1 балл. Сервер оформлен в виде системной службы для systemd
  • +2 балла. Использование как многопроцессной, так и многопоточной работы для обеспечения оптимального использования системных ресурсов
  • +2 балла. Реализация обработки запросов с помощью очереди ядра.