ทุกการตั้งค่าจะแตกต่างกัน สำหรับฉันฉันมีผู้ใช้จำนวนมากบนเซิร์ฟเวอร์ที่เว็บไซต์โฮสต์แต่ละแห่งสำหรับคุณคุณอาจไม่จำเป็นต้องสร้างมากกว่าหนึ่งผู้ใช้ในระบบ อย่างไรก็ตามหากคุณจัดการหลายเว็บไซต์ในเซิร์ฟเวอร์นี้การตั้งค่านี้จะช่วยให้คุณจัดการกำหนดค่าและดีบักแต่ละโดเมนในแบบที่ง่ายกว่าการตั้งค่า LAMP มาตรฐาน เพื่อที่จะเกิดขึ้นฉันใช้อุปกรณ์ต่าง ๆ โดย Apache เพื่อแก้ไขข้อผิดพลาดเกี่ยวกับการอนุญาต
อย่างแรกนี่คือโครงสร้างเอกสารที่ฉันใช้:
/home/[USER]/domains/[DOMAIN]/html
/home/[USER]/domains/[DOMAIN]/logs
ผู้ใช้แต่ละคนมีบัญชีของตัวเองพร้อมโฟลเดอร์โดเมน (ซึ่งฉันเพิ่มเข้าไปเพื่อ/etc/skel
ให้มันถูกสร้างขึ้นทุกครั้งแต่ละโดเมนมีโฟลเดอร์ของตัวเองในdomains
โฟลเดอร์ที่มีhtml
โฟลเดอร์ (ฉันมีเหตุผลของฉันในเรื่องนี้ส่วนใหญ่โดเมนสามารถมีไฟล์เว็บภายนอก ของขอบเขตสาธารณะ) อย่าลังเลที่จะแก้ไขโครงสร้างนี้ตามที่เห็นสมควร
ประการที่สองฉันโฮสต์เว็บไซต์ PHP จำนวนมากดังนั้นฉันจึงใช้ suPHP ในการกำหนดค่าของฉัน ตามค่าเริ่มต้นแพคเกจการเก็บถาวรมาตรฐานไม่ได้เปิดใช้งานการคอมไพล์การตั้งค่าสถานะที่เหมาะสมส่งผลให้ suPHP รุ่นที่มีความปลอดภัยน้อยลง ฉันสร้างแพ็คเกจ suPHP ของตัวเองซึ่งฉันใช้บนเซิร์ฟเวอร์ของฉันคำแนะนำในการติดตั้งด้านล่าง suPHP ช่วยให้คุณสามารถกำหนดสคริปต์ PHP ที่ผู้ใช้ควรดำเนินการเป็น (เหนือสิ่งอื่นใดรวมถึง: ที่กำหนดเอง php.ini สำหรับแต่ละเว็บไซต์ ฯลฯ ) ฉันยังเปิดใช้งาน suExec สำหรับ Apache - ช่วยขจัดความจำเป็นในการเป็นเจ้าของให้กับผู้ใช้ข้อมูล www (ผู้ใช้ที่ฉันดูถูก)
ก่อนอื่นให้แน่ใจว่าคุณมี Apache และบริการอื่น ๆ ทั้งหมดที่ติดตั้งบนเซิร์ฟเวอร์ของคุณ ตรวจสอบให้แน่ใจว่าทำงานอย่างน้อย หลังจากนั้นฉันแนะนำให้ติดตั้งsuphp-common และโมดูล libapache2-mod-suphp ที่จำเป็น (ข้อมูลเพิ่มเติม: PPA คืออะไรและฉันจะใช้มันได้อย่างไร ) จากนั้นหลังจากติดตั้งแล้วให้เปิดใช้งาน suPHP และ suexec โดยใช้a2enmod
sudo a2enmod suphp
sudo a2enmod suexec
sudo a2dismod php5
sudo /etc/init.d/apache restart
ถัดไปจะเป็นไฟล์กำหนดค่า ฉันได้สร้างเครื่องมือต่าง ๆ ที่สร้างไฟล์กำหนดค่าโดยอัตโนมัติทุกครั้งที่ฉันเพิ่มเว็บไซต์ใหม่ อย่างไรก็ตามนี่คือเทมเพลตพื้นฐานที่ฉันใช้:
<VirtualHost *:80>
ServerAdmin [EMAIL]
ServerName [DOMAIN]
ServerAlias www.[DOMAIN] [DOMAIN]
DocumentRoot /home/[USER]/domains/[DOMAIN]/html
<Directory /home/[USER]/domains/[DOMAIN]>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
</Directory>
ErrorLog /home/[USER]/domains/[DOMAIN]/logs/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /home/[USER]/domains/[DOMAIN]/logs/access.log combined
SuexecUserGroup [USER] [USER]
suPHP_UserGroup [USER] [USER]
suPHP_ConfigPath /home/[USER]/etc
</VirtualHost>
สิ่งนี้ตั้งค่าการบันทึกสำหรับโดเมนนั้นรูทเอกสารและสิ่งจำเป็นพื้นฐานอื่น ๆ ทั้งหมดสำหรับโดเมนที่จะใช้งาน ฉันวางไฟล์เหล่านี้ใน/etc/apache2/sites-available/
ชื่อปกติ[USER]-[DOMAIN]
และเปิด / ปิดการใช้งานด้วยa2ensite
เช่น:
sudo a2ensite [USER]-[DOMAIN]
sudo a2dissite [USER]-[DOMAIN]
หลังจากการแก้ไขแต่ละไฟล์ Apache จะต้องมีการโหลดใหม่ด้วย
sudo /etc/init.d/apache reload
ในขณะที่มันอาจดูเหมือนเป็นเรื่องมากที่จะตั้งค่าจำนวนความยืดหยุ่นที่ได้รับ แต่ในความคิดของฉันนั้นมีค่ามากกว่าเวลาการตั้งค่า แม้ว่าคุณจะต้องการเพียงเว็บเซิร์ฟเวอร์ของผู้ใช้คนเดียว แต่ในอนาคตหากคุณต้องการสิ่งอื่นนอกเหนือจากเว็บเซิร์ฟเวอร์ผู้ใช้เพียงครั้งเดียวคุณจะต้องดำเนินการเพิ่มเติม