После строительстваhttp-сервер apache2из источника (2.4.23) У меня нет команд a2dissite
и a2ensite
.
Конфигурация была:
./configure --with-included-apr --prefix=/usr/local/apache2
Когда я бегу:
whereis apache2
Я получил:
apache2: /etc/apache2 /usr/local/apache2
Но which apache2
ничего не показывает, может быть, нужна какая-то символическая ссылка на /usr/bin
? http://localhost
работает нормально.
Информация о версии источника:
/usr/local/apache2/bin/apachectl -v Server version: Apache/2.4.23 (Unix) Server built: Nov 1 2016 22:52:26
Версия для Linux:
linux mint 17
3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64
решение1
Я предполагаю, что вы построили из исходного кода, доступного на Apache Software Foundation. Скрипты a2en...
(и поддерживающая конфигурация) специфичны для Debian; вы найдете исходный код в соответствующемРепозиторий Debian.
Лучшим вариантом для сборки httpd
сервера из исходного кода и сохранения возможности его использования a2ensite
является использование исходного пакета Debian:
sudo apt-get install devscripts dpkg-dev build-essential
sudo apt-get build-dep apache2
dget http://httpredir.debian.org/debian/pool/main/a/apache2/apache2_2.4.23-5.dsc
cd apache2-2.4.23
dpkg-buildpackage -us -uc
Первые две команды устанавливают пакеты, необходимые для сборки apache2
; затем dget
загружают и извлекают исходный пакет, dpkg-buildpackage
собирают его и создают серию .deb
пакетов, которые вы можете установить вручную, dpkg
как обычно.
Если build-dep
строка не работает, то эквивалентно следующее apache2
:
sudo apt-get install debhelper lsb-release libaprutil1-dev libapr1-dev libpcre3-dev zlib1g-dev libnghttp2-dev libssl-dev perl liblua5.2-dev libxml2-dev autotools-dev gawk dh-systemd
решение2
Не делайте символических ссылок на /usr/bin
. Это крайне плохая идея, и вам не следует этого делать.
Почему? Потому что большая часть /usr
, включая /usr/bin
, зарезервирована для менеджера пакетов. Все, что не является менеджером пакетов, включая вас, не должно трогать вещи там.
/usr/local
существует для предоставления места для установки локально скомпилированного программного обеспечения. Обычно вы указываете /usr/local
как префикс, а не /usr/local/apache2
. (Кстати, префикс — это то, что добавляется к пути bin, пути библиотеки и т. д. Так, например, инструменты командной строки Apache будут помещены в $PREFIX/bin
, его библиотеки будут помещены в $PREFIX/lib/apache2
и т. д.)
Решение вашей проблемы — добавить /usr/local/apache2/bin
в список путей, которые ваша оболочка использует для поиска двоичных файлов. Обычно это называется $PATH
или просто «ваш путь», и его можно изменить с помощью команды типа:
export PATH="/usr/local/apache2/bin:$PATH"
Вы можете поместить его в один из файлов запуска вашей оболочки, чтобы сделать его постоянным.
При всем при этом я подозреваю, что вы все равно не найдете a2ensite
или a2dissite
. Если я правильно помню, обе эти команды были добавлены разработчиками Debian, а затем унаследованы оттуда Mint. Поэтому они не включены в исходный код Apache. Стивена Киттаотличный ответрасскажет вам, как получить эти команды.