Вам не книга нужна, вам сюда нужно:
phpfaq.ru/newbie/na_tanke
А так все просто, есть Linux - это операционная система, такая же как Windows, или Mac OS, или FreeBSD или еще 1000 различных вариантов.
Есть веб-сервер, например apache или nginx. Их задача принять запрос от пользователя (из браузера), как-то его обработать и отправить ответ назад пользователю. Чаще всего это происходит по протоколу http.
А теперь рассмотрим обработку запроса несколько детальнее, допустим url
example.com/index.html, тогда веб-сервер видит, что запрашивается файл /index.html, идет в директорию, которая является корневой для веб-сервера (пресловутый DOCUMENT_ROOT) и ищет в ней файл index.html. Если файл такой есть, то веб-сервер открывает этот файл и начинает его читать и прочитанное отправлять назад в браузер пользователя. Так происходит и с картинками.
Гораздо интереснее становится тогда, когда пользователь запрашивает файл вида index.php. Тогда сервер (например apache) видит, что файл этот не простой, а файл особого типа (грубо говоря типа PHP), и он должен быть обработан особенным образом, поэтому ссылка на файл передается интерпретатору языка PHP (в случае с apache это обычно mod_php, с nginx - php-fpm), тот в свою очередь открывает этот файл, читает его, превращает его в байт-код, и затем запускает этот байт-код. Байт код выполняется, генерирует html и потом этот html передается назад веб-серверу, который пересылает этот html в браузер клиента.
А код на PHP уже внутри себя содержит команды взаимодействия с базой данных - язык запросов SQL. А база, точнее система управления базами данных (например MySQL) представляет собой отдельную программу, которая может быть запущена на той же машине, что и веб-сервер.