Versi Apache diinstal pada mesin Debian


314

Bagaimana saya bisa memeriksa versi Apache mana yang diinstal pada mesin Debian?

Apakah ada perintah untuk melakukan ini?


4
Stack Overflow adalah situs untuk pertanyaan pemrograman dan pengembangan. Pertanyaan ini tampaknya di luar topik karena ini bukan tentang pemrograman atau pengembangan. Lihat Topik apa yang bisa saya tanyakan di sini di Pusat Bantuan. Mungkin Super User atau Unix & Linux Stack Exchange akan menjadi tempat yang lebih baik untuk bertanya. Lihat juga Di mana saya mengirim pertanyaan tentang Dev Ops? .
jww

Jawaban:


418

Coba apachectl -V:

$ apachectl -V
Server version: Apache/2.2.9 (Unix)
Server built:   Sep 18 2008 21:54:05
Server's Module Magic Number: 20051115:15
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
... etc ...

Jika tidak berhasil untuk Anda, jalankan perintah dengan sudo.


2
Peringatan: ketika menjalankan Apache 2.4 di Ubuntu 14, apache2ctl -Vtidak berfungsi tanpa hak akses root (... dan tidak mencetak versi). Sedangkan itu berfungsi di Ubuntu 12 dengan Apache 2.2. Rumit.
philippe_b

Ia bekerja pada Ubuntu 12.04 dan saya percaya banyak orang masih menggunakan Ubuntu 12.04, seperti saya, yang tidak ingin meng-upgrade ke 14 belum sampai semua bug dengan berbagai software dieliminasi complete.y
JohnMerlino

Bekerja padaDebian 7.1
Cyclonecode

apachectl -V tidak dapat bekerja pada suse10.04 alih-alih kita harus mengetik / usr / sbin / apache2ctl -v untuk mendapatkan jawaban yang benar dengan izin root
farzam

1
Bekerja dengan baik di Red Hat Enterprise Linux 6 (64-bit)
DemiSheep


34

Anda harus menggunakan apache2ctl -v atau apache2 -v untuk distribusi Debian atau Ubuntu yang lebih baru.

apache:/etc/apache2# apache2ctl -v
Server version: Apache/2.2.16 (Debian)
Server built:   May 12 2011 11:58:18

atau Anda dapat menggunakan apache2 -V untuk mendapatkan informasi lebih lanjut.

apache2 -V
Server version: Apache/2.2.16 (Debian)
Server built:   May 12 2011 11:58:18
Server's Module Magic Number: x
Server loaded:  APR 1.4.2, APR-Util 1.3.9
Compiled using: APR 1.2.12, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....

Baik huruf -V atau huruf kecil -v tidak apa-apa, tetapi Anda mungkin perlu menggunakan sudo kecuali Anda masuk sebagai root.
sdexp

27

Perintah bervariasi tergantung pada bagaimana versi Linux Anda menamai Server Apache.

Di Debian dan Mac OS:

apachectl -v

Di Red Hat dan Amazon menggunakan EC2 Linux:

httpd -v

Di Linux lain coba:

apache2 -v

Anda dapat menggunakan dua flag berbeda:

-v # gives you the version number
-V # gives you the compile settings including version number.

Jika Anda ingin menjalankan perintah dengan direktori lengkap seperti yang dilakukan user3786265 tetapi tidak tahu di mana apache Anda berada, gunakan whereisperintah:

whereis httpd

1
Cemerlang. Jawaban Anda mencakup rentang lingkungan server yang mungkin berusaha ditemukan versi Apache di dalamnya. Jika itu pertanyaan saya, saya akan menandai ini sebagai jawabannya . Mungkin satu-satunya hal yang saya sarankan untuk ditambahkan ke jawaban Anda, adalah jalur umum. Di beberapa lingkungan, perintah mungkin tidak ada di $ PATH, jadi orang yang mencoba perintah ini mungkin macet. mis. Di lingkungan Debian saya, saya harus menggunakan $ /usr/sbin/apache2 -vkarena hanya $ apache2 -vmengembalikan command not found. Perintah ini akan membantu pengguna menemukan path ke apache, jika diperlukan:ps -ef | grep apache
terinspirasinz

apache2 -vjuga bekerja pada Debian (setidaknya Debian 8 (Jessie) di Raspberry Pi).
Peter Mortensen


15

Cobalah dengan sudo

apachectl -V
-bash: apachectl: command not found

sudo apachectl -V
Server version: Apache/2.4.6 (Debian)
Server built:   Aug 12 2013 18:20:23
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.3
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   32-bit
Server MPM:     prefork
  threaded:     no
  forked:     yes (variable process count)
Server compiled with....
bla bla....

Ini tidak akan berfungsi jika saat ini ada kesalahan sintaksis dalam file konfigurasi Anda
Wolfgang Fahl

12

Saya pikir Anda harus yakin jenis instalasi apa yang Anda miliki biner atau sumbernya. Untuk memeriksa paket binary apa yang diinstal: dengan hak root jalankan perintah berikut:

dpkg -l |grep apache2

hasil harus berupa:

dpkg -l |grep apache2
ii  apache2                               2.4.10-10+deb8u8                      amd64        Apache HTTP Server
ii  apache2-bin                           2.4.10-10+deb8u8                      amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                          2.4.10-10+deb8u8                      all          Apache HTTP Server (common files)
ii  apache2-doc                           2.4.10-10+deb8u8                      all          Apache HTTP Server (on-site documentation)

Untuk menemukan versi Anda dapat menjalankan:

apache2ctl -V |grep -i "Server version"

Hasilnya harus seperti: Versi server: Apache / 2.4.10 (Debian)


11

Anda juga dapat menggunakan manajer paket secara langsung:

dpkg -l | grep apache

Ini tidak berfokus pada nomor versi saja , tetapi akan membuat pencarian yang lebih luas, yang akan memberi Anda informasi berguna lainnya, seperti versi modul.


Pembatasan apache dapat diteruskan ke dpkg secara langsung. Untuk interpretasi otomatis, Anda juga memerlukan nilai tunggal daripada daftar, dan Anda seharusnya tidak menampilkan paket apache2- * yang "dihapus". Harap pertimbangkan dpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d-atau dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1.
smoe

6

Cara lain untuk memeriksa paket (termasuk Apache) versi yang diinstal pada sistem berbasis Debian, kita dapat menggunakan:

apt-cache policy <package_name>

misalnya untuk Apache

apt-cache policy apache2

yang akan menampilkan sesuatu seperti (lihat Installedbaris):

$ apt-cache policy apache2
apache2:
  Installed: (none)
  Candidate: 2.2.22-1ubuntu1.9
  Version table:
     2.2.22-1ubuntu1.9 0
        500 http://hk.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
     2.2.22-1ubuntu1 0
        500 http://hk.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

6

Bagi saya ini berfungsi pada Debian 6 (Pemerasan):

Linux www809 2.6.26-2-xen-686 # 1 SMP Rabu 21 September 09:56:47 UTC 2011 i686 GNU / Linux

Saya harus pergi ke jalan yang benar:

/usr/local/apache/bin** $ **./apachectl -v

./apachectl: line 71: ulimit: buka file: tidak dapat mengubah batas: Operasi tidak diizinkan
Versi server: Apache / 2.2.21 (Unix)
Server dibangun: 17 Desember 2011 19:57:53


5

Saya mencoba menjalankan perintah "httpd -V" dan "apachectl -V", tapi saya tidak bisa menjalankan dan mendapatkan kesalahan:

-ksh: php: tidak ditemukan [Tidak ada file atau direktori]

Kemudian saya mencoba cara lain. Saya pergi ke direktori Apache di server saya dan kemudian mencoba menjalankan perintah:

./apachectl -v

Ini bekerja untuk saya dan mengembalikan hasilnya:

Server version: Apache/2.2.20 (Unix)
Server built:   Sep  6 2012 17:22:16

Saya harap ini membantu.


5
  1. Anda bisa menggunakan apachectl -Vatau apachectl -v. Keduanya akan mengembalikan informasi versi Apache!

        xgqfrms:~/workspace $ apachectl -v
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
    
    
        xgqfrms:~/workspace $ apachectl -V
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
        Server's Module Magic Number: 20120211:27
        Server loaded:  APR 1.5.1-dev, APR-UTIL 1.5.3
        Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
        Architecture:   64-bit
        Server MPM:     prefork
          threaded:     no
            forked:     yes (variable process count)
        Server compiled with....
         -D APR_HAS_SENDFILE
         -D APR_HAS_MMAP
         -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
         -D APR_USE_SYSVSEM_SERIALIZE
         -D APR_USE_PTHREAD_SERIALIZE
         -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
         -D APR_HAS_OTHER_CHILD
         -D AP_HAVE_RELIABLE_PIPED_LOGS
         -D DYNAMIC_MODULE_LIMIT=256
         -D HTTPD_ROOT="/etc/apache2"
         -D SUEXEC_BIN="/usr/lib/apache2/suexec"
         -D DEFAULT_PIDLOG="/var/run/apache2.pid"
         -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
         -D DEFAULT_ERRORLOG="logs/error_log"
         -D AP_TYPES_CONFIG_FILE="mime.types"
         -D SERVER_CONFIG_FILE="apache2.conf"

  2. Anda mungkin lebih suka menggunakan apache2 -Vatau apache2 -v. Tampaknya lebih mudah diingat!

        xgqfrms:~/workspace $ apache2 -v
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
    
    
        xgqfrms:~/workspace $ apache2 -V
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
        Server's Module Magic Number: 20120211:27
        Server loaded:  APR 1.5.1-dev, APR-UTIL 1.5.3
        Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
        Architecture:   64-bit
        Server MPM:     prefork
          threaded:     no
            forked:     yes (variable process count)
        Server compiled with....
         -D APR_HAS_SENDFILE
         -D APR_HAS_MMAP
         -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
         -D APR_USE_SYSVSEM_SERIALIZE
         -D APR_USE_PTHREAD_SERIALIZE
         -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
         -D APR_HAS_OTHER_CHILD
         -D AP_HAVE_RELIABLE_PIPED_LOGS
         -D DYNAMIC_MODULE_LIMIT=256
         -D HTTPD_ROOT="/etc/apache2"
         -D SUEXEC_BIN="/usr/lib/apache2/suexec"
         -D DEFAULT_PIDLOG="/var/run/apache2.pid"
         -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
         -D DEFAULT_ERRORLOG="logs/error_log"
         -D AP_TYPES_CONFIG_FILE="mime.types"
         -D SERVER_CONFIG_FILE="apache2.conf"


3

Bagi saya apachectl -Vtidak bekerja, tetapi apachectl fullstatusmemberi saya versi saya.


'apachectl -v' bekerja untuk saya di Mac, CentOS dan Ubuntu. Distro mana yang Anda jalankan? apachectl fullstatus membutuhkan mod_status untuk membuat ini berfungsi. Jadi itu bukan solusi universal juga.
Konzulic

apachectl fullstatustidak bekerja untuk saya. Saya mendapat /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian dengan Raspberry Pi). Namun, apachectl -Vberhasil.
Peter Mortensen

3

Beberapa instalasi Apache adalah fubar (bayangkan Oracle mengemasnya, OHS) dan tidak memahami flag -V, juga tidak dapat dipanggil secara langsung tanpa mengalami kesalahan pustaka yang hilang.

Cara termudah adalah dengan menggunakan stringsperintah (bagian dari binutils) pada biner httpd dan grep untuk string yang mungkin menyerupai versi. Misalnya, dengan asumsi httpdbiner Anda berada di bawah direktori /foo/bar:

$ strings /foo/bar/httpd  | grep 2.2
GLIBC_2.2.5
Oracle-HTTP-Server/2.2.22 (Unix)
Success_Accepted_202
202 Accepted

Kebanyakan binari (tidak semua) mengandung versinya (setidaknya versi utamanya) sebagai string statis. Ini adalah cara saya untuk mendapatkan versi (atau untuk menguatkan apa pesan bantuan biner cocok dengan kenyataan di lapangan sebenarnya.)


Tidak httpdharus berada di direktori saat ini agar ini berfungsi?
Peter Mortensen

1
Ini membantu saya mengetahui versi saya sebelumnya pada root lama saya yang terpasang dari dalam instalasi Ubuntu baru. Layak disebutkan: "string" adalah bagian dari paket "binutils"
Zefiro

@PeterMortensen, ya. Saya kira contoh saya mengasumsikan httpd akan berada di direktori saat ini (dan bahwa pembaca akan menyimpulkan itu dari contoh dan menyesuaikan sesuai kebutuhan.) Saya mengedit jawaban saya sekarang untuk mencerminkan itu .
luis.espinal

@ Zefiro, terima kasih untuk kepala. Saya akan memperbarui jawaban saya untuk menyebutkan binutils.
luis.espinal

2

Atau, kurang langsung:

nmap -A localhost -p 80


Jika apache dikonfigurasi untuk tidak menambahkan informasi versi ke header HTTP, Anda tidak akan menemukan apa pun.
Marki555

nmap mungkin tidak diinstal (misalnya pada Raspberry Pi):-bash: nmap: command not found
Peter Mortensen

2

Tentunya mengetik / usr / sbin / apache2 -v ke dalam shell adalah cara terbaik dan tercepat untuk pergi, dengan cara inilah pilihan lain, kalau-kalau ada PHP juga di server Anda dan Anda tertarik untuk mengumpulkan versi Apache (dan banyak lagi lebih banyak info) dalam langkah-langkah pemrograman cepat.

Cukup buat file info.php di folder root web Apache Anda (atau apa pun yang Anda suka) dan tulis di dalamnya:

<?php
    phpinfo();
?>

Sekarang buka yoursite.com/info.php (atau localhost / info.php untuk mesin lokal).

Anda akan melihat versi Apache Anda di bagian Variabel PHP , berikut ini sebuah contoh:

phpinfo () contoh halaman dump

Juga, harap perhatikan bahwa langkah-langkah ini jelas berlaku untuk server web mana pun dengan integrasi PHP, jadi itu tidak terbatas pada Apache dan sekali dibuat halaman itu bisa berguna saat mengembangkan (jangan lupa untuk menghapusnya di lingkungan produksi !!)


1
dlocate -s apache2 | grep '^Version:'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.