특정 버전으로 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 updateapt-get installapt-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.