Apache'yi belirli bir sürümle nasıl kurabilirim?


26

Ubuntu güncellemesi nedeniyle Apache 2.2'yi 2.4'e yükseltmek için hata yaptım - birçok şey ters gitti.

Sürümün sonradan nasıl belirtileceği hakkında hiçbir fikrim yok apt-get remove apache2. apt-get install apache2her zaman 2.4 yükler.

Nasıl yapabilirim?

Yanıtlar:


22

Aşağıdakileri yapmanız gerekir:

apt-cache showpkg <pachagename>

Yukarıdaki komut bu paket için mevcut sürümlerin listesini gösterecektir. Sonra gerekli sürümü seçin ve aşağıdakileri yapın.

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

Örnek:

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

2
Benim için gösteren tek sürüm Ubuntu 16'da 2.4. Bu büyük bir sorundur, çünkü 2.4 sitemi tamamen bozan sorunlar yaşadı.
16'da 2

2
Apache2 için sürüm 2.2.14-5ubuntu8.7 bulunamadı
Braian Mellor

Teşekkürler - bu PPA yolundan gitmeye çalışmaktan daha iyi sonuç verdi.
M Thomas

5

Apache 2.2, depolarda bulunmayan bir Ubuntu dağıtımına nasıl kurulur?

Gereksinimler

Bunu yapmak için build-essentials paketini kurmanız gerekir.

~# sudo apt-get install build-essential

Apache'ye, onu destekleyen tarayıcılara çıktıyı sıkıştırma yeteneği vermek için, zlib'i yüklemeniz gerekir. Geçerli sürümü zlip Hompage'den (zlib-1.2.11.tar.gz yazarken) indirin, çıkartın, çıkartılan klasöre gidin, derleyin ve kurun.

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'yi yükleyin

Curent sürümünü Apache İndirme Sayfasından (httpd-2.2.32.tar.gz yazarken) indirin, çıkarın, çıkartılan klasöre gidin, derleyin ve kurun.

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'yi başlatın:

sudo /usr/local/apache2/bin/apachectl start

Her şeyin yolunda olup olmadığını kontrol et

Tarayıcınızda http: // localhost adresine gidin , burada “Çalışıyor!” Yazan bir mesaj görmelisiniz.

Alternatif olarak, bunu terminal üzerinden yapabilirsiniz:

wget -qO- http://localhost | grep "It works!"

Hangi terminalde böyle bir şey çıktı gerekir:

<html><body><h1>It works!</h1></body></html>

Apache2 için "hizmet" oluşturun

sudo cp /usr/local/apache2/bin/apachectl /etc/init.d/apache22
sudo chmod +x /etc/init.d/apache22

İpucu: apachectl'i şimdi sudo service apache22 ile çağırabilirsiniz .

Apache'nin açılış zamanında başlatılmasını sağlayın

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

Güvenli 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

Yeni ayarları kontrol et

ps -aux | grep httpd

Son komutun terminal çıkışı "apache" ile başlayan bazı satırlar gösteriyorsa, her şey yolundadır.

Sitenizi yapılandırın

Apache'nizi yalnızca bir site için yapılandırmak istiyorsanız, httpd.conf dosyasını düzenleyin.

nano /usr/local/apache2/conf/httpd.conf

Değiştirmek isteyebileceğiniz temel parametreler:

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>

Birden fazla site yapılandırmak istiyorsanız, httpd-vhosts.conf dosyasına bakın.

nano /usr/local/apache2/conf/httpd.conf

VitualHost'un belge kökü için, yukarıdaki ile aynı olan <VirtualHost> ile bir <Dizin> bölümü eklemeniz gerekir. Örneğin:

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

Bu talimatlara uyarak, şunu uyguladım: dzenan @ ubuntu16-i386: ~ / httpd-2.2.34 $ sudo / usr/sbin/update-rc.d apachectl defaults insserv: script apachectl: service apache2 zaten verildi! insserv: şimdi çıkılıyor! update-rc.d: error: insserv script başlığını reddetti
Dženan

Gerçekten de, Ubuntu 16.04'te /etc/init.d/apache2, radikal olarak farklı içeriğe sahip bir dosya zaten var .
Dženan

Sorunlu dosyanın kaldırılması bizi bu adımdan atar ancak sudo service apachectl stophizmeti durdurmaz.
Dženan

"sudo service apachectl stop" yalnızca önyükleme sırasında Apache'yi Başlatma adımlarını izlemiyorsanız çalışmaz . Cevabımı okuduktan sonra, onu değiştirmeye karar verdim ... ilk önce, apachectl bir "hizmet" için gerçekten kötü bir isim ve bu bölümün bir parçasını oluşturmakta kötüydü. Böylece, bunun yerine şimdi , Apache2 için "service" oluştur altındaki adımları uyguladıktan sonra sudo service apache22 start / stop işlevini uygularsınız .
Johano Fierra,

Bu yaklaşımı bırakmaya ve config dosyamı apache 2.4 ile uyumlu olacak şekilde güncellemeye karar verdim. Bu şekilde daha az baş ağrısı. Ancak detaylı cevap için teşekkürler!
Dženan

4

Paket sabitlemede ubuntu howto'ya bakın :

Dosya düzenle /etc/apt/preferences

'Tercihler' dosyası, asıl sabitlemenin yapıldığı yerdir. Bir paketi sabitlemek için Pin Önceliğini daha yüksek bir sayıya ayarlayın. İşte bir örnek:

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

Çalıştırmadan önce apt-get updateveya apt-get installbirlikteapt-cache policy apache2

Detaylar man apt_preferencesiçin bakınız. Sabitlemeyi raringserbest bırakmayı seçtim çünkü bu şekilde 2.2.x dalında güncellemeler almaya devam edersiniz. raringDepo URL'lerini ekleyerek paketi APT'ye sunmanız gerektiğini unutmayın .

Güncelleme :

raringEOL olduğu gibi , http://old-releases.ubuntu.com adresinden hala desteklenenleri preciseveya arşivlenen raringpaketleri kullanabilirsiniz .

Bunu /etc/apt/sources.list.d/raring.listeski paketleri kurmanıza izin verecek şekilde kullanmak :

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

Merhaba. Bu tam olarak istediğim gibi görünüyor. Raring'in depo URL'lerini eklemek için lütfen komut ekleyebilir misiniz? Doğru olanları bulamıyorum.
Ravish Bhagdev

Cevabımı güncelledim.
fuero

Güzel yakalama, APT ayna listesini düzelttim raring. Tabii ki precisesürümü kullanmak istiyorsanız , /etc/apt/preferencesbuna göre de değiştirilmesi gerekir.
fuero

Çok teşekkürler. Yine de solucan konservesi haline gelmek ... ... belirtilen adımları uyguladıktan sonra VM yolunu takip etmek zorunda kalacak (ve ayrıca -f seçeneğini kurup temizlemeyi dene). Aşağıdaki paketlerin karşılanmayan bağımlılıkları var. apache2: Bağımlı: apache2-mpm-worker (= 2.2.22-1ubuntu1.7) ancak kurulmayacak veya apache2-mpm-prefork (= 2.2.22-1ubuntu1.7) ancak olmayacak yüklü veya .... vb vb.
Ravish Bhagdev 4:05 '

2

Apache2.2'yi kurmak için aşağıdaki işlemi kullanın:

Daha sonraki bir dağıtımda (örneğin 16.04), 2.2.31'i Apache sitesinden indirdim.

Aşağıdaki yapılandırmayı kullanarak oluşturdum:

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

Tabii ki httpd.conf ve ssl.conf dosyalarını ayarlayarak.

Ondan sonra sadece ./httpd -k start komutunu çalıştırıyorum.

Ve çalışıyor !

apache2.4'ü apt-get yoluyla eklediğimi, ancak kaldırmadığımı unutmayın. Bu, sistem başladıktan sonra apache2 işlemini öldürmem gerektiği anlamına geliyor. Ve sonra apache2.2'yi başlatabiliyorum. Apachectl kullanmak için apache2.4'ü kurmak zorunda kaldım, ancak daha sonra kullandığım için onu dağıttım.


Apache 2.2 için apachectl kullanımı ile ilgili cevabımı inceleyin, ilk önce 2.4 sürümünü kaldırmanız gerekebilir (/usr/sbin/update-rc.d -f apachectl remove).
Johano Fierra

1

Ubuntu 13.04'ten 13.10'a yükselttiniz mi? Ubuntu paket havuzlarının dışına çıkmadan Apache 2.2'yi geri almanın bir yolu yoktur. Apache yapılandırmanızı sadece 2.4 ile çalışacak şekilde düzeltmek daha iyidir.


1
pek değil, cevabımı gör
Coen Damen

@CoenDamen aslında cevap verdiğiniz şey "Ubuntu paket havuzlarının dışına çıkmak". Ayrıca, cevabınız herhangi bir yeni Ubuntu kurulumunda "olduğu gibi" çalışmaz, çünkü birkaç bağımlılık eksik olacaktır.
Johano Fierra
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.