Настройка сервера под Windows 10 для Python
Некоторое время тому назад я начал читать книгу Нейтана Яу. Искусство визуализации в бизнесе. Я думал усовершенствовать свои знания Excel, но оказалось, что автор больше ориентирован не на Excel, а на программирование, и его любимым языком является Python. Решив немного больше узнать об этом языке, я взялся за книгу Майка МакГрата Программирование на Python для начинающих. В одной из глав Майк предложил запустить web-сервер на локальном ПК и сконфигурировать его для интерпретации скриптов на Python. С ходу у меня это не получилось, и помощи от форумчан также не дождался. Выручили коллеги по работе. Один рекомендовал материал на форуме Stack Overflow, а второй помог, когда возникли проблемы. Итак…
Кликните правой кнопкой мыши на меню Пуск, и выберите Программы и компоненты –> Включение или отключение компонентов Windows. В открывшемся окне раскройте строку Службы IIS, и поставьте галочки напротив Службы Интернета. Убедитесь, что интерфейс CGI включен (рис. 1). Включите также Консоль управления ISS (рис. 2). Нажмите Ok. Windows применит изменения. Это может занять несколько минут.
Скачать заметку в формате Word или pdf
Рис. 2. Включение консоли управления IIS
Скачайте программу Python с python.org. Я установил версию Python 3.5.1 с помощью Windows x86-64 web-based installer. Убедитесь, что вы установили версию x64, если у вас 64-разрядная версия Windows.
Разместите файлы-скрипты Python в рабочей папке, например, С:\MyScripts.
Установите разрешения на файлы в каталоге С:\MyScripts чтобы разрешить IIS читать и исполнять файлы. Для этого пройдите по меню Пуск –> Командная строка (администратор) и выполните три команды:
chdir С:\MyScripts
icacls . /grant » NT AUTHORITY\IUSR:(OI)(CI)(RX) »
icacls . /grant » Builtin\IIS_IUSRS:(OI)(CI)(RX) «
Откройте диспетчер служб IIS: Пуск –> Панель управления –> Система и безопасность –> Администрирование –> Диспетчер служб IIS. В левой части окна кликните правой кнопкой мыши на Default Web Site, и выберите Добавить приложение (рис. 4).
Рис. 4. Добавить приложение
Укажите виртуальный путь как /py и физический путь к файлам (рис. 5).
Рис. 5. Настройки нового приложения
В диспетчере служб IIS, добавьте сопоставление сценария для *.ру, и программы python.exe. Кликните на пиктограмме Сопоставление разработчиков (рис. 6).
Рис. 6. Сопоставление разработчиков
Выберите действие (в правой части окна) – Добавить сопоставление сценария. Настройте новый сценарий (рис. 7).
Рис. 7. Добавить сопоставление сценария
Настройте физическую папку Default Web Site (web-сайта по умолчанию, рис. 8). Теперь при наборе в web-браузере адреса localhost, будем попадать не в папку по умолчанию – С:\inetpub\wwwroot, а в папку C:\MyScripts.
Рис. 8. Изменение физической папки, открываемой при наборе в браузере адреса localhost; чтобы увеличить картинку, кликните на ней правой кнопкой мыши и выберите опцию Открыть картинку в новой вкладке
Для удобства работы с локальным web-сервером добавьте возможность видеть содержимое папок. Запустите Диспетчер служб IIS и откройте пиктограмму Просмотр каталога (рис. 9).
Кликните в правой части окна Включить (рис. 10).
Рис. 10. Включить опцию Просмотр каталога
Теперь, если вы в браузере наберете localhost, то увидите содержимое папки С:\MyScripts (рис. 11).
Рис. 11. Содержимое папки С:\MyScripts, наблюдаемое через web-браузер
CGI: пишем простой сайт на Python. Часть 1: Hello world
Проще всего создать динамические страницы на Python при помощи CGI-скриптов. CGI-скрипты — это исполняемые файлы, которые выполняются веб-сервером, когда в URL запрашивается соответствующий скрипт.
Сегодня я расскажу про то, как написать Hello world, как CGI-скрипт.
Настройка локального сервера
В Python уже есть встроенный CGI сервер, поэтому его настройка элементарна.
Для запуска из консоли (для любителей linux-систем). Запускать нужно из той папки, где мы хотим работать:
Для сидящих на Windows чуть проще будет запуск Python файла (заметьте, что он должен находиться в той же папке, в которой мы планируем работать!):
Теперь откройте браузер и в адресной строке наберите localhost:8000
Если у вас примерно такая же картина, значит, у вас все заработало!
Hello world
Теперь в той папке, где мы запустили сервер, создаём папку cgi-bin (у меня она уже создана).
В этой папке создаём скрипт hello.py со следующим содержимым:
"Первая строка говорит о том, что это Python скрипт (CGI-скрипты можно не только на Python писать).
Вторая строка печатает заголовок. Он обозначает, что это будет html файл (бывает ещё css, javascript, pdf и куча других, и браузер различает их по заголовкам).
Третья строка (просто символ новой строки) отделяет заголовки от тела ответа.
Четвёртая печатает Hello world.
Теперь переходим на localhost:8000/cgi-bin/hello.py
Если у вас не работает, проверьте, установлены ли права на выполнение.
Также в консоли запущенного сервера появляются сообщения об ошибках. Например, убрал скобочку и обновил страницу:
В следующей части мы рассмотрим обработку данных форм и cookies.
Для вставки кода на Python в комментарий заключайте его в теги
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
Простой веб-сервер с использованием Python и Flask
Существует множество способов поднять свой собственный веб-сервер, который будет обрабатывать HTTP запросы пользователей и возвращать им в браузеры результат.
Поскольку мы используем Python в качестве основного языка, библиотеку, упрощающую нам создание веб-сервера, выберем тоже из мира Python.
Flask — это инструмент для веб-сайтов на языке Python. Представляет из себя микрофреймворк со встроенным веб-сервером. Договоримся, что вы используете Linux в качестве операционной системы, либо знаете как выполнить аналоги команд в Windows.
Установка необходимых библиотек
В предыдущей статье вы уже установили и настроили python, pip и virtualenv. Осталось загрузить сам Flask:
Если вы желаете работать с виртуальными окружениями, перейдите в директорию с ним и выполните команду:
Чтобы проверить все ли правильно установилось, вы можете создать файл server.py со следующим содержимым:
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()
Выполнить его можно командой:
По умолчанию, Flask работает на порту 5000. Перейдите по адресу http://localhost:5000 в браузере. Если вы все сделали правильно, на экране отобразится надпись "Hello World!".
Flask позволяет делать много замечательных вещей, например, обрабатывать GET и POST параметры. Более подробно можно ознакомиться со всеми функциями в официальной документации:
Модифицируем скрипт таким образом, чтобы он принимал имя пользователя и выводил на экран приветствие:
from flask import Flask app = Flask(__name__) @app.route("/<username>", methods=['GET']) def index(username): return "Hello, %s!" % username if __name__ == "__main__": app.run(host='0.0.0.0', port=4567)
Теперь скрипт будет работать на 4567 порту, а также принимать от пользователя имя в адресной строке. Перейдите в браузере по ссылке: http://localhost:4567/yourname Вы увидите ответ: "Hello, yourname". Это значит, что сервер успешно работает и возвращает ожидаемую строку.
Настраиваем прокси
Чтобы ваш сайт был доступен другим людям, нужно иметь внешний IP адрес. Если вы знаете, что это такое или у вас есть VPS, вы можете настроить все самостоятельно. Если же вы слышите эти слова первый раз - воспользуйтесь более простым, хотя и не очень универсальным методом, который хорошо описан тут. Суть данного метода заключается в использовании прокси сервера.
В качестве прокси, будем использовать бесплатную программу ngrok. Ее главная задача - держать постоянное соединение и доставлять вам всю полученную от любого человека информацию. Запустите ее командой, передав в качестве параметра любой свободный порт:
В ответ вы получите несколько строчек информации, среди которой будет нечто подобное:
Адрес http://7e8ea9dc.ngrok.io можете смело пересылать своим друзьям, пройдя по нему, они попадут на ваш сайт.
Read more
We talk about interesting technologies and share our experience of using them.
Пишем простой сервер на Python
Ну, начнем как и везде с определений, берите тетрадь и ручку сейчас начнется нудятина. Чтобы мы cмогли написать свой сервер, нужно для начала понимать как он вообще работает, ловите определение:
Сервер – это программное обеспечение, которое ожидает запросов клиентов и обслуживает или обрабатывает их соответственно.
Если объяснять это своими словами, представьте фургон с хот-догами(сервер), проголодавшись, вы(клиент) подходите и говорите повару, что вы хотите заказать(запрос), после чего повар обрабатывает, что вы ему сказали и начинает готовить, в конечном итоге вы получаете свой хот-дог(результат) и сытый радуетесь жизни. Для наглядности посмотри схему.
Околопрактика
Для написания сервера мы будем использовать Python и модуль Socket.
Socket позволяет нам общаться с сервером с помощью сокетов. Весь код я постараюсь пояснять, дабы ты мой дорогой читатель все понял. В конце статьи будет готовый код.
Создайте два файла в одной директории:
Практика
Пишем код для серверной части, так что открывайте файл socket_server.py.
Начнем с импорта модуля и создания TCP-сокета:
Далее весь код будет с комментариями:
s.bind(('localhost', 3030)) # Привязываем серверный сокет к localhost и 3030 порту. s.listen(1) # Начинаем прослушивать входящие соединения conn, addr = s.accept() # Метод который принимает входящее соединение.
Добавим вечный цикл, который будет считывать данные с клиентской части, и отправлять их обратно.
while True: # Создаем вечный цикл. data = conn.recv(1024) # Получаем данные из сокета. if not data: break conn.sendall(data) # Отправляем данные в сокет. print(data.decode('utf-8')) # Выводим информацию на печать. conn.close()
Переходим к клиентской части, весь код теперь пишем в файле socket_client.py.
Начало у клиентской части такое-же как и у серверной.
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Далее подключимся к нашему серверу и отправим сообщение "Hello. Habr!".
s.connect(('localhost', 3030)) # Подключаемся к нашему серверу. s.sendall('Hello, Habr!'.encode('utf-8')) # Отправляем фразу. data = s.recv(1024) #Получаем данные из сокета. s.close()
Заключение
Вот мы с вами и написали свой первый сервер, рад был стараться для вас, ниже будет готовый код.
socket_server.py:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('localhost', 3030)) # Привязываем серверный сокет к localhost и 3030 порту. s.listen(1) # Начинаем прослушивать входящие соединения. conn, addr = s.accept() # Метод который принимает входящее соединение. while True: data = conn.recv(1024) # Получаем данные из сокета. if not data: break conn.sendall(data) # Отправляем данные в сокет. print(data.decode('utf-8')) conn.close()
socket_client.py:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('localhost', 3030)) # Подключаемся к нашему серверу. s.sendall('Hello, Habr!'.encode('utf-8')) # Отправляем фразу. data = s.recv(1024) #Получаем данные из сокета. s.close()