특정 버전으로 Apache를 설치하려면 어떻게해야합니까?


26

우분투 업데이트로 인해 Apache 2.2를 2.4로 업그레이드하는 실수를했습니다. 많은 일이 잘못되었습니다.

이후 버전을 지정하는 방법을 모르겠습니다 apt-get remove apache2. apt-get install apache2항상 2.4를 설치합니다.

어떻게하니?

답변:


22

다음을 수행해야합니다.

apt-cache showpkg <pachagename>

위 명령은이 패키지에 사용 가능한 버전 목록을 표시합니다. 그런 다음 필요한 버전을 선택하고 다음을 수행하십시오.

apt-get install <packagename>=<complete version name>

예:

apt-cache showpkg apache2
apt-get install apache2=2.2.14-5ubuntu8.7

2
나를 위해 보여주는 유일한 버전은 Ubuntu 16에서 2.4입니다. 2.4에는 내 사이트를 완전히 손상시킨 알려진 문제가 있기 때문에 큰 문제입니다.
— felwithe

2
apache2 용 버전 2.2.14-5ubuntu8.7을 찾을 수 없음
— Braian Mellor

감사합니다. 이것은 PPA 경로를 사용하는 것보다 낫습니다.
— M 토마스

5

리포지토리에없는 Ubuntu 배포판에 Apache 2.2를 설치하는 방법.

요구 사항

이를 위해 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

힌트 : 이제 sudo service apache22를 사용 하여 apachectl을 호출 할 수 있습니다 .

부팅 할 때 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

안전한 아파치

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"로 시작하는 일부 행이 표시되면 모든 것이 정상입니다.

사이트 구성

하나의 사이트에 대해서만 아파치를 구성하려면 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

VitualHost의 문서 루트에 대해 위의 <VirtualHost>와 함께 <Directory> 섹션을 추가해야합니다. 예를 들면 다음과 같습니다.

<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>

이 지침에 따라 dzenan @ ubuntu16-i386 : ~ / httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl 기본값 insserv : script apachectl : service apache2가 이미 제공되었습니다! insserv : 지금 나가기! update-rc.d : 오류 : insserv가 스크립트 헤더를 거부했습니다
— Dženan

실제로 Ubuntu 16.04에는 /etc/init.d/apache2완전히 다른 내용의 파일 이 이미 있습니다.
— Dženan

문제가되는 파일을 제거하면 해당 단계가 완료되지만 sudo service apachectl stop서비스는 중지되지 않습니다.
— Dženan

"sudo service apachectl stop"은 부팅시 Apache를 시작 하도록 설정의 단계를 따르지 않은 경우에만 작동하지 않습니다 . 내 대답을 읽은 후에 나는 그것을 변경하기로 결정했습니다 ... 첫째, apachectl은 실제로 "서비스"의 나쁜 이름이며 그것을 해당 섹션의 일부로 만드는 것은 나빴습니다. 따라서 대신 Apache2에 대한 "서비스"작성 의 단계에 따라 sudo service apache22 start / stop을 수행합니다 .
— Johano Fierra

나는이 접근법을 포기하고 Apache 2.4와 호환되도록 구성 파일을 업데이트하기로 결정했습니다. 그런 식으로 두통이 줄어 듭니다. 그러나 자세한 답변 주셔서 감사합니다!
— Dženan

4

패키지 고정 에 대한 우분투 하우투를 참조하십시오 .

파일 편집 /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 분기에서 여전히 업데이트를받을 수 있기 때문에 고정 릴리스를 선택했습니다 . raring의 리포지토리 URL 을 추가하여 APT에서 패키지를 사용할 수 있도록해야 합니다.

업데이트 :

raringEOL과 마찬가지로 http://old-releases.ubuntu.com 에서 여전히 지원되는 패키지 precise또는 아카이브 된 raring패키지를 사용할 수 있습니다 .

이것을 사용하면 /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의 리포지토리 URL을 추가하기위한 명령을 추가 할 수 있습니까? 나는 올바른 것을 찾지 못하는 것 같습니다.
— Ravish Bhagdev 12

내 답변을 업데이트했습니다.
— fuero

캐치, APT 미러리스트를로 수정했습니다 raring. 물론 precise버전 을 사용하려면 /etc/apt/preferences그에 따라 변경해야합니다.
— fuero

고마워 어쨌든 웜 캔으로 판명되었습니다 ... 지정된 단계를 수행 한 후 다음과 같이 VM 경로를 가져와야합니다 (또한 install -f 옵션 및 정리 시도). 다음 패키지는 종속성이 없습니다. apache2 : apache2-mpm-worker (= 2.2.22-1ubuntu1.7)에 따라 달라 지지만 설치되지 않거나 apache2-mpm-prefork (= 2.2.22-1ubuntu1.7)는 아니지만 설치 또는 .... 등
— Ravish Bhagdev

2

apache2.2를 설치하려면 다음 프로세스를 사용하십시오.

이후 배포판 (예 : 16.04)에서 Apache 사이트에서 2.2.31을 다운로드했습니다.

다음 구성을 사용하여 빌드했습니다.

./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를 실행한다.

그리고 작동합니다!

apt-get을 통해 apache2.4를 추가했지만 제거하지는 않았습니다. 이것은 시스템 시작 후 apache2 프로세스를 종료해야 함을 의미합니다. 그런 다음 아파치 2.2를 시작할 수 있습니다. 나는 apachectl을 사용하기 위해 apache2.4를 설치해야했지만 나중에 ./httpd를 사용하기 때문에 그것을 버렸다.


Apache 2.2에서 apachectl을 사용하는 것에 대한 내 대답을 살펴보면 2.4 버전을 먼저 제거해야 할 수도 있습니다 (/usr/sbin/update-rc.d -f apachectl remove).
— Johano Fierra

1

Ubuntu 13.04에서 13.10으로 업그레이드 했습니까? 우분투 패키지 저장소 외부로 나가지 않고 Apache 2.2를 다시 가져올 수있는 방법이 없습니다. 2.4에서 작동하도록 Apache 구성을 수정하는 것이 좋습니다.


1
실제로, 내 대답을 참조하십시오
— Coen Damen

@CoenDamen은 실제로 "우분투 패키지 저장소 외부로 나가는 것"이라고 대답합니다. 또한, 일부 우분투 설치에는 새로운 종속성 설정이 "있는 그대로"작동하지 않습니다.
— Johano Fierra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.