ฉันจะตรวจสอบโมดูลที่เพิ่มเข้าในการติดตั้ง nginx ได้อย่างไร?
ฉันจะตรวจสอบโมดูลที่เพิ่มเข้าในการติดตั้ง nginx ได้อย่างไร?
คำตอบ:
nginx -V
จะแสดงรายการโมดูลที่กำหนดค่าทั้งหมด ไม่มีคำสั่งเปิดใช้งาน / โหลดอย่างชัดเจน
sudo nginx -V
sudo
บน Ubuntu 14.04
$PATH
ตั้งค่าอย่างถูกต้องสำหรับผู้ที่ไม่ใช่ superusers-ถนัดทั้งหมดsbin
ไดเรกทอรีดังนั้นคุณอาจต้องระบุเส้นทางแบบเต็มของภูต (เช่น/usr/sbin/nginx -V
) sudo
จริงหรือเพียงแค่ใช้
nginx -V
หนึ่งซับที่แตกต่างได้:
2>&1 nginx -V | tr -- - '\n' | grep _module
สะดวกสำหรับการเปรียบเทียบสองสภาพแวดล้อม:
lsmodn="2>&1 nginx -V | tr -- - '\n' | grep _module"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
แก้ไข:
ขอบคุณ Roman Newaza สำหรับการชี้ให้เห็นอย่างถูกต้องว่าสิ่งนี้มีการ--without
รวบรวมธงโมดูล ฉันไม่ได้ใช้--without
แฟล็กและมุ่งเน้นไปที่การรับรายการโมดูลดังนั้นฉันจึงไม่เข้าใจ หนึ่งซับสามารถแก้ไขได้เพื่อช่วยแฟล็กคอมไพล์ระหว่างการติดตั้ง 2 แบบดังนี้:
2>&1 nginx -V | tr ' ' '\n'
ซึ่งเหมือนกับ:
2>&1 nginx -V | xargs -n1
อาจเป็นไปได้ว่าการส่งผ่านsort
คำสั่งปกติเพื่อรวบรวมแฟล็กการรวบรวมและtr
อีกครั้งเพื่อแบ่งการมอบหมายลงในบรรทัดที่ต่างกันได้ ผลสุดท้าย:
lsmodn="2>&1 nginx -V | xargs -n1 | sort | tr = '\n'"
diff -y <(ssh www-prd eval $lsmodn) <(ssh www-qa eval $lsmodn)
ใช้งานได้หากsort
ทำงานเหมือนกันในทั้งโฮสต์ระยะไกล (เช่นเป็นทั้ง GNU หรือ BSD) หากคุณกำลังเปรียบเทียบ Linux กับ BSD (Mac OS X) เพียงแค่ย้าย| sort | tr = '\n'
ชิ้นส่วนออกจากlsmodn
เชลล์ภายในซึ่งsort
จะสอดคล้องกัน:
lsmodn="2>&1 nginx -V | xargs -n1"
diff -y <(ssh linux eval $lsmodn | sort | tr = '\n') <(ssh macosx eval $lsmodn | sort | tr = '\n')
เมสไซเออร์ แต่มันใช้งานได้
2>&1 nginx -V | tr -- - '\n' | grep _module
คำสั่งนั้นผิดทั้งหมดเนื่องจากไม่มีรายการตัวเลือก * ตามที่ติดตั้ง!
nginx -V
คำสั่ง (บนกรณี V) จะแสดงรายการโมดูลทั้งหมดเช่นเดียวกับตัวเลือกเวลารวบรวมอื่น ๆ :
%nginx -V
nginx version: nginx/1.2.2
built by gcc 4.2.1 20070719
TLS SNI support enabled
configure arguments: --prefix=/var/www --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-log-path=logs/access.log --error-log-path=logs/error.log --http-client-body-temp-path=/var/www/cache/client_body_temp --http-proxy-temp-path=/var/www/cache/proxy_temp --http-fastcgi-temp-path=/var/www/cache/fastcgi_temp --http-scgi-temp-path=/var/www/cache/scgi_temp --http-uwsgi-temp-path=/var/www/cache/uwsgi_temp --user=www --group=www --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --with-ipv6 --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
%
โปรดทราบว่าไม่จำเป็นสำหรับsudo
คำสั่งนี้เนื่องจากพลังของ superuser จะต้องใช้โดย nginx สำหรับการเปิดพอร์ตด้านล่างIPPORT_RESERVED
(เช่นพอร์ตที่ต่ำกว่า 1024)และ / หรือไฟล์บันทึกบางไฟล์สำหรับการเขียน
แต่ขึ้นอยู่กับคุณ$PATH
การตั้งค่าที่คุณอาจจะต้องมีการระบุเส้นทางแบบเต็ม - เช่น/usr/sbin/nginx -V
จริงหรือใช้sudo
สำหรับการมีที่เหมาะสมไดเรกทอรีจะรวมอยู่ใน/sbin/
$PATH
เริ่มต้นด้วยการเปิดตัว nginx รุ่นใหม่ - ตั้งแต่nginx 1.9.11
(กุมภาพันธ์ 2559) - โมดูลที่โหลดได้แบบไดนามิกได้รับการสนับสนุนเช่นกัน - http://nginx.org/r/load_module - ด้วยความช่วยเหลือของload_module
คำสั่ง
nginx -V
ไม่แสดงโมดูลทั้งหมดมันแสดงโมดูลประมาณ 20 โมดูลสำหรับฉัน
ฉันใช้strings /usr/sbin/nginx|grep _module|grep -v configure| sort
รายการโมดูลทั้งหมด 200+ รายการใน nginx ของฉัน
ฉันพยายามด้วยobjdump
แต่ดูเหมือนว่า nginx ในการติดตั้งของฉันมีการถอดไบนารี