เซิร์ฟเวอร์สปาร์ตันแบบคงที่ที่มีคุณสมบัติมากมาย:
เซิร์ฟเวอร์ที่รู้จักใช้ SPSRV:
คำถาม / การสนับสนุน
สารบัญ
go installคุณมีสามตัวเลือก:
Prebuilt Binaries สำหรับ Darwin และ Linux Architectures ARM/AMD-64 มีให้ตั้งแต่ V0.5.4 ตรงไปที่หน้าแท็กบน git.sr.ht คลิกที่แท็กที่ต้องการและดาวน์โหลดไบนารีสำหรับสถาปัตยกรรมของคุณ
go install ก่อนอื่นคุณต้องติดตั้งและมีโฟลเดอร์ ~/go ด้วย $GOPATH ชี้ไปที่มัน
go install git.sr.ht/~hedy/spsrv@latest
จะมีไบนารีที่ ~/go/bin/ ด้วยซอร์สโค้ดที่ ~/go/src/
อย่าลังเลที่จะย้ายไบนารีที่อื่นเช่น /usr/sbin/
โปรดทราบว่าขอแนะนำให้ปักหมุดเวอร์ชันล่าสุด @v0.0.0 มากกว่าการกระทำล่าสุดเนื่องจากอาจไม่คงที่
เรียกใช้ git clone https://git.sr.ht/~hedy/spsrv จากไดเรกทอรีและ cd spsrv ใด ๆ
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งและทำงานแล้ว
git checkout v0.0.0 # recommended to pin a specific tag
make build
เมื่อเสร็จสิ้นไบนารีจะอยู่ใน ./bin bin
หากคุณไม่ได้ทำคุณสามารถ go build (เพียงแค่เวอร์ชันนั้นและข้อมูลการสร้างจะไม่สามารถใช้ได้กับ spsrv --version )
หากคุณไม่ต้องการติดตั้ง GO หรือโคลน repo และสถาปัตยกรรมของคุณไม่ได้รับการสนับสนุนในไบนารี prebuilt ให้วางอีเมลไปยังกล่องจดหมายสาธารณะของฉัน (หรือติดต่อฉันเป็นการส่วนตัว) ดังนั้นฉันอาจรวบรวมไบนารีสำหรับสถาปัตยกรรมของคุณ
ตำแหน่งไฟล์กำหนดค่าเริ่มต้นคือ /etc/spsrv.conf คุณสามารถระบุเส้นทางของคุณเองได้โดยเรียกใช้ SPSRV เช่น
spsrv -c /path/to/file.conf
คุณไม่จำเป็นต้องใช้ไฟล์กำหนดค่าเพื่อให้ SPSRV ทำงานอยู่มันจะใช้ค่าเริ่มต้น
โปรดทราบว่าตัวเลือกนั้นไม่รู้สึกตัว
นี่คือตัวเลือกการกำหนดค่าและค่าเริ่มต้นของพวกเขา
ทั่วไป
port=300 : พอร์ตเพื่อฟังhostname="localhost" : หากตั้งค่านี้คำขอใด ๆ ที่สำหรับชื่อโฮสต์นอกเหนือจากค่านี้จะถูกปฏิเสธrootdir="/var/spartan" : โฟลเดอร์สำหรับการดึงไฟล์รายชื่อไดเรกทอรี
dirlistEnable=true : เปิดใช้งานรายการไดเรกทอรีสำหรับโฟลเดอร์ที่ไม่มี index.gmidirlistReverse=false : ย้อนกลับลำดับของไฟล์ที่แสดงรายการdirlistSort="name" : วิธีการเรียงลำดับไฟล์มีเพียง "ชื่อ", "ขนาด" และ "เวลา" ได้รับการยอมรับ ค่าเริ่มต้นเป็น "ชื่อ" หากพบตัวเลือกที่ไม่รู้จักdirlistTitles=true : ถ้าเป็นจริงรายชื่อไดเรกทอรีจะใช้ส่วนหัวระดับบนสุดแรกในไฟล์ *.gmi แทนชื่อไฟล์~ ผู้ใช้/ ไดเรกทอรี
userdirEnable=true : เปิดใช้งานการให้บริการ /~user/* คำขอuserdir="public_spartan" : ไดเรกทอรีรูทสำหรับผู้ใช้ สิ่งนี้ไม่ควรมีสแลชต่อท้ายและสัมพันธ์กับ /home/user/userSubdomains=false : ผู้ใช้ vhosts ไม่ว่าจะอนุญาตให้ user.host.name/foo.txt เหมือนกับ host.name/~user/foo.txt (เมื่อ hostname="host.name" ) หมายเหตุ : สิ่งนี้ใช้ได้เฉพาะเมื่อตั้งค่าตัวเลือก hostname เท่านั้นCGI
CGIPaths=["cgi/"] : รายการเส้นทางที่ไฟล์ที่สามารถใช้งานได้ทั่วโลกจะถูกเรียกใช้เป็นกระบวนการ CGI เส้นทางเหล่านี้จะถูกตรวจสอบหากเป็นคำนำหน้าเส้นทางที่ร้องขอ สำหรับค่าเริ่มต้นคำขอของ /cgi/hi.sh (การร้องขอไปยัง ./public/cgi/hi.sh เป็นต้น) จะเรียกใช้สคริปต์ hi.sh หากสามารถปฏิบัติการได้ทั่วโลกusercgiEnable=false : เปิดใช้งานสคริปต์ CGI ของผู้ใช้ที่เรียกใช้ด้วย สิ่งนี้เป็นอันตรายเนื่องจาก SPSRV ไม่ได้เปลี่ยน UID ของกระบวนการ CGI ดังนั้นกระบวนการจะถูกเรียกใช้โดยผู้ใช้รายเดียวกันที่เรียกใช้เซิร์ฟเวอร์ซึ่งอาจหมายถึงการเข้าถึงไฟล์การเข้าถึงไฟล์การกำหนดค่า ฯลฯ โปรดทราบว่าตัวเลือกนี้จะถือว่าเป็น false หาก userdirEnable ถูกตั้งค่าเป็น false ซึ่งหมายความว่าหากไม่ได้เปิดใช้งานไดเรกทอรีผู้ใช้จะไม่มี CGI ต่อผู้ใช้ตรวจสอบตัวอย่าง configuraton ในตัวอย่าง/ ไดเรกทอรี
คุณสามารถแทนที่ค่าในไฟล์ config หากคุณระบุจากบรรทัดคำสั่ง:
Usage: spsrv [ [ -c <path> -h <hostname> -p <port> -d <path> ] | --help | --version ]
-c, --config string Path to config file
-d, --dir string Root content directory
-h, --hostname string Hostname
-p, --port int Port to listen to
โปรดทราบว่าคุณ ไม่สามารถ ตั้งค่าชื่อโฮสต์หรือเส้นทาง DIR , เพราะ SPSRV ใช้สิ่งนั้นเพื่อตรวจสอบว่าคุณให้ตัวเลือกหรือไม่ คุณไม่สามารถตั้งค่าพอร์ตเป็น 0 ได้ขออภัยข้อ จำกัด นี้มาพร้อมกับข้อได้เปรียบของความสามารถในการแทนที่ค่าการกำหนดค่าจากบรรทัดคำสั่ง
ไม่มีข้อโต้แย้งที่ต้องการเมื่อเรียกใช้ SPSRV เฉพาะตัวเลือกตามที่ระบุไว้ด้านบน :)
ค่าสภาพแวดล้อมต่อไปนี้ถูกตั้งค่าสำหรับสคริปต์ CGI:
GATEWAY_INTERFACE # CGI/1.1
REMOTE_ADDR # Remote address
SCRIPT_PATH # (Relative) path of the CGI script
SERVER_SOFTWARE # SPSRV
SERVER_PROTOCOL # SPARTAN
REQUEST_METHOD # Set to nothing
SERVER_PORT # Port
SERVER_NAME # Hostname
DATA_LENGTH # Input data length
บล็อกข้อมูลถ้ามีจะถูกส่งเป็น stdin ไปยังกระบวนการ CGI
โปรดทราบว่าสคริปต์ CGI (ณ ตอนนี้) ดำเนินการโดยผู้ใช้รายเดียวกันกับกระบวนการเซิร์ฟเวอร์ดังนั้นโดยทั่วไปแล้วจะเป็นอันตรายสำหรับการอนุญาตให้ผู้ใช้มีสคริปต์ CGI ของตัวเอง ดูส่วนการกำหนดค่าสำหรับรายละเอียดเพิ่มเติม
ตรวจสอบตัวอย่างสคริปต์ CGI ในตัวอย่าง/ ไดเรกทอรี
ตัวอย่างการกำหนดค่าบริการ SystemD ยังมีการระบุไว้ที่นั่น อย่าลังเลที่จะมีส่วนร่วมสำหรับระบบปฏิบัติการอื่น ๆ :)
โปรดใช้ #Spartan Channel บน tilde.chat irc หรือกล่องจดหมายสาธารณะของฉัน
ทั้งคู่อยู่ที่ด้านบนของเอกสารนี้
แพตช์ -> กล่องจดหมายสาธารณะ
/โฟลเดอร์ไป /โฟลเดอร์ /เปลี่ยนเส้นทาง
รายชื่อไดเรกทอรี
เข้าสู่ระบบไฟล์
~ ไดเรกทอรีผู้ใช้
ส่วนที่ทำงานของ Refactor Dir Dir
การกำหนดค่า
CGI
SCGI
เซิร์ฟเวอร์หลายเครื่องกับ Confs แต่ละตัวของพวกเขาเอง
readme: