ฉันจะตรวจสอบเวอร์ชันของ Apache ที่ติดตั้งบนเครื่องเดเบียนได้อย่างไร
มีคำสั่งให้ทำสิ่งนี้หรือไม่?
ฉันจะตรวจสอบเวอร์ชันของ Apache ที่ติดตั้งบนเครื่องเดเบียนได้อย่างไร
มีคำสั่งให้ทำสิ่งนี้หรือไม่?
คำตอบ:
ลอง 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
ถ้ามันไม่ได้ทำงานให้คุณเรียกใช้คำสั่งด้วย
apache2ctl -V
จะไม่สามารถใช้งานได้หากไม่มีสิทธิ์ของรูท (... และไม่ได้พิมพ์เวอร์ชั่น) ที่ทำงานบน Ubuntu 12 กับ Apache 2.2 เขี้ยวลากดิน
Debian 7.1
สิ่งนี้ใช้ได้กับ Debian ของฉัน:
$ /usr/sbin/apache2 -v
คุณควรใช้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....
คำสั่งนั้นแตกต่างกันไปขึ้นอยู่กับว่า 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
$ /usr/sbin/apache2 -v
เพราะเพิ่ง$ apache2 -v
กลับcommand not found
มา คำสั่งนี้จะช่วยให้ผู้ใช้ค้นหาเส้นทางไปยัง Apache หากต้องการ:ps -ef | grep apache
apache2 -v
ใช้ได้กับ Debian (อย่างน้อยDebian 8 (Jessie) บน Raspberry Pi)
ฉันใช้Red Hat Linuxและคำสั่งต่อไปนี้ใช้งานได้:
httpd -V
ลองด้วย 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....
ฉันคิดว่าคุณต้องแน่ใจว่าคุณมีการติดตั้งแบบไบนารีหรือแหล่งที่มา ในการตรวจสอบแพคเกจไบนารีที่ติดตั้ง: ด้วยสิทธิ์ 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)
คุณสามารถใช้ตัวจัดการแพ็คเกจโดยตรง:
dpkg -l | grep apache
สิ่งนี้ไม่ได้มุ่งเน้นไปที่หมายเลขรุ่นแต่จะทำการค้นหาในวงกว้างซึ่งจะให้ข้อมูลที่เป็นประโยชน์อื่น ๆ แก่คุณเช่นรุ่นโมดูล
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
อีกวิธีหนึ่งในการตรวจสอบแพคเกจ (รวมถึง 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
สำหรับฉันมันใช้งานได้กับ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
ฉันพยายามเรียกใช้คำสั่ง "httpd -V" และ "apachectl -V" แต่ฉันไม่สามารถดำเนินการและได้รับข้อผิดพลาด:
-ksh: php: ไม่พบ [ไม่มีไฟล์หรือไดเรกทอรี]
จากนั้นฉันก็ลองอีกวิธีหนึ่ง ฉันไปที่ไดเรกทอรี Apache บนเซิร์ฟเวอร์ของฉันแล้วลองใช้คำสั่ง:
./apachectl -v
สิ่งนี้ใช้ได้สำหรับฉันและส่งคืนผลลัพธ์:
Server version: Apache/2.2.20 (Unix)
Server built: Sep 6 2012 17:22:16
ฉันหวังว่านี่จะช่วยได้.
คุณสามารถใช้หรือ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"
คุณอาจจะชอบ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"
สำหรับฉันapachectl -V
ไม่ได้ทำงาน แต่apachectl fullstatus
ให้ฉันเวอร์ชันของฉัน
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
ทำงานได้ดี
การติดตั้ง 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
จำเป็นต้องอยู่ในไดเรกทอรีปัจจุบันเพื่อให้ใช้งานได้หรือไม่
หรือน้อยลงโดยตรง:
nmap -A localhost -p 80
-bash: nmap: command not found
แน่นอนว่าการพิมพ์/ 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 และเมื่อสร้างหน้านั้นอาจมีประโยชน์ในขณะที่กำลังพัฒนา (อย่าลืมลบออกในสภาพแวดล้อมการผลิต !!)
dlocate -s apache2 | grep '^Version:'