特定のバージョンのApacheをインストールするにはどうすればよいですか?


26

Ubuntuの更新のために、Apache 2.2を2.4にアップグレードするのを間違えました-多くのことが間違っていました。

以降のバージョンを指定する方法がわかりませんapt-get remove apache2apt-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

リポジトリにないApacheディストリビューションに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サービス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

セキュアな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」で始まる行が表示されている場合は、すべて問題ありません。

サイトを構成する

1つのサイトだけに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

上記と同様の<VirtualHost>を含む<Directory>セクションを追加する必要がありますが、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>

これらの指示に従って、これに遭遇します:dzenan @ ubuntu16-i386:〜/ httpd-2.2.34 $ sudo /usr/sbin/update-rc.d apachectl defaults insserv:script apachectl:service apache2 already already!insserv:終了しました!更新rc.dのエラー:insservスクリプトヘッダを拒否
Dženan

実際、Ubuntu 16.04には/etc/init.d/apache2、根本的に異なるコンテンツのファイルが既に存在します。
ジェナン

問題のあるファイルを削除すると、そのステップsudo service apachectl stopは終了しますが、サービスは停止しません。
ジェナン

「sudo service apachectl stop」は、ブート時にApacheを起動するの手順に従わなかった場合にのみ機能しません。私の答えを読んで、私はそれを変更することに決めました...最初に、apachectlは「サービス」の本当に悪い名前であり、それをそのセクションの一部にするのは良くありませんでした。そのため、Apache2の「サービス」の作成の手順に従ってから、代わりにsudo service apache22 start / stopを実行します
ヨハノフィエラ

私はこのアプローチを放棄し、Apache 2.4と互換性を持つように構成ファイルを更新することにしました。そのように頭痛が少なくなります。しかし、詳細な答えをありがとう!
ジェナン

4

パッケージのピン留めについては、ubuntuのハウツーを参照してください。

ファイルを編集 /etc/apt/preferences

'preferences'ファイルは、実際の固定が行われる場所です。パッケージを固定するには、そのピン優先度をより高い数値に設定します。以下に例を示します。

Package: apache2
Pin: release n=raring
Pin-Priority: 1000

テスト実行する前に、apt-get updateまたはapt-get installapt-cache policy apache2

詳細man apt_preferencesを参照してください。pinning raringのリリースを選択したのは、この方法で2.2.xブランチの更新を引き続き取得できるためです。raringのリポジトリURLを追加して、APTでパッケージを利用できるようにする必要があることを忘れないでください。

更新

raringEOLと同様に、まだサポート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のリポジトリURLを追加するコマンドも追加してください。正しいものが見つからないようです。
うっとりさせるBhagdev

回答を更新しました。
フエロ

いいですね、APTミラーリストをに修正しましたraring。もちろん、preciseバージョンを使用する場合は、/etc/apt/preferencesそれに応じて変更する必要があります。
フエロ

どうもありがとう。とにかくワームの缶であることが判明します...指定されたステップを実行した後、VMルートをフォローする必要があります(また、インストール-fオプションとクリーンを試みます)次のパッケージには依存関係がありません。apache2:依存:apache2-mpm-worker(= 2.2.22-1ubuntu1.7)がインストールされないか、apache2-mpm-prefork(= 2.2.22-1ubuntu1.7)になりますが、インストールされませんインストール済みまたは...などなど
レイヴィッシュバグデフ

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プロセスを強制終了する必要があります。そして、apache2.2を起動できます。私はapachectlを使用するためにapache2.4をインストールする必要がありましたが、後で./httpdを使用するため、それを解散しました


Apache 2.2用のapachectlの使用に関する私の答えをご覧ください。ただし、最初に2.4バージョンを削除する必要があります(/usr/sbin/update-rc.d -f apachectl remove)。
ヨハノフィエラ17年

1

Ubuntu 13.04から13.10にアップグレードしましたか?Ubuntuパッケージリポジトリの外に出ない限り、Apache 2.2を取り戻す方法はありません。2.4で動作するように、Apacheの設定を修正することをお勧めします。


1
そうではない、私の答えを参照してください
コーエンダーメン

実際に答える@CoenDamenは、「Ubuntuパッケージリポジトリの外に出る」ことです。また、Ubuntuの新規インストールでは、多くの依存関係が欠落しているため、答えは「そのまま」機能しません。
ヨハノフィエラ17年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.