Phiên bản Apache được cài đặt trên máy Debian


314

Làm cách nào để kiểm tra phiên bản Apache nào được cài đặt trên máy Debian?

Có một lệnh để làm điều này?


4
Stack Overflow là một trang web cho các câu hỏi lập trình và phát triển. Câu hỏi này dường như lạc đề vì nó không liên quan đến lập trình hay phát triển. Xem những chủ đề nào tôi có thể hỏi về đây trong Trung tâm trợ giúp. Có lẽ Super User hoặc Unix & Linux Stack Exchange sẽ là một nơi tốt hơn để hỏi. Ngoài ra, xem tôi gửi câu hỏi về Dev Ops ở đâu? .
jww

Câu trả lời:


418

Hãy thử 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 ...

Nếu nó không làm việc cho bạn, hãy chạy lệnh với sudo.


2
Cảnh báo: khi chạy Apache 2.4 trên Ubuntu 14, apache2ctl -Vkhông hoạt động nếu không có quyền root (... và nó không in phiên bản). Trong khi đó, nó hoạt động trên Ubuntu 12 với Apache 2.2. Khó khăn.
philippe_b

Nó hoạt động trên Ubuntu 12.04 và tôi tin rằng nhiều người vẫn đang sử dụng Ubuntu 12.04, giống như tôi, người không muốn nâng cấp lên 14 cho đến khi tất cả các lỗi với các phần mềm khác nhau được loại bỏ hoàn
toàn.y

Hoạt động trênDebian 7.1
Cyclonecode

apachectl -V không hoạt động trên suse10.04 thay vào đó chúng ta phải gõ / usr / sbin / apache2ctl -v để có câu trả lời đúng với sự cho phép root
farzam

1
Hoạt động tốt trên Red Hat Enterprise Linux 6 (64-bit)
DemiSheep

147

Điều này hoạt động cho Debian của tôi:

$ /usr/sbin/apache2 -v

34

Bạn nên sử dụng apache2ctl -v hoặc apache2 -v cho các bản phân phối Debian hoặc Ubuntu mới hơn.

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

hoặc bạn có thể sử dụng apache2 -V để có thêm thông tin.

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

Chữ -V hoặc chữ thường -v đều ổn nhưng bạn có thể cần sử dụng sudo trừ khi bạn đăng nhập bằng root.
sdEx

27

Lệnh khác nhau tùy thuộc vào cách phiên bản Linux của bạn được đặt tên là Máy chủ Apache.

Trên hệ điều hành Debian và Mac:

apachectl -v

Trên Red Hat và EC2 Linux của Amazon sử dụng:

httpd -v

Trên các phiên bản khác của Linux, hãy thử:

apache2 -v

Bạn có thể sử dụng hai cờ khác nhau:

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

Nếu bạn muốn chạy lệnh với thư mục đầy đủ như user3786265 đã làm nhưng không biết apache của bạn nằm ở đâu, hãy sử dụng whereislệnh:

whereis httpd

1
Xuất sắc. Câu trả lời của bạn bao gồm phạm vi môi trường máy chủ mà người ta có thể đang cố gắng tìm phiên bản Apache bên trong. Nếu đó là câu hỏi của tôi, tôi đã đánh dấu đây là câu trả lời . Có lẽ điều duy nhất tôi muốn đề nghị thêm vào câu trả lời của bạn, là các đường dẫn chung. Trong một số môi trường, lệnh có thể không nằm trong $ PATH, vì vậy những người đang thử các lệnh này có thể bị kẹt. ví dụ: Trong enviro Debian của tôi, tôi phải sử dụng $ /usr/sbin/apache2 -vvì chỉ cần $ apache2 -vtrả về command not found. Lệnh này sẽ giúp người dùng định vị đường dẫn đến apache, nếu được yêu cầu:ps -ef | grep apache
lấy cảm hứng từ

apache2 -vcũng hoạt động trên Debian (ít nhất là Debian 8 (Jessie) trên Raspberry Pi).
Peter Mortensen


15

Hãy thử nó với 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....

Điều này sẽ không hoạt động nếu hiện tại có lỗi cú pháp trong các tệp cấu hình của bạn
Wolfgang Fahl

12

Tôi nghĩ bạn phải chắc chắn loại cài đặt nào bạn có nhị phân hoặc nguồn. Để kiểm tra những gói nhị phân nào được cài đặt: với quyền root thực thi lệnh sau:

dpkg -l |grep apache2

kết quả sẽ giống như:

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)

Để tìm phiên bản, bạn có thể chạy:

apache2ctl -V |grep -i "Server version"

kết quả sẽ giống như: Phiên bản máy chủ: Apache / 2.4.10 (Debian)


11

Bạn cũng có thể sử dụng trình quản lý gói trực tiếp:

dpkg -l | grep apache

Điều này không tập trung vào chỉ số phiên bản , nhưng nó sẽ giúp tìm kiếm rộng hơn, cung cấp cho bạn thông tin hữu ích khác, như các phiên bản mô-đun.


Hạn chế đối với apache có thể được truyền trực tiếp đến dpkg. Để diễn giải tự động, bạn cũng cần một giá trị duy nhất thay vì danh sách và bạn không nên hiển thị các gói apache2- * "đã gỡ cài đặt". Hãy xem xét dpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d-hay dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1.
smoe

6

Một cách khác để kiểm tra phiên bản cài đặt (bao gồm cả Apache) trên hệ thống dựa trên Debian, chúng ta có thể sử dụng:

apt-cache policy <package_name>

ví dụ cho Apache

apt-cache policy apache2

Nó sẽ hiển thị một cái gì đó như (nhìn vào Installeddòng):

$ 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

Đối với tôi, điều này hoạt động trên Debian 6 (Bóp):

Linux www809 2.6.26-2-xen-686 # 1 SMP Thứ tư ngày 21 tháng 9 09:56:47 UTC 2011 i686 GNU / Linux

Tôi đã phải đi đúng con đường:

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

./apachectl: dòng 71: ulimit: tệp mở: không thể sửa đổi giới hạn: Thao tác không được phép
Phiên bản máy chủ: Apache / 2.2.21 (Unix)
Máy chủ được xây dựng: 17/12/2011 19:57:53


5

Tôi đã thử chạy lệnh "httpd -V" và "apachectl -V", nhưng tôi không thể thực thi và nhận được lỗi:

-ksh: php: không tìm thấy [Không có tệp hoặc thư mục như vậy]

Sau đó, tôi đã thử một cách khác. Tôi đã đi đến thư mục Apache trên máy chủ của mình và sau đó thử thực hiện lệnh:

./apachectl -v

Điều này làm việc cho tôi và trả lại đầu ra:

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

Tôi hi vọng cái này giúp được.


5
  1. Bạn có thể sử dụng apachectl -Vhoặc apachectl -v. Cả hai sẽ trả về thông tin phiên bản 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. Bạn có thể giống như sử dụng apache2 -Vhoặc apache2 -v. Có vẻ dễ nhớ hơn!

        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

Đối với tôi apachectl -Vđã không làm việc, nhưng apachectl fullstatusđã cho tôi phiên bản của tôi.


'Apachectl -v' hoạt động với tôi trên Mac, CentOS và Ubuntu. Bạn đã chạy trên distro nào? apachectl fullstatus cần mod_status để thực hiện công việc này. Vì vậy, nó cũng không phải là giải pháp phổ quát.
Konzulic

apachectl fullstatusđã không làm việc cho tôi. Tôi đã nhận được /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian trên Raspberry Pi). Tuy nhiên, apachectl -Vđã làm việc.
Peter Mortensen

3

Một số bản cài đặt của Apache là fubar (nghĩ rằng bao bì của Oracle, OHS) và không hiểu cờ -V, cũng không thể được gọi trực tiếp mà không gặp phải lỗi thư viện.

Cách dễ nhất là sử dụng stringslệnh (một phần binutils) trên nhị phân httpd và grep cho một chuỗi có thể giống với một phiên bản. Ví dụ: giả sử httpdnhị phân của bạn nằm trong thư mục /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

Hầu hết các nhị phân (không phải tất cả) đều chứa phiên bản của chúng (ít nhất là phiên bản chính của chúng) dưới dạng chuỗi tĩnh. Đây là cách để tôi có được các phiên bản (hoặc để chứng thực những gì thông điệp trợ giúp của nhị phân phù hợp với thực tế trên thực tế là gì.)


Không httpdbắt buộc phải có trong thư mục hiện tại để làm việc này?
Peter Mortensen

1
Điều này giúp tôi tìm ra phiên bản trước trên root cũ được gắn của mình từ trong bản cài đặt Ubuntu mới. Đáng nói: "chuỗi" là một phần của gói "binutils"
Zefiro

@PeterMortensen, vâng. Tôi đoán ví dụ giả định httpd của tôi sẽ nằm trong thư mục hiện tại (và người đọc sẽ suy ra điều đó từ ví dụ và điều chỉnh theo yêu cầu.) Tôi đang chỉnh sửa câu trả lời của mình ngay bây giờ để phản ánh điều đó .
luis.espinal

@Zefiro, cảm ơn vì đã ngẩng cao đầu. Tôi sẽ cập nhật câu trả lời của tôi để đề cập đến binutils.
luis.espinal

2

Hoặc, ít trực tiếp hơn:

nmap -A localhost -p 80


Nếu apache được định cấu hình không thêm thông tin phiên bản vào tiêu đề HTTP, bạn sẽ không tìm thấy gì.
Marki555

nmap có thể không được cài đặt (ví dụ trên Raspberry Pi):-bash: nmap: command not found
Peter Mortensen

2

Chắc chắn gõ / usr / sbin / apache2 -v vào shell là cách tốt nhất và nhanh nhất, bằng cách này là một tùy chọn khác, chỉ trong trường hợp có PHP trong máy chủ của bạn và bạn quan tâm đến việc thu thập phiên bản Apache (và nhiều thêm infos) trong các bước lập trình nhanh chóng.

Chỉ cần tạo một tệp info.php trong thư mục gốc web Apache của bạn (hoặc bất cứ thứ gì bạn thích) và viết chúng vào trong đó:

<?php
    phpinfo();
?>

Bây giờ, hãy truy cập yoursite.com/info.php (hoặc localhost / info.php cho các máy cục bộ).

Bạn sẽ thấy phiên bản Apache của bạn trong phần Biến PHP , đây là một ví dụ:

Trang kết xuất ví dụ phpinfo ()

Ngoài ra, xin lưu ý rằng các bước này rõ ràng áp dụng cho bất kỳ máy chủ web nào có tích hợp PHP, vì vậy nó không giới hạn ở Apache và một khi được tạo, trang đó có thể hữu ích trong khi phát triển (chỉ cần đừng quên xóa nó trên môi trường sản xuất !!)


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.