оригинальная версия версия для слабовидящих контрастная версия выключить изображения включить изображения тёмная версия светлая версия RSS FEED K2 NEWS
☰☰
Среда, 06 Январь 2021 12:51

Создаём простой сайт на python3

Первое, что сразу хочется отметить, что обзор изначально предполагает работу на Kali Linux (ну или другой Linux, например, Debian или Ubuntu), у меня есть необходимость в том, чтобы «привыкнуть» к этой операционной системе (а кроме того, приучить ещё пару-тройку человек), и лучше всего это делается при выполнении неких «упражнений».

Создаём простой сайт на python3

Несмотря на то, что основной инструментарий Kali Linux предназначен, чтобы ломать, я сторонник теории, что лучше всех «ломает» тот, кто строил. Уж эти так ломают, как другие никогда не справятся. Ведь не зря говорят «ломать не строить, душа не болит», вот и будем строить с душой то, что в будущем придётся ломать (а там и знать, как защищать).

Первая задача – написать простой сайт на python3. Но, прежде чем у нас будет возможность приступить к самому сайту надо сначала запустить сервер, на котором он будет работать. Для этого мы создадим каталог (папку) в которой будем работать. Свой каталог я назвал «sites».

«По умолчанию» python3 уже имеет свой сервер и нам нужно лишь запустить его, это делается простой командой:

python3 -m http.server --cgi

Но стоит закрыть терминал, как придётся снова и снова вводить эту команду, что не очень-то удобно (особенно человеку привыкшему всё решать путём двух кликов мыши).

Это тоже решаемо, для начала перейдём в каталог:

cd sites

Теперь нам надо создать файл содержимое, которого будет выше написанная строка, в Linux пишем команду:

touch server.py

Вместо server.py Вы можете назвать файл как-нибудь иначе. Я думаю, открыть и добавить текст у Вас проблемы не возникнет, а вот чтобы файл был «исполняемым» (чтобы запускался с двух кликов мыши по нему, это так же требует команды.

При попытке запуска:

./server.py

Получите ответ:

Bash: ./server.py: Отказано в доступе

Причина тому не установленные атрибуты файла, поэтому следующая наша команда:

sudo chmod +x server.py

И запустив:

./server.py

Получаем результат:

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) …

Кстати, localhost и 127.0.0.1 так же будут доступны.

С настройкой и запуском сервера (одним кликом мыши) мы закончили, приступаем к созданию простой страницы сайта (после перейдём к более сложным процедурам). Работать мы будем с CGI-скриптами, а значит сначала создадим каталог (внутри каталога sites) cgi-bin.

Внутри каталога cgi-bin создаём файл hello.py, если у Вас всё ещё запущен сервер, то откройте новое окно терминала:

cd sites/cgi-bin

touch hello.py

Теперь редактируем hello.py:

#!/usr/bin/env python3
print("Content-type: text/html")
print()
print("<h1>Привет мир!</h1>")

Осталось сделать скрипт исполняемым, иначе сервер откажется его запускать:

chmod +x hello.py

Теперь запустите сервер из каталога sites (папка cgi-bin должна лежать внутри него) и откройте в браузере адрес:

http://localhost:8000/cgi-bin/hello.py

Если всё сделано правильно, на странице появится заголовок «Привет мир!». Первый сайт на Python 3 готов.

Если вместо русских букв Вы видите «кракозябры», добавьте кодировку в заголовок ответа:

print("Content-type: text/html; charset=utf-8")

Если страница не открывается, проверьте три самых частых причины. Ошибка 404 означает, что сервер запущен не из каталога sites. Ошибка 403 или сообщение о неисполняемом скрипте значит, что вы забыли chmod +x. Ошибка 500 чаще всего возникает из-за первой строки #!/usr/bin/env python3 или из-за пропущенного пустого print() после заголовка.

Заметьте, что наш server.py на самом деле обычный shell-скрипт с одной командой. Чтобы система точно знала, чем его запускать, добавьте первой строкой интерпретатор:

#!/bin/bash
python3 -m http.server --cgi

И последнее про безопасность: по умолчанию сервер слушает 0.0.0.0, то есть ваш сайт виден всем устройствам в локальной сети. Для упражнений достаточно доступа только с вашего компьютера:

python3 -m http.server --cgi --bind 127.0.0.1

Встроенный сервер годится только для обучения. CGI в Python вообще считается устаревшей технологией (модуль cgi удалён в Python 3.13), поэтому дальше мы перейдём к более современным инструментам, например к Flask.

Спонсоры: