Министерство образования и науки Российской Федерации Новосибирский государственный технический университет Кафедра вычислительной техники Отчет по лабораторным работам и контрольной работе по дисциплине Специальные главы информатики «Разработка разработка сайта teplocentr54.ru» Группа: ЗАМ - 734 Выполнил: Хлыстун М.А. Проверил: Новицкая Ю.В. Новосибирск 2012 Оглавление Постановка задачи ..................................................................................................................... 3 Разработка и описание структурной схемы web-сайта .......................................................... 4 Структура базы данных ............................................................................................................... 5 Настройке web-сервера ................................................................................................................. 6 Файлы конфигурации nginx ...................................................................................................... 6 Настройка web-сервера apache2 ............................................................................................... 7 Приложение №1 ............................................................................................................................. 9 Литература ............................................................................................................................... 10 Постановка задачи Разработка сайта для компании Теплоцентр, включая настройку web-сервера. Сайт должен содержать следующие разделы: Главная страница — содержит текст рассказывающий о компании и ее развитии. Новости — отображает новости компании в обратном хронологическом порядке, добавление новостей должно осуществляться через административный интерфейс сайта. Новость может являться акцией (например, сообщение о распродаже), при наличии активной акции, кнопка меню «Новости» должна менять свой внешний вид. Документы — содержит ссылки на документы открытые для общего доступа (прайсы, сертификаты продукции). Редактирование через административный интерфейс. Прайсы должны отображаться в два столбца в верхней части страницы. Сертификаты должны быть сгруппированы по производителю продукции. Вакансии — отображает текущие вакансии в компании. Редактируется через административный интерфейс сайта. Информации — раздел содержит, полезную для потребителей информации. Редактирование через административный интерфейс. Контакты — реквизиты компании, контактные данные, месторасположение на карте 2gis. Разработка и описание структурной схемы web-сайта Для разработки данного web-сайта был выбран язык программирования python с использование framework'a Django, который предоставляет подход по схеме МодельПредставление-Управление. Для хранения всех изменяемых данные используется реляционная база данных MySQL. Схема таблиц базы данных представлена в приложении №1. При разработки использована система контроля версий git. Структура файлов web-сайта: .git static templates www В каталоге .git храняться служебные файлы системы контроля версий. Статические файлы находятся в каталоге static, который делится на каталоги: css — для хранения каскадных таблиц стилей doc — прайсы и сертификаты загружаемые представителем компании. image — элементы дизайна, градиенты, логотип компании. logo — логотипы компаний производителей, загружаются представителем компании при добавлении новой продукции. Weather — элементы дизайна для виджета с погодой. Каталог www содержит основной код web-сайта и модели обращения к базе данных. Template — содержит шаблоны html-страниц сайта. Структура базы данных Все данные хранятся в одной базе данных в нескольких таблицах. Служебные таблицы для аутентификации в административном интерфейсе web-сайта. auth_group auth_group_permissions auth_message auth_permission auth_user auth_user_groups auth_user_user_permissions Таблицы необходимые для логирования действий пользователя django_admin_log django_content_type django_session Таблицы для хранения изменяемых данных компании. article doc info manufacturer new production type valute vcn weather Таблицы valute и weather сделаны для кэширования данных и уменьшения количества запросов к внешним API, а также в те моменты когда они не доступны. Таблицы article, doc, info, new, vcn хранять данные изменяемые через админисративный интерфейс сайта. Manufacturer — содержит наименования производителей продукции. На эту таблицу ссылаются таблицы production, article и doc. Настройке web-сервера В качестве web-сервера используется связка nginx+apache2. Nginx используется для проксирования и передачи статических файлов (логотипов, картинок, элементов дизайна), а apache2 для генерации динамических страниц. Файлы конфигурации nginx В связи с тем, что на сервере располагается несколько сайтов, конфигурация nginx выполнена как отдельный виртуальный хост. Конфигурация хранится в файле /etc/nginx/sites-available/teplocentr54ru server { listen *:80; server_name teplocentr54.ru www.teplocentr54.ru; location /static { root /var/www/teplocentr54.ru/web/teplocentr54ru/; } location / { proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:8000; access_log /var/log/nginx/django.access.log; error_log /var/log/nginx/django.error.log; } location /media { root /usr/share/pyshared/django/contrib/admin/; } location /nginx_status { stub_status on; access_log /var/log/nginx/status.log; allow 217.65.5.112; allow 217.65.5.116; deny all; } } В данном конфигурационном файле настроены локации расположения статических файлов. Проксирование на web-сервер apache2 и запись в лог-файлы. Также предусмотрена возможность получения внутренней статистики nginx, но только для разрешенных ip-адресов. Это необходимо для системы мониторинга. Настройка web-сервера apache2 Используется для генерации динамического содержимого web-страниц. Файл конфигурации лежит в файле /etc/apache2/sites-enabled/teplocentr54.ru.vhost <Directory /var/www/teplocentr54.ru> AllowOverride None Order Deny,Allow Deny from all </Directory> <VirtualHost *:8000> DocumentRoot /var/www/teplocentr54.ru/web/teplocentr54ru/ ServerName teplocentr54.ru ServerAlias www.teplocentr54.ru ServerAdmin webmaster@teplocentr54.ru ErrorLog /var/log/ispconfig/httpd/teplocentr54.ru/error.log ErrorDocument 400 /error/400.html ErrorDocument 401 /error/401.html ErrorDocument 403 /error/403.html ErrorDocument 404 /error/404.html ErrorDocument 405 /error/405.html ErrorDocument 500 /error/500.html ErrorDocument 502 /error/502.html ErrorDocument 503 /error/503.html WSGIScriptAlias / /var/www/teplocentr54.ru/web/teplocentr54ru/deploy/django.wsgi <IfModule mod_ssl.c> </IfModule> <Directory /var/www/teplocentr54.ru/web> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all <Files ~ '.php[s3-6]{0,1}$'> Order allow,deny Deny from all Allow from none </Files> </Directory> <Directory /var/www/clients/client1/web1/web> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all <Files ~ '.php[s3-6]{0,1}$'> Order allow,deny Deny from all Allow from none </Files> </Directory> <IfModule mod_python.c> <Directory /var/www/teplocentr54.ru/web> AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On </Directory> </IfModule> # suexec enabled SuexecUserGroup web1 client1 # Clear PHP settings of this website <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> # add support for apache mpm_itk <IfModule mpm_itk_module> AssignUserId web1 client1 </IfModule> <IfModule mod_dav_fs.c> # Do not execute PHP files in webdav directory <Directory /var/www/clients/client1/web1/webdav> <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> </Directory> # DO NOT REMOVE THE COMMENTS! # IF YOU REMOVE THEM, WEBDAV WILL NOT WORK ANYMORE! # WEBDAV BEGIN # WEBDAV END </IfModule> </VirtualHost> Приложение №1 Схема таблиц базы данных Литература 1. Django: Разработка веб-приложений на Python, 2009, Джефф Форсье, Пол Биссекс, Уэсли Чан, Символ-Плюс ISBN-13: 978-5-93286-167-7 2. Django: Подробное руководство, 2010, Адриан Головатый, Джейкоб КапланМосс, Символ-Плюс ISBN-13: 978-5-93286-187-5 3. HTML и CSS. Путь к совершенству Автор: Бен Хеник, Питер, Бестселлеры O'Reilly ISBN 978-5-49807-864-9, 978-0-596-15760-9; 2011 г.