Конечно, можно заморочиться и собрать PHP из исходников. Кроме того, вам придётся собрать и Apache из исходников с добавлением модуля PHP (libapache2-mod-php).
К сожалению или к счастью, у большинства разработчиков навык сборки чего-либо из исходников безвозмездно утрачен. Разве что расширения для того же PHP (pecl) иногда приходится собирать.
Как вариант, предлагаю воспользоваться такой замечательной штукой, как контейнеризация, а именно Docker-ом. На текущий момент времени, это наиболее изящное и правильное решение. В приведённый ниже пример добавил линкование с СУБД MySQL
docker network create mysql_net
docker run --name app --net mysql_net -d -p 8080:80 \
-v /host/to/path/app:/var/www/app/ \
-v /host/to/path/config_apache:/etc/apache2/sites-enabled/ \
romeoz/docker-apache-php:5.4
, где
/host/to/path/app
- путь к директории с вашим приложением (от корня), в данном случае, CMS Битрикс
/host/to/path/config_apache
- путь к директории с вашим apache-конфигом. Можете посмотреть, как выглядит базовый файл конфигурации
Далее, поднимем контейнер с СУБД:
docker run --name db --net mysql_net -d \
-v /host/to/path/data:/var/lib/mysql \
romeoz/docker-mysql:5.5
, где
/host/to/path/data
- директория с вашими данным (БД).
В CMS Битрикс в качестве хоста в настройках БД, необходимо указать
db
, т.к. контейнер СУБД имеет такое имя -
--name db
.
Ваше приложение будет доступно по адресу
http://localhost:8080
. Для красоты можете задать в
/etc/hosts
свой домен, к примеру,
127.0.0.1:8080 myapp
.
Если вы привыкли править БД с помощью web-клиента phpmyadmin, то
вот здесь есть инструкция, как поднять официальный контейнер и для него. На вашем месте я бы воспользовался иным другим клиентом -
свободным или не свободным. К примеру, во всех продуктах от JetBrains, в том числе, и в IDE PHPStorm, встроен отличный инструмент DataGrip, ранее известный, как 0xDBE.
Естественно, есть необходимость в этом немного разобраться, но, поверьте, оно того стоит. За этим подходом будущее. Плюс не придётся засирать свою хост-систему всяким мусором, ведь контейнер всегда можно убить, а образ породивший его удалить.