เวอร์ชันของ Apache ติดตั้งบนเครื่อง Debian


314

ฉันจะตรวจสอบเวอร์ชันของ Apache ที่ติดตั้งบนเครื่องเดเบียนได้อย่างไร

มีคำสั่งให้ทำสิ่งนี้หรือไม่?


4
Stack Overflow เป็นเว็บไซต์สำหรับคำถามการเขียนโปรแกรมและการพัฒนา คำถามนี้ดูเหมือนจะไม่ได้อยู่ที่หัวข้อเพราะมันไม่เกี่ยวกับการเขียนโปรแกรมหรือการพัฒนา ดูหัวข้อใดบ้างที่ฉันสามารถถามเกี่ยวกับที่นี่ในศูนย์ช่วยเหลือ บางทีผู้ใช้ระดับสูงหรือUnix & Linux Stack Exchangeอาจเป็นสถานที่ที่ดีกว่าที่จะถาม ดูที่ฉันจะโพสต์คำถามเกี่ยวกับ Dev Ops ได้ที่ไหน .
jww

คำตอบ:


418

ลอง 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 ...

sudoถ้ามันไม่ได้ทำงานให้คุณเรียกใช้คำสั่งด้วย


2
คำเตือน: เมื่อใช้งาน Apache 2.4 บน Ubuntu 14 apache2ctl -Vจะไม่สามารถใช้งานได้หากไม่มีสิทธิ์ของรูท (... และไม่ได้พิมพ์เวอร์ชั่น) ที่ทำงานบน Ubuntu 12 กับ Apache 2.2 เขี้ยวลากดิน
philippe_b

มันทำงานบน Ubuntu 12.04 และฉันเชื่อว่าผู้คนจำนวนมากยังคงใช้ Ubuntu 12.04 เหมือนฉันที่ไม่ต้องการอัปเกรดเป็น 14 จนกระทั่งจนกว่าข้อบกพร่องทั้งหมดที่มีซอฟต์แวร์ต่าง ๆ จะถูกกำจัดโดยสมบูรณ์
JohnMerlino

ทำงานบนDebian 7.1
Cyclonecode

apachectl -V dosen ไม่ทำงานบน suse10.04 แทนเราต้องพิมพ์ / usr / sbin / apache2ctl -v เพื่อรับคำตอบที่ถูกต้องหากได้รับอนุญาตจาก root
farzam

1
ทำงานได้ดีบน Red Hat Enterprise Linux 6 (64 บิต)
DemiSheep


34

คุณควรใช้apache2ctl -v หรือapache2 -vสำหรับ Debian หรือ Ubuntu รุ่นใหม่

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

หรือคุณสามารถใช้apache2 -Vเพื่อรับข้อมูลเพิ่มเติม

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

อาจเป็น -V หรือตัวพิมพ์เล็ก -v ก็ได้ แต่คุณอาจจำเป็นต้องใช้ sudo ยกเว้นว่าคุณเข้าสู่ระบบในฐานะ root
sdexp

27

คำสั่งนั้นแตกต่างกันไปขึ้นอยู่กับว่า Linux เวอร์ชันของคุณตั้งชื่อ Apache Server อย่างไร

บน Debian และ Mac OS:

apachectl -v

สำหรับ Red Hat และ EC2 Linux ของ Amazon ใช้:

httpd -v

ลองใช้ Linux เวอร์ชันอื่น:

apache2 -v

คุณสามารถใช้สองสถานะที่แตกต่างกัน:

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

หากคุณต้องการเรียกใช้คำสั่งด้วยไดเรกทอรีแบบเต็มเช่น user3786265 แต่ไม่ทราบว่าที่ตั้งของ apache อยู่ให้ใช้whereisคำสั่ง:

whereis httpd

1
สุกใส คำตอบของคุณครอบคลุมช่วงสภาพแวดล้อมของเซิร์ฟเวอร์อย่างใดอย่างหนึ่งอาจพยายามค้นหารุ่น Apache ภายใน หากเป็นคำถามของฉันฉันได้ทำเครื่องหมายคำตอบนี้แล้ว บางทีสิ่งเดียวที่ฉันอยากจะแนะนำให้เพิ่มในคำตอบของคุณคือเส้นทางทั่วไป ในบางสภาพแวดล้อมคำสั่งอาจไม่อยู่ใน $ PATH ดังนั้นผู้ที่ลองใช้คำสั่งเหล่านี้อาจติดขัด เช่นใน Debian enviro ฉันต้องใช้$ /usr/sbin/apache2 -vเพราะเพิ่ง$ apache2 -vกลับcommand not foundมา คำสั่งนี้จะช่วยให้ผู้ใช้ค้นหาเส้นทางไปยัง Apache หากต้องการ:ps -ef | grep apache
แรงบันดาลใจ

apache2 -vใช้ได้กับ Debian (อย่างน้อยDebian 8 (Jessie) บน Raspberry Pi)
Peter Mortensen


15

ลองด้วย 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....

สิ่งนี้จะไม่ทำงานหากมีข้อผิดพลาดทางไวยากรณ์ในไฟล์กำหนดค่าของคุณ
Wolfgang Fahl

12

ฉันคิดว่าคุณต้องแน่ใจว่าคุณมีการติดตั้งแบบไบนารีหรือแหล่งที่มา ในการตรวจสอบแพคเกจไบนารีที่ติดตั้ง: ด้วยสิทธิ์ root รันคำสั่งต่อไปนี้:

dpkg -l |grep apache2

ผลลัพธ์ควรเป็นดังนี้:

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)

หากต้องการค้นหาเวอร์ชันคุณสามารถเรียกใช้:

apache2ctl -V |grep -i "Server version"

ผลลัพธ์ควรเป็นดังนี้: รุ่นเซิร์ฟเวอร์: Apache / 2.4.10 (Debian)


11

คุณสามารถใช้ตัวจัดการแพ็คเกจโดยตรง:

dpkg -l | grep apache

สิ่งนี้ไม่ได้มุ่งเน้นไปที่หมายเลขรุ่นแต่จะทำการค้นหาในวงกว้างซึ่งจะให้ข้อมูลที่เป็นประโยชน์อื่น ๆ แก่คุณเช่นรุ่นโมดูล


ข้อ จำกัด ของ apache อาจถูกส่งไปยัง dpkg โดยตรง สำหรับการตีความอัตโนมัติคุณต้องมีค่าเดียวแทนที่จะเป็นรายการและคุณไม่ควรมีแพ็คเกจ "ถอนการติดตั้ง" apache2- * ที่แสดง โปรดพิจารณาหรือdpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d- dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1
smoe

6

อีกวิธีหนึ่งในการตรวจสอบแพคเกจ (รวมถึง Apache) เวอร์ชันที่ติดตั้งบนระบบที่ใช้เดเบียนเราสามารถใช้:

apt-cache policy <package_name>

เช่นสำหรับ Apache

apt-cache policy apache2

ซึ่งจะแสดงสิ่งที่ต้องการ (ดูที่Installedบรรทัด):

$ 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

สำหรับฉันมันใช้งานได้กับDebian 6 (Squeeze):

Linux www809 2.6.26-2-xen-686 # 1 SMP พุธ 21 ก.ย. 09:56:47 UTC 2011 i686 GNU / Linux

ฉันต้องไปยังเส้นทางที่ถูกต้อง:

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

./apachectl: บรรทัด 71: ulimit: เปิดไฟล์: ไม่สามารถแก้ไขข้อ จำกัด : การดำเนินการไม่ได้รับอนุญาต
รุ่นเซิร์ฟเวอร์: Apache / 2.2.21 (Unix)
เซิร์ฟเวอร์ที่สร้าง: 17 ธันวาคม 2011 19:57:53


5

ฉันพยายามเรียกใช้คำสั่ง "httpd -V" และ "apachectl -V" แต่ฉันไม่สามารถดำเนินการและได้รับข้อผิดพลาด:

-ksh: php: ไม่พบ [ไม่มีไฟล์หรือไดเรกทอรี]

จากนั้นฉันก็ลองอีกวิธีหนึ่ง ฉันไปที่ไดเรกทอรี Apache บนเซิร์ฟเวอร์ของฉันแล้วลองใช้คำสั่ง:

./apachectl -v

สิ่งนี้ใช้ได้สำหรับฉันและส่งคืนผลลัพธ์:

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

ฉันหวังว่านี่จะช่วยได้.


5
  1. คุณสามารถใช้หรือapachectl -V apachectl -vทั้งคู่จะส่งคืนข้อมูลเวอร์ชัน 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. คุณอาจจะชอบapache2 -Vหรือใช้apache2 -vมากกว่า ดูเหมือนจะจำง่ายกว่า!

        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

สำหรับฉันapachectl -Vไม่ได้ทำงาน แต่apachectl fullstatusให้ฉันเวอร์ชันของฉัน


'apachectl -v' ใช้ได้กับฉันใน Mac, CentOS และ Ubuntu คุณใช้ distro ตัวใด apachectl fullstatus ต้องการ mod_status เพื่อให้สามารถใช้งานได้ ดังนั้นมันจึงไม่ใช่วิธีแก้ปัญหาสากล
Konzulic

apachectl fullstatusไม่ได้ผลสำหรับฉัน ฉันได้รับ/usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian บน Raspberry Pi) อย่างไรก็ตามapachectl -Vทำงานได้ดี
Peter Mortensen

3

การติดตั้ง Apache บางอย่างนั้นเป็น fubar (คิดว่าบรรจุภัณฑ์ของ Oracle, OHS) และไม่เข้าใจแฟล็ก -V และไม่สามารถเรียกใช้ได้โดยตรง

วิธีที่ง่ายที่สุดคือการใช้stringsคำสั่ง (ส่วนหนึ่งของbinutils) บน httpd ไบนารีและ grep สำหรับสตริงที่อาจมีลักษณะคล้ายกับรุ่น ตัวอย่างเช่นสมมติว่าhttpdไบนารีของคุณอยู่ภายใต้ไดเรกทอรี/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

ไบนารีส่วนใหญ่ (ไม่ใช่ทั้งหมด) มีเวอร์ชัน (อย่างน้อยเวอร์ชันหลัก) เป็นสแตติก นี่คือวิธีไปสู่การรับรุ่น (หรือยืนยันสิ่งที่ข้อความช่วยเหลือของไบนารีตรงกับสิ่งที่เป็นจริงบนพื้นดิน)


ไม่httpdจำเป็นต้องอยู่ในไดเรกทอรีปัจจุบันเพื่อให้ใช้งานได้หรือไม่
Peter Mortensen

1
สิ่งนี้ช่วยให้ฉันค้นหาเวอร์ชันก่อนหน้าของฉันบนรูทเก่าที่เมานท์ของฉันจากภายในการติดตั้ง Ubuntu ใหม่ น่ากล่าวถึง: "สตริง" เป็นส่วนหนึ่งของแพคเกจ "binutils"
Zefiro

@PeterMortensen, อ๋อ ฉันเดาว่าตัวอย่างของฉันสันนิษฐานว่า httpd จะอยู่ในไดเรกทอรีปัจจุบัน (และผู้อ่านจะอนุมานได้จากตัวอย่างและปรับตามต้องการ) ฉันกำลังแก้ไขคำตอบของฉันในขณะนี้เพื่อสะท้อนสิ่งนั้น
luis.espinal

@Zefiro ขอบคุณสำหรับหัวขึ้น ฉันจะอัปเดตคำตอบของฉันเพื่อพูดถึง binutils
luis.espinal

2

หรือน้อยลงโดยตรง:

nmap -A localhost -p 80


หากมีการกำหนดค่า apache ไม่ให้เพิ่มข้อมูลรุ่นไปยังส่วนหัว HTTP คุณจะไม่พบสิ่งใด
Marki555

ไม่สามารถติดตั้ง nmap (เช่นบน Raspberry Pi):-bash: nmap: command not found
Peter Mortensen

2

แน่นอนว่าการพิมพ์/ usr / sbin / apache2 -vลงในเชลล์เป็นวิธีที่ดีที่สุดและรวดเร็วที่สุดในการเลือกตัวเลือกอื่นในกรณีที่มี PHP อยู่ในเซิร์ฟเวอร์ของคุณและคุณสนใจที่จะรวบรวมรุ่น Apache (และอีกมากมาย ข่าวสารเพิ่มเติม) ในขั้นตอนการเขียนโปรแกรมแบบย่อ

เพียงแค่สร้างไฟล์info.phpในโฟลเดอร์ Apache web root ของคุณ (หรืออะไรก็ได้ที่คุณต้องการ) แล้วเขียนสิ่งเหล่านี้ไว้ข้างใน:

<?php
    phpinfo();
?>

ตอนนี้ไปที่yoursite.com/info.php (หรือlocalhost / info.phpสำหรับเครื่องจักรท้องถิ่น)

คุณจะเห็นรุ่น Apache ของคุณในส่วนตัวแปร PHP ต่อไปนี้เป็นตัวอย่าง:

ตัวอย่างหน้าการถ่ายโอนข้อมูล phpinfo ()

นอกจากนี้โปรดสังเกตว่าขั้นตอนเหล่านี้เห็นได้ชัดว่ามีผลกับเว็บเซิร์ฟเวอร์ใด ๆ ที่มีการรวม PHP ดังนั้นจึงไม่ จำกัด เพียง Apache และเมื่อสร้างหน้านั้นอาจมีประโยชน์ในขณะที่กำลังพัฒนา (อย่าลืมลบออกในสภาพแวดล้อมการผลิต !!)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.