добавляет отчеты по заданиям

parents
## Инвариантная:
- Изучить и проанализировать систему управления проектами YouGile
- Проанализировать текстовый документ «Месяц тестирования» с описанием проблем и приложений, связанных с сайтом ЦБС Петроградского района. Составить на основе данного документа задачи в СУП.
- Проверить воспроизводимость выявленных проблем сайта ЦБС Петроградского района.
- Изучить и проанализировать программное обеспечение сайта ЦБС Петроградского района
=============================================
## Вариативная:
- Главный портал
- Развернуть локально Liferay и проанализировать внутреннее устройство проекта
- Выявить причину возникновения дефектов и исправить их:
- долгая загрузка страницы с иностранного IP
- перекрытие мобильного меню навигации виджетом ESIR
- Микросервис Памятные даты:
- Развернуть локально микросервис, склонировав репозиторий проекта
- Проанализировать внутреннее устройство проекта и изменить его для выполнения следующих задач:
- переписать docker-compose файл так, чтобы приложение использовало NGINX&Gunicorn
- переписать docker-compose файл так, чтобы в качестве БД использовалась PostgreSQL
# Вариативное задание 2.1.1
## Локально разворачиваем контейнер Liferay
```sh
sudo docker run -it -m 8g -p 8080:8080 liferay/portal:7.1.2-ga3
```
Далее подключаемся к `localhost:8080` и попадаем на страницу Liferay.
Чтобы зайти в панель администратора, необходимо войти в `test@liferay.com` с паролем `test`.
\ No newline at end of file
[dant4ick@fedora Вариативная]$ diff -r original modified
diff -r original/js/main.js modified/js/main.js
1026a1027
> let menu = $('.main-menu'); // Navigation menu on mobile devices
1041a1043,1049
>
> // esirWidget overlaping mobile navigation menu
> if (heightEsirWidgetPanel > 0) {
> menu.css("top", 50 + "px");
> } else {
> menu.css("top", 0 + "px");
> }
1055c1063
< })).clone().appendTo(".links");
\ В конце файла нет новой строки
---
> })).clone().appendTo(".links");
diff -r original/META-INF/MANIFEST.MF modified/META-INF/MANIFEST.MF
1a2
> Created-By: 17.0.9 (Red Hat, Inc.)
diff -r original/templates/portal_normal.ftl modified/templates/portal_normal.ftl
23,25c23,35
< <#--for test esirWidget
< <script type="text/javascript" src='${javascript_folder}/esir.js'></script>-->
< <script type="text/javascript" src="//esir.gov.spb.ru/static/widget/js/widget.js" charset="utf-8"></script>
---
> <script>
> // Function to load the widget asynchronously
> function loadWidget() {
> var script = document.createElement('script');
> script.type = 'text/javascript';
> script.src = '//esir.gov.spb.ru/static/widget/js/widget.js';
> script.charset = 'utf-8';
> document.body.appendChild(script);
> }
>
> // Call the function to load the widget after the page has loaded
> window.addEventListener('load', loadWidget);
> </script>
194c204
< </html>
\ В конце файла нет новой строки
---
> </html>
diff -r original/WEB-INF/liferay-plugin-package.properties modified/WEB-INF/liferay-plugin-package.properties
1c1
< author=maslov
---
> author=maslov+lotuga
7,8c7,8
< module-incremental-version=1
< name=kalin-theme
---
> module-incremental-version=1.1
> name=kalin-theme-modified
14c14
< tags=
\ В конце файла нет новой строки
---
> tags=
# Вариативное задание 2.1.1
## Импорт проекта
```sh
git clone https://github.com/pr-cbs/kpd-zhzl-serverv.git
```
```sh
cd kpd-zhzl-serverv
```
## Запуск docker compose
```sh
docker-compose up
```
\ No newline at end of file
[dant4ick@fedora kpd-zhzl-serverv]$ git diff cd1dc18e50d049804bab79737bcd97019f880087~ cd1dc18e50d049804bab79737bcd97019f880087
diff --git a/.env.template b/.env.template
new file mode 100644
index 0000000..bf3ac20
--- /dev/null
+++ b/.env.template
@@ -0,0 +1,8 @@
+DB_HOST=db
+DB_PORT=5432
+DB_NAME=my_database
+DB_USER=my_user
+DB_PASSWORD=my_password
+APP_PORT=9001
+NGINX_SERVER_NAME=localhost
+SSL_FOLDER_PATH=/etc/nginx/ssl
diff --git a/.gitignore b/.gitignore
index b6e4761..f73e4dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -127,3 +127,6 @@ dmypy.json
# Pyre type checker
.pyre/
+
+# JetBrains
+/.idea/
diff --git a/Dockerfile b/Dockerfile
index c2e6fcd..c6a0b47 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,11 +8,12 @@ ENV PYTHONDONTWRITEBYTECODE 1
COPY requirements.txt .
-RUN apk add zlib-dev jpeg-dev gcc musl-dev
+# Устанавливаем зависимости
+RUN apk add --no-cache bash zlib-dev jpeg-dev gcc musl-dev
+# Устанавливаем зависимости Python
RUN pip install --no-cache-dir -r requirements.txt
-#RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev \
-# && pip install --upgrade pip \
-# && pip install -r requirements.txt
-
+# Копируем wait-for-it скрипт
+COPY ./wait-for-it/wait-for-it.sh /usr/local/bin/wait-for-it
+RUN chmod +x /usr/local/bin/wait-for-it
diff --git a/dates_pr_cbs/settings.py b/dates_pr_cbs/settings.py
index 6928dbb..194769f 100644
--- a/dates_pr_cbs/settings.py
+++ b/dates_pr_cbs/settings.py
@@ -87,18 +87,20 @@ STATICFILES_DIRS = (
WSGI_APPLICATION = 'dates_pr_cbs.wsgi.application'
-
# Database
# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
DATABASES = {
'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': BASE_DIR / 'prcsbdb.sqlite3',
- },
+ 'ENGINE': 'django.db.backends.postgresql',
+ 'HOST': os.environ.get('DB_HOST', 'db'),
+ 'PORT': os.environ.get('DB_PORT', '5432'),
+ 'NAME': os.environ.get('DB_NAME', 'mydatabase'),
+ 'USER': os.environ.get('DB_USER', 'myuser'),
+ 'PASSWORD': os.environ.get('DB_PASSWORD', 'mypassword'),
+ }
}
-
# Password validation
# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
@@ -144,12 +146,12 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = 'media/'
-MONTHS = [[1, 'Январь'], [2, 'Февраль'], [3, 'Март'],
- [4, 'Апрель'], [5, 'Май'], [6, 'Июнь'],
- [7, 'Июль'], [8, 'Август'], [9, 'Сентрябрь'],
+MONTHS = [[1, 'Январь'], [2, 'Февраль'], [3, 'Март'],
+ [4, 'Апрель'], [5, 'Май'], [6, 'Июнь'],
+ [7, 'Июль'], [8, 'Август'], [9, 'Сентябрь'],
[10, 'Октябрь'], [11, 'Ноябрь'], [12, 'Декабрь']]
-ALPHABET = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З',
- 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
- 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ',
- 'Э', 'Ю', 'Я']
\ No newline at end of file
+ALPHABET = ['А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З',
+ 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
+ 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ',
+ 'Э', 'Ю', 'Я']
diff --git a/docker-compose.yaml b/docker-compose.yaml
index 56260b4..5b10455 100644
--- a/docker-compose.yaml
+++ b/docker-compose.yaml
@@ -1,13 +1,38 @@
version: '3.7'
services:
- calendar:
- build: .
- command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
- ports:
- - 9001:8000
- volumes:
- - .:/app/calendar
-
+ db: # Сервис базы данных PostgreSQL
+ build:
+ context: ./postgres # Путь к Dockerfile для сборки образа
+ environment:
+ POSTGRES_DB: ${DB_NAME} # Настройка переменных среды для базы данных
+ POSTGRES_USER: ${DB_USER}
+ POSTGRES_PASSWORD: ${DB_PASSWORD}
+ calendar: # Сервис приложения календаря
+ build: . # Сборка образа из текущего контекста (Dockerfile в текущей директории)
+ depends_on:
+ - db # Зависимость от сервиса db (базы данных)
+ environment:
+ - DB_HOST=${DB_HOST} # Настройка переменных среды для приложения
+ - DB_PORT=${DB_PORT}
+ - DB_NAME=${DB_NAME}
+ - DB_USER=${DB_USER}
+ - DB_PASSWORD=${DB_PASSWORD}
+ command: bash -c "/usr/local/bin/wait-for-it ${DB_HOST}:${DB_PORT} -t 60 && python manage.py migrate && gunicorn --bind 0.0.0.0:${APP_PORT} dates_pr_cbs.wsgi:application" # Команда для запуска приложения после того как БД будет готова
+ volumes:
+ - .:/app/calendar # Монтирование текущей директории в контейнер
+ nginx: # Сервис веб-сервера Nginx
+ build:
+ context: ./nginx # Путь к Dockerfile для сборки образа
+ ports:
+ - "8080:80" # Проброс порта 8080 на порт 80 контейнера (HTTP)
+ - "443:443" # Проброс порта 443 на порт 443 контейнера (HTTPS)
+ environment:
+ NGINX_SERVER_NAME: ${NGINX_SERVER_NAME} # Настройка переменных среды для Nginx
+ APP_PORT: ${APP_PORT}
+ depends_on:
+ - calendar # Зависимость от сервиса calendar (приложения календаря)
+ volumes:
+ - ${SSL_FOLDER_PATH}:/etc/nginx/ssl # Монтирование папки SSL в контейнер
diff --git a/media/persons_images/doonja.png b/media/persons_images/doonja.png
new file mode 100644
index 0000000..2a08e59
Binary files /dev/null and b/media/persons_images/doonja.png differ
diff --git a/nginx/Dockerfile b/nginx/Dockerfile
new file mode 100644
index 0000000..3db1f3e
--- /dev/null
+++ b/nginx/Dockerfile
@@ -0,0 +1,9 @@
+# Используем базовый образ Nginx версии 1.25.4
+FROM nginx:1.25.4
+
+# Копируем файл шаблона конфигурации внутрь контейнера
+COPY ./default.conf.template /etc/nginx/templates/
+
+# Открываем порты для внешних подключений
+EXPOSE 80
+EXPOSE 443
diff --git a/nginx/default.conf.template b/nginx/default.conf.template
new file mode 100644
index 0000000..757364a
--- /dev/null
+++ b/nginx/default.conf.template
@@ -0,0 +1,27 @@
+server {
+ listen 80; # Слушаем HTTP-порт 80
+ server_name ${NGINX_SERVER_NAME}; # Устанавливаем имя сервера на основе переменной NGINX_SERVER_NAME
+
+ # Перенаправляем все HTTP-запросы на HTTPS
+ return 301 https://${NGINX_SERVER_NAME}$request_uri;
+}
+
+server {
+ listen 443 ssl; # Слушаем HTTPS-порт 443 с поддержкой SSL
+ server_name ${NGINX_SERVER_NAME}; # Устанавливаем имя сервера на основе переменной NGINX_SERVER_NAME
+
+ # Настраиваем SSL сертификаты и ключи
+ ssl_certificate /etc/nginx/ssl/server.crt;
+ ssl_certificate_key /etc/nginx/ssl/server.key;
+ ssl_trusted_certificate /etc/nginx/ssl/trusted.pem;
+
+ location / {
+ # Проксируем запросы на веб-сервис (calendar) через порт APP_PORT
+ proxy_pass http://calendar:${APP_PORT};
+ # Устанавливаем заголовки для прокси-сервера
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ }
+}
diff --git a/postgres/Dockerfile b/postgres/Dockerfile
new file mode 100644
index 0000000..de2c71f
--- /dev/null
+++ b/postgres/Dockerfile
@@ -0,0 +1,11 @@
+FROM postgres:16.2
+
+# Установка русской локали
+RUN apt-get update \
+ && apt-get install -y locales \
+ && sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen \
+ && dpkg-reconfigure --frontend=noninteractive locales \
+ && update-locale LANG=ru_RU.UTF-8
+
+# Устанавливаем переменную окружения LANG в значение русской локали
+ENV LANG ru_RU.UTF-8
diff --git a/requirements.txt b/requirements.txt
index a2a5cf5..fa940a7 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,6 +3,8 @@ branca==0.5.0
certifi==2021.10.8
charset-normalizer==2.0.12
Django==4.0.4
+gunicorn==21.2.0
+psycopg2-binary==2.9.9
django-extensions==3.1.5
djangorestframework==3.13.1
fontawesomefree==6.1.1
diff --git a/wait-for-it b/wait-for-it
new file mode 160000
index 0000000..81b1373
--- /dev/null
+++ b/wait-for-it
@@ -0,0 +1 @@
+Subproject commit 81b1373f17855a4dc21156cfe1694c31d7d1792e
(END)
**YouGile** – это современная система управления проектами и задачами. Она предоставляет бесплатную онлайн-версию, где каждая задача представлена в виде чата. Для команд до 10 человек она доступна бесплатно без ограничений по функциональности¹. Вот некоторые ключевые особенности YouGile:
1. **Чат-ориентированный подход**: Каждая задача в системе представлена в виде чата, что упрощает коммуникацию между участниками проекта.
2. **Мессенджер**: YouGile обладает полноценным мессенджером, который сочетает удобство социальных сетей с функциональностью для работы над проектами.
3. **Гибкая доска задач**: Система предоставляет 47 инструментов для удобной работы на доске, включая дедлайны, исполнителей, ресурсы и свободные поля.
4. **Подзадачи**: Для больших и растущих процессов можно создавать бесконечное дерево подзадач.
5. **Гибкая система прав**: YouGile предлагает 108 опций для точной настройки ролей.
6. **Многоплатформенность**: Вы можете использовать YouGile на компьютере и телефоне.
7. **Коробочная версия**: Для максимальной безопасности и возможности развёртывания на своем сервере.
Для начинающих проектов доступна бесплатная версия, а для более крупных проектов – безопасное коробочное решение¹². Если вы хотите быстро ознакомиться со всеми функциями системы, рекомендую просмотреть бесплатное обучение, которое поможет вам легко освоить YouGile³.
(1) Современная система управления проектами и задачами. Бесплатная онлайн .... https://ru.yougile.com/.
(2) Бесплатное обучение системе управления проектами. https://bing.com/search?q=%d0%98%d0%b7%d1%83%d1%87%d0%b8%d1%82%d1%8c+%d0%b8+%d0%bf%d1%80%d0%be%d0%b0%d0%bd%d0%b0%d0%bb%d0%b8%d0%b7%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c+%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d1%83+%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f+%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b0%d0%bc%d0%b8+YouGile.
(3) Бесплатное обучение системе управления проектами. https://ru.yougile.com/training.
(4) 110 функций системы управления проектами за 12 минут — обучение YouGile .... https://www.youtube.com/watch?v=2G1ZiIzI8wo.
Для проверки воспроизводимости ошибок и доработок на сайте вам потребуется выполнить следующие шаги:
1. **Доступ к документу:**
- Получите доступ к документу, в котором указаны страницы для тестирования, описание ошибок и предложения для улучшения.
- Удостоверьтесь, что у вас есть права на редактирование этого документа.
2. **Проверка страниц:**
- Откройте каждую страницу, указанную в документе, поочередно, начиная с самой верхней.
- Прокликайте все ссылки на указанных страницах и проверьте их работоспособность.
3. **Проверка с разных устройств:**
- Откройте каждую страницу на разных устройствах: компьютере, телефоне и планшете.
- Убедитесь, что отображение страниц корректно на всех устройствах.
4. **Обратите внимание на следующие аспекты:**
- Корректность отображения текста и изображений.
- Логика расположения разделов и информации на странице.
- Проверьте соответствие активных ссылок и их актуальность.
5. **Формирование отчета:**
- Внесите комментарии по каждой странице в соответствующий столбец документа.
- Приложите скриншоты с ошибками, если они обнаружены.
- Если все работает корректно, отметьте это в столбце.
6. **Предложения для улучшения сайта:**
- Подготовьте предложения по улучшению сайта на основе обнаруженных ошибок и недочетов.
8. **Дополнительные комментарии:**
- По окончании проверки, оставьте дополнительные комментарии, если есть еще какие-то замечания или предложения по улучшению функционала сайта.
Эти шаги помогут вам систематизировать и выполнить проверку воспроизводимости ошибок и доработок на сайте, а также предоставить полный отчет по результатам тестирования.
\ No newline at end of file
На веб-сайте https://pr-cbs.ru используются различные технологии для обеспечения его функциональности и удобства использования:
1. API Центральной библиотеки им. Маяковского и API Яндекс Метрики и Яндекс Карт: Используются для доступа к различным сервисам и данным, таким как информация о библиотеках и аналитика посещаемости.
2. Bootstrap: Фреймворк для разработки адаптивных и стилизованных веб-интерфейсов, предоставляющий готовые компоненты и стили для упрощения создания пользовательского интерфейса.
3. Docker Compose: Инструмент для оркестрации контейнеров Docker.
4. Freemarker: Шаблонизатор для динамической генерации веб-страниц, позволяющий вставлять переменные, условия и циклы для создания HTML-кода.
5. HTML/CSS/JavaScript: Основные языки для создания веб-страниц, обеспечивающие их структуру, стили и интерактивность.
6. jQuery и jQuery UI: JavaScript-библиотеки для создания интерактивных элементов интерфейса, таких как всплывающие окна и вкладки.
7. Liferay: Платформа с открытым исходным кодом для создания веб-приложений и корпоративных порталов, предоставляющая широкий спектр инструментов для разработки, управления контентом и взаимодействия с пользователями.
8. Lo-Dash: Библиотека утилит для JavaScript, обеспечивающая дополнительные методы для работы с данными.
9. Moment.js: Библиотека для работы с датами и временем в JavaScript.
10. Nginx: Веб-сервер и прокси-сервер для обработки запросов и доставки статического контента.
11. React: JavaScript-библиотека для создания автоматически обновляемых компонентов пользовательского интерфейса.
12. Сетевой контент: Используется для структурирования информации на портале, включая создание страниц, разделов, меню и отображение контента.
13. Виджеты: Используются для организации и отображения контента на страницах портала, таких как новости, календарь событий и поисковые формы.
14. YUI 3 и Closure Library: JavaScript-фреймворки с расширенными инструментами для создания веб-приложений и пользовательского интерфейса.
Эти технологии совместно создают удобный и функциональный веб-сайт, который удовлетворяет потребности пользователей и администраторов.
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment