Предыдущие части: POST-запросы, GET-запросы, Основы HTML, Виртуальные хосты, IP-адреса и DNS, Ставим Apache, Порты и сокеты, Введение
В жизни каждого веб-разработчика наступает момент, когда всё делится на фронтэнд и бэкэнд. Что это такое?
Когда мы работаем с сервером, это всегда происходит через канал связи. А у канала связи, соответственно, есть два конца. Конец – это End. С одного конца сидит пользователь. У пользователя есть браузер, который показывает ему сайт. Это – передний конец, то есть Front End. Мы видим как бы "витрину" сайта, его лицо. На втором конце канала сидит сервер. Мы не видим его и не видим то, что он делает. А делает он ужасные вещи зачастую тяжёлую и сложную работу, чтобы показать нам витрину. Это – задний конец, Back End.
Веб-сервер Apache, который мы установили, является бэкэндом, но не может выполнять никакой работы, кроме отдачи файлов, которые мы попросим. Чтобы сайт мог полноценно работать, включая такие сервисы, как регистрация пользователей, поиск, форумы, соцсети и т.д., ему нужны серверные скрипты, которые и будут выполнять всю необходимую работу.
Серверные скрипты могут быть написаны практически на любом языке программирования – C, PHP, Java, Ruby, Python, Lua и т.д.
Как это работает
Мы специальным образом настраиваем веб-сервер Apache. Мы говорим ему – если у тебя попросят файл, допустим, который заканчивается на ".php", то ты не ищи этот файл на диске и не отдавай его. Вместо этого запусти программу php.exe, передай ей все данные, которые тебе прислали, и пусть она сама работает. Когда она отработает, она отдаст тебе ответ, и этот ответ ты пошлёшь назад браузеру.
Когда веб-сервер передаёт управление в скрипт, то скрипт, как совершенно самостоятельная программа, может сделать всё что угодно – обратиться к базе, сохранить файл, рассчитать какую-нибудь формулу, пережать картинку и т.д., и вернуть серверу любой ответ. Результат работы скрипта уже никак не связан с содержимым файла, который запрашивался у сервера.
Ставим PHP
Как я говорил, серверные скрипты могут быть на любом языке, но мы будем использовать PHP как наиболее распространённый. К тому же недавно вышла версия PHP 8 с многими обновлениями.
Качаем отсюда:
https://windows.php.net/download#php-8.0
Нам нужна сборка VS16 x64 Thread Safe в виде zip-архива:
PHP не требует установки. Просто скачайте архив и распакуйте его в какую-нибудь папку. Я выбрал папку c:\usr\dev\php.
Теперь вы можете запустить из командной строки php.exe и убедиться, что программа работает:
Настраивать пока ничего не нужно, но в папке есть файл php.ini-development, это образец файла настроек для разработчика. Скопируйте его с именем php.ini, и у вас будет рабочий файл настроек.
Настраиваем Apache
Теперь нужно связать веб-сервер Apache с модулем PHP. Сначала добавим тип файла "php". Для этого надо зайти в папку, где установлен Apache, открыть файл conf/mime.types с помощью любого текстового редактора, и в конец этого файла добавить строчку:
application/x-httpd-php php
Затем открываем файл conf/httpd.conf и в его конец добавляем:
PHPIniDir "c:/usr/dev/php"
LoadModule php_module "c:/usr/dev/php/php8apache2_4.dll"
Эти две строчки объясняют Apache, где находится корневая папка PHP, и откуда загружать PHP-модуль.
Проверка работы сайта с PHP
Зайдём в каталог, где хранится наш сайт test. Сейчас там есть один файл index.html. Сделаем ещё один файл, index.php:
<html><body>
<h1><?php echo "Hello from PHP!" ?></h1>
</body></html>
Он почти не отличается от index.html, но в нём есть вставка <?php ... ?>, в ней содержится инструкция языка PHP echo (печать на экране).
Теперь нужно перезапустить сервер Apache, и набрать в браузере адрес сайта test:
http://test
Мы увидим страницу с надписью "This is Test". Сервер отдал нам страницу index.html. Теперь попросим показать PHP-страницу:
http://test/index.php
Если бы у нас не был настроен PHP-модуль, сервер отдал бы эту страницу как есть. Но сейчас он видит, что это php-страница, и отдаёт этот запрос в модуль PHP. Скрипт отрабатывает, и мы видим:
Наконец, изменим поведение Apache, чтобы при запросе без файла он отдавал не index.html, а index.php. Опять откроем файл conf/httpd.conf и сделаем поиск строки DirectoryIndex:
Параметр DirectoryIndex задаёт, какой файл отдавать по умолчанию. Там записано index.html (поэтому Apache и отдаёт его). Но можно указать несколько файлов, тогда Apache отдаст тот, который найдётся первым. На картинке выше я уже добавил index.php в первую позицию. Значит, если Apache найдёт в папке index.php, то отдаст его в первую очередь.
Снова перезапустим Apache и проверим сайт test в браузере:
http://test
Сейчас мы обращаемся к корню сайта, и значит, Apache по умолчанию должен отдать index.php. Мы видим сообщение "Hello from PHP!" и значит, всё сработало правильно.
Всё, мы получили рабочую среду разработки сайта и теперь можно заниматься исключительно программированием на PHP.
Читайте дальше: