นี่คือคำสั่ง apxs ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
apxs - เครื่องมือ APache eXtenSion
เรื่องย่อ
เอพีเอ็กซ์ -g -S ชื่อ=ความคุ้มค่า -n ชื่อดัดแปลง
เอพีเอ็กซ์ -q -v -S ชื่อ=ความคุ้มค่า ] การสอบถาม ...
เอพีเอ็กซ์ -c -S ชื่อ=ความคุ้มค่า -o ดีโซไฟล์ -I รวม -D ชื่อ=ความคุ้มค่า -L ความใคร่ ] [
-l libname -ห้องน้ำ,คอมไพเลอร์แฟล็ก -วอลธงลิงเกอร์ ] ไฟล์ ...
เอพีเอ็กซ์ -i -S ชื่อ=ความคุ้มค่า -n ชื่อดัดแปลง -a -A ] dso-ไฟล์ ...
เอพีเอ็กซ์ -e -S ชื่อ=ความคุ้มค่า -n ชื่อดัดแปลง -a -A ] dso-ไฟล์ ...
สรุป
apxs เป็นเครื่องมือสำหรับสร้างและติดตั้งโมดูลส่วนขยายสำหรับ Apache HyperText
เซิร์ฟเวอร์ Transfer Protocol (HTTP) ทำได้โดยการสร้างวัตถุที่ใช้ร่วมกันแบบไดนามิก
(DSO) จากแหล่งที่มาหรือวัตถุอย่างน้อยหนึ่งรายการ ไฟล์ ซึ่งสามารถโหลดเข้าสู่ Apache . ได้
เซิร์ฟเวอร์ภายใต้รันไทม์ผ่านคำสั่ง LoadModule จาก mod_so
ดังนั้นหากต้องการใช้กลไกส่วนขยายนี้ แพลตฟอร์มของคุณจะต้องสนับสนุนคุณลักษณะ DSO และของคุณ
ต้องสร้างไบนารี Apache httpd ด้วยโมดูล mod_so เครื่องมือ apxs โดยอัตโนมัติ
บ่นว่าไม่เป็นเช่นนั้น คุณสามารถตรวจสอบได้ด้วยตนเองโดยเรียกใช้
คำสั่ง
$httpd-ล
โมดูล mod_so ควรเป็นส่วนหนึ่งของรายการที่แสดง หากข้อกำหนดเหล่านี้คือ
สำเร็จ คุณสามารถขยายฟังก์ชันการทำงานของเซิร์ฟเวอร์ Apache ของคุณได้อย่างง่ายดายโดยการติดตั้งของคุณเอง
โมดูลที่มีกลไก DSO โดยใช้เครื่องมือ apxs นี้:
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/modules/mod_foo.so
chmod 755 /path/to/apache/modules/mod_foo.so
[เปิดใช้งานโมดูล `foo' ใน /path/to/apache/etc/httpd.conf]
$ apachectl รีสตาร์ท
/path/to/apache/sbin/apachectl รีสตาร์ท: httpd ไม่ทำงาน กำลังพยายามเริ่ม
[อ. 31 มี.ค. 11:27:55 1998] [แก้จุดบกพร่อง] mod_so.c(303): โหลดโมดูล foo_module
/path/to/apache/sbin/apachectl รีสตาร์ท: httpd เริ่มต้น
$_
อาร์กิวเมนต์ ไฟล์ สามารถเป็นไฟล์ต้นฉบับ C (.c) ไฟล์อ็อบเจ็กต์ (.o) หรือแม้แต่ไลบรารี
เก็บถาวร (.a) เครื่องมือ apxs จะจดจำส่วนขยายเหล่านี้โดยอัตโนมัติและโดยอัตโนมัติ
ใช้ไฟล์ต้นฉบับ C สำหรับการรวบรวมในขณะที่เพียงแค่ใช้วัตถุและไฟล์เก็บถาวรสำหรับ
ขั้นตอนการเชื่อมโยง แต่เมื่อใช้ออบเจกต์ที่คอมไพล์ล่วงหน้า ให้แน่ใจว่าคอมไพล์แล้ว
สำหรับรหัสตำแหน่งอิสระ (PIC) เพื่อให้สามารถใช้งานได้สำหรับการแชร์ที่โหลดแบบไดนามิก
วัตถุ. ตัวอย่างเช่นกับ GCC คุณเพียงแค่ต้องใช้ -fpic สำหรับคอมไพเลอร์ C อื่นๆ
ศึกษาหน้าคู่มือหรือดูที่แฟล็ก apxs ใช้เพื่อรวบรวมไฟล์อ็อบเจ็กต์
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการสนับสนุน DSO ใน Apache โปรดอ่านเอกสารประกอบของ mod_so หรือบางที
แม้กระทั่งอ่านไฟล์ต้นฉบับ src/modules/standard/mod_so.c
OPTIONS
ร่วมกัน Options
-n ชื่อดัดแปลง
สิ่งนี้กำหนดชื่อโมดูลสำหรับ -i (ติดตั้ง) และ -g (template .) อย่างชัดเจน
รุ่น) ตัวเลือก ใช้สิ่งนี้เพื่อระบุชื่อโมดูลอย่างชัดเจน สำหรับตัวเลือก -g
นี่เป็นสิ่งจำเป็นสำหรับตัวเลือก -i เครื่องมือ apxs พยายามกำหนดชื่อจาก
source หรือ (เป็นทางเลือก) อย่างน้อยก็เดาจากชื่อไฟล์
สอบถาม Options
-q ดำเนินการค้นหาตัวแปรและการตั้งค่าสภาพแวดล้อมที่ใช้ในการสร้าง httpd เมื่อไหร่
เรียกโดยไม่ต้อง การสอบถาม พารามิเตอร์จะพิมพ์ตัวแปรที่รู้จักทั้งหมดและค่าของตัวแปรเหล่านั้น
พารามิเตอร์ -v ทางเลือกจัดรูปแบบเอาต์พุตของรายการ .PP ใช้สิ่งนี้เพื่อใช้งานด้วยตนเอง
กำหนดการตั้งค่าที่ใช้ในการสร้าง httpd ที่จะโหลดโมดูลของคุณ ตัวอย่างเช่น
ใช้ INC=-I`apxs -q INCLUDEDIR` .PP ภายใน Makefiles ของคุณเองหากคุณต้องการคู่มือ
เข้าถึงไฟล์ส่วนหัว C ของ Apache
องค์ประกอบ Options
-S ชื่อ=ความคุ้มค่า
ตัวเลือกนี้จะเปลี่ยนการตั้งค่า apxs ที่อธิบายไว้ข้างต้น
แบบ รุ่น Options
-g สิ่งนี้สร้างไดเรกทอรีย่อย ชื่อ (ดูตัวเลือก -n) และมีสองไฟล์: ตัวอย่าง
ไฟล์ต้นฉบับของโมดูลชื่อ mod_ชื่อ.c ซึ่งสามารถใช้เป็นแม่แบบในการสร้าง
โมดูลของคุณเองหรือเริ่มต้นอย่างรวดเร็วสำหรับเล่นกับกลไก apxs และ
Makefile ที่สอดคล้องกันสำหรับการสร้างและติดตั้งโมดูลนี้ง่ายยิ่งขึ้น
เอสโอ การรวบรวม Options
-c สิ่งนี้บ่งชี้ถึงการดำเนินการคอมไพล์ ก่อนอื่นจะรวบรวมไฟล์ต้นฉบับ C (.c)
of ไฟล์ ลงในไฟล์อ็อบเจ็กต์ที่เกี่ยวข้อง (.o) แล้วสร้างการแชร์แบบไดนามิก
วัตถุใน ดีโซไฟล์ โดยเชื่อมโยงไฟล์อ็อบเจ็กต์เหล่านี้กับไฟล์อ็อบเจ็กต์ที่เหลือ (.o
และ .a) ของ ไฟล์. หากไม่มีการระบุตัวเลือก -o ไฟล์เอาต์พุตจะถูกเดาจาก
ชื่อไฟล์แรกใน ไฟล์ และโดยปกติแล้วจะมีค่าเริ่มต้นเป็น mod_ชื่อ.ดังนั้น.
-o ดีโซไฟล์
ระบุชื่อไฟล์ของอ็อบเจ็กต์ที่แบ่งใช้แบบไดนามิกที่สร้างขึ้นอย่างชัดเจน ถ้าไม่
ระบุและไม่สามารถเดาชื่อจาก ไฟล์ รายการ ชื่อสำรอง
mod_unknown.so ใช้
-D ชื่อ=ความคุ้มค่า
อ็อพชันนี้จะถูกส่งต่อโดยตรงไปยังคำสั่งการคอมไพล์ ใช้สิ่งนี้เพื่อ
เพิ่มการกำหนดของคุณเองในกระบวนการสร้าง
-I รวม
อ็อพชันนี้จะถูกส่งต่อโดยตรงไปยังคำสั่งการคอมไพล์ ใช้สิ่งนี้เพื่อ
เพิ่มไดเรกทอรี include ของคุณเองเพื่อค้นหากระบวนการสร้าง
-L ความใคร่
อ็อพชันนี้จะถูกส่งต่อโดยตรงไปยังคำสั่งลิงเกอร์ ใช้สิ่งนี้เพื่อเพิ่มของคุณ
ไดเรกทอรีห้องสมุดของตัวเองเพื่อค้นหากระบวนการสร้าง
-l libname
อ็อพชันนี้จะถูกส่งต่อโดยตรงไปยังคำสั่งลิงเกอร์ ใช้สิ่งนี้เพื่อเพิ่มของคุณ
ห้องสมุดของตัวเองเพื่อค้นหากระบวนการสร้าง
-ห้องน้ำ,คอมไพเลอร์แฟล็ก
ตัวเลือกนี้ผ่าน คอมไพเลอร์แฟล็ก เป็นแฟล็กเพิ่มเติมสำหรับ libtool --mode=compile
สั่งการ. ใช้สิ่งนี้เพื่อเพิ่มตัวเลือกเฉพาะของคอมไพเลอร์ในเครื่อง
-Wlธงลิงเกอร์
ตัวเลือกนี้ผ่าน ธงลิงเกอร์ เป็นแฟล็กเพิ่มเติมสำหรับ libtool --mode=link
สั่งการ. ใช้สิ่งนี้เพื่อเพิ่มตัวเลือกเฉพาะตัวเชื่อมโยงในเครื่อง
-p ตัวเลือกนี้ทำให้ apxs เชื่อมโยงกับไลบรารี apr/apr-util มีประโยชน์
เมื่อรวบรวมโปรแกรมตัวช่วยที่ใช้ไลบรารี apr/apr-util
เอสโอ การติดตั้ง และ องค์ประกอบ Options
-i หมายถึงการดำเนินการติดตั้งและติดตั้งอย่างน้อยหนึ่งรายการแบบไดนามิก
วัตถุที่ใช้ร่วมกันในเซิร์ฟเวอร์ของ โมดูล ไดเรกทอรี
-a สิ่งนี้จะเปิดใช้งานโมดูลโดยการเพิ่มบรรทัด LoadModule ที่สอดคล้องกันโดยอัตโนมัติ
ไปยังไฟล์คอนฟิกูเรชัน httpd.conf ของ Apache หรือเปิดใช้งานหากมีอยู่แล้ว
-A เหมือนกับตัวเลือก -a แต่คำสั่ง LoadModule ที่สร้างขึ้นนำหน้าด้วยเครื่องหมายแฮช
(#) เช่นโมดูลนี้ถูกเตรียมไว้สำหรับการเปิดใช้งานในภายหลัง แต่ถูกปิดใช้งานในตอนแรก
-e หมายถึงการดำเนินการแก้ไข ซึ่งสามารถใช้ได้กับตัวเลือก -a และ -A
คล้ายกับการดำเนินการ -i เพื่อแก้ไข httpd.conf configuration file ของ Apache
โดยไม่ต้องพยายามติดตั้งโมดูล
ตัวอย่าง
สมมติว่าคุณมีโมดูล Apache ชื่อ mod_foo.c ซึ่งควรขยาย Apache's
การทำงานของเซิร์ฟเวอร์ ในการทำสิ่งนี้ให้สำเร็จ ก่อนอื่นคุณต้องคอมไพล์ซอร์ส C เป็น a
วัตถุที่ใช้ร่วมกันเหมาะสำหรับการโหลดเข้าสู่เซิร์ฟเวอร์ Apache ภายใต้รันไทม์ผ่านทางต่อไปนี้
คำสั่ง:
$apxs -c mod_foo.c
/path/to/libtool --mode=คอมไพล์ gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
$_
จากนั้นคุณต้องอัปเดตการกำหนดค่า Apache โดยตรวจสอบให้แน่ใจว่าคำสั่ง LoadModule เป็น
นำเสนอเพื่อโหลดวัตถุที่ใช้ร่วมกันนี้ เพื่อลดความซับซ้อนของขั้นตอนนี้ apxs มีวิธีการอัตโนมัติ
เพื่อติดตั้งอ็อบเจ็กต์ที่ใช้ร่วมกันในไดเร็กทอรี "โมดูล" และอัปเดตไฟล์ httpd.conf
ตามนั้น สามารถทำได้โดยการรัน:
$ apxs -i -a mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/โมดูล
/path/to/libtool --mode=ติดตั้ง cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[เปิดใช้งานโมดูล `foo' ใน /path/to/apache/conf/httpd.conf]
$_
ด้วยวิธีนี้บรรทัดชื่อ
LoadModule foo_module โมดูล/mod_foo.so
ถูกเพิ่มไปยังไฟล์การกำหนดค่าหากยังไม่ปรากฏ หากคุณต้องการปิดการใช้งานสิ่งนี้
ตามค่าเริ่มต้นให้ใช้ตัวเลือก -A เช่น
$apxs -i -A mod_foo.c
สำหรับการทดสอบกลไก apxs อย่างรวดเร็ว คุณสามารถสร้างตัวอย่างเทมเพลตโมดูล Apache plus
Makefile ที่เกี่ยวข้องผ่าน:
$ apxs -g -n ฟู
การสร้าง [DIR] foo
การสร้าง [FILE] foo/Makefile
กำลังสร้าง [ไฟล์] foo/modules.mk
กำลังสร้าง [FILE] foo/mod_foo.c
กำลังสร้าง [FILE] foo/.deps
$_
จากนั้นคุณสามารถคอมไพล์โมดูลตัวอย่างนี้เป็นอ็อบเจ็กต์ที่ใช้ร่วมกันและโหลดลงใน
เซิร์ฟเวอร์ Apache:
$ ซีดีฟู
$ ทำการรีโหลดทั้งหมด
apxs -c mod_foo.c
/path/to/libtool --mode=คอมไพล์ gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/โมดูล
/path/to/libtool --mode=ติดตั้ง cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[เปิดใช้งานโมดูล `foo' ใน /path/to/apache/conf/httpd.conf]
apachectl รีสตาร์ท
/path/to/apache/sbin/apachectl รีสตาร์ท: httpd ไม่ทำงาน กำลังพยายามเริ่ม
[อ. 31 มี.ค. 11:27:55 1998] [แก้จุดบกพร่อง] mod_so.c(303): โหลดโมดูล foo_module
/path/to/apache/sbin/apachectl รีสตาร์ท: httpd เริ่มต้น
$_
ใช้ apxs ออนไลน์โดยใช้บริการ onworks.net