Ответы:
Вам нужно сделать следующее:
apt-cache showpkg <pachagename>
Приведенная выше команда отобразит список доступных версий для этого пакета. Затем выберите нужную версию и выполните следующие действия.
apt-get install <packagename>=<complete version name>
Пример:
apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7
Как установить Apache 2.2 в дистрибутив Ubuntu, в котором его нет в репозиториях.
Требования
Для этого вам нужно установить пакет build-essentials.
~# sudo apt-get install build-essential
Чтобы дать Apache возможность сжимать вывод в браузерах, которые его поддерживают, вам нужно установить zlib. Загрузите текущий выпуск с zlip Hompage (zlib-1.2.11.tar.gz на момент написания), распакуйте его, перейдите к извлеченной папке, соберите и установите.
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=/usr/local
make
sudo make install
Установите Apache 2.2
Загрузите текущую версию со страницы загрузки Apache (httpd-2.2.32.tar.gz на момент написания), распакуйте ее, перейдите к извлеченной папке, соберите и установите.
wget http://www-eu.apache.org/dist/httpd/httpd-2.2.32.tar.gz
tar -xvf httpd-2.2.32.tar.gz
cd httpd-2.2.32/
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-deflate --enable-proxy --enable-proxy-balancer --enable-proxy-http
make
sudo make install
Запустите Apache:
sudo /usr/local/apache2/bin/apachectl start
Проверьте, все ли в порядке
Перейдите на http: // localhost в вашем браузере, где вы должны увидеть сообщение «Это работает!».
В качестве альтернативы вы можете сделать это через терминал:
wget -qO- http://localhost | grep "It works!"
Который должен выводить что-то вроде этого в терминале:
<html><body><h1>It works!</h1></body></html>
Создать «сервис» для Apache2
sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22
Подсказка: теперь вы можете вызвать apachectl с помощью службы sudo apache22 .
Заставить Apache запускаться во время загрузки
sudo sed -i '2i #\n### BEGIN INIT INFO\n# Provides: apache2\n# Required-Start: $remote_fs\n# Required-Stop: $remote_fs\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Description: apache2\n# Short-Description: The Apache webserver\n### END INIT INFO' /etc/init.d/apache22
sudo /usr/sbin/update-rc.d apache22 defaults
Безопасный Apache
sudo service apache22 stop
sudo adduser --system apache
sed -i -e 's/User daemon/User apache/g' /usr/local/apache2/conf/httpd.conf
sed -i -e 's/Group daemon/Group nogroup/g' /usr/local/apache2/conf/httpd.conf
sudo service apache22 start
Проверьте новые настройки
ps -aux | grep httpd
Если вывод терминала последней команды показывает несколько строк, начинающихся с «apache», то все в порядке.
Настройте свой сайт (ы)
Если вы хотите настроить Apache только для одного сайта, просто отредактируйте httpd.conf
nano /usr/local/apache2/conf/httpd.conf
Основные параметры, которые вы можете изменить:
ServerName www.example.com:80
DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Если вы хотите настроить более одного сайта, загляните на httpd-vhosts.conf
nano /usr/local/apache2/conf/httpd.conf
Вам нужно будет добавить раздел <Directory> с <VirtualHost>, аналогичным указанному выше, но для корневого каталога документа VitualHost. Например:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
<Directory "/usr/local/apache2/docs/dummy-host.example.com">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
/etc/init.d/apache2
файл с совершенно другим содержанием.
sudo service apachectl stop
не останавливает службу.
Смотрите руководство по Ubuntu по закреплению пакетов :
Редактировать файл /etc/apt/preferences
В файле «предпочтений» происходит фактическое закрепление. Чтобы закрепить пакет, установите для него более высокий номер. Вот пример:
Package: apache2
Pin: release n=raring
Pin-Priority: 1000
Тест перед запуском apt-get update
или apt-get install
сapt-cache policy apache2
Смотрите man apt_preferences
подробности. Я выбрал raring
выпуск пиннинга , потому что таким образом вы все равно будете получать обновления в ветке 2.2.x. Не забывайте, что вы должны сделать пакет доступным для APT, добавив raring
URL-адреса хранилища.
Обновление :
Как raring
и EOL, вы можете использовать все еще поддерживаемые precise
или архивные raring
пакеты с http://old-releases.ubuntu.com .
Использование этого как /etc/apt/sources.list.d/raring.list
позволит вам установить более старые пакеты:
deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ raring-proposed main restricted universe multiverse
raring
. Конечно, если вы хотите использовать precise
версию, /etc/apt/preferences
должны быть изменены соответственно.
Для установки apache2.2 используйте следующий процесс:
В более позднем дистрибутиве (например, 16.04) я скачал 2.2.31 с сайта Apache.
Я построил его, используя следующую конфигурацию:
./configure --enable-so --enable-ssl --with-included-apr --enable-mods-shared=all --enable-load-all-modules --enable-rewrite --enable-proxy --enable-proxy_connect --enable-proxy_http --enable-proxy_ajp --enable-authn_alias --with-npm=prefork --enable-proxy_balancer --enable-proxy_ftp --enable-cache --enable-suexec --enable-disk_cache > conf.txt
Затем, конечно, настроить файлы httpd.conf и ssl.conf.
После этого я просто запускаю ./httpd -k start
И это работает!
обратите внимание, что я добавил apache2.4 через apt-get, но никогда не удалял его. Это означает, что после запуска системы мне нужно завершить процесс apache2. И тогда я могу запустить apache2.2. Я должен был установить apache2.4, чтобы использовать apachectl, но позже отменил это, потому что я использую ./httpd
Вы обновились с Ubuntu 13.04 до 13.10? Невозможно вернуть Apache 2.2, не выходя за пределы репозиториев пакетов Ubuntu. Лучше просто исправить конфигурацию Apache, чтобы она работала с 2.4.