วิธีกำหนดค่า apache2 ด้วยลิงก์สัญลักษณ์ใน / var / www /


14

ฉันต้องการติดตั้งเว็บเซิร์ฟเวอร์ในตัวบน Ubuntu (14.04) ดังนั้นฉันจึงติดตั้งซอฟต์แวร์ทั้งหมดเพื่อรับเซิร์ฟเวอร์ LAMP

ปัญหาคือฉันทำสิ่งผิดปกติกับการสร้าง virtualhosts ของฉัน ฉันต้องการสร้างโดเมนย่อยที่แตกต่างกันในพื้นที่ของฉัน ดังนั้นสำหรับตัวอย่าง site1.localhost และ site2.localhost

ในของฉัน/var/www/ไดเรกทอรีฉันสร้างสัญลักษณ์การเชื่อมโยง "site1" /home/user/Workspaces/site1ไป

ในไฟล์ Apache error.log ของฉันฉันได้รับข้อผิดพลาดดังต่อไปนี้

[core:error] [pid 12679] [client 127.0.0.1:59006] AH00037: Symbolic link not allowed or link target not accessible: /var/www/site1

ในการกำหนดค่า apache ของฉันฉันมี:

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

ดังนั้นฉันคิดว่ามีบางอย่างผิดปกติกับสิทธิ์ของโฟลเดอร์ ฉันค้นหาใน Google และพบว่ามีคนสองสามคนที่มีปัญหาเดียวกัน แต่คำตอบทั้งหมดที่ให้ไว้นั้นไม่ได้ผล ฉันเพิ่มชื่อผู้ใช้ของตัวเองลงในกลุ่มข้อมูล www และสิ่งเช่นนั้น

ดังนั้นls -la /var/wwwผลตอบแทน:

total 12
drwxrwsr-x  3 user www-data 4096 okt 13 19:08 .
drwxr-xr-x 14 root root     4096 okt  1 22:50 ..
drwxr-xr-x  2 root www-data 4096 okt  1 22:50 html
lrwxrwxrwx  1 root www-data   29 okt 13 19:08 site1 -> /home/user/Workspaces/site1/

และls -la /home/juul/Workspaces/site1ผลตอบแทน:

total 24
drwxrwxr-x 4 user www-data 4096 okt 13 18:21 .
drwxrwx--- 3 user user     4096 okt 13 17:31 ..
-rw-rw-r-- 1 user user        0 okt 13 18:21 index.html
drwxrwxr-x 4 user www-data 4096 okt 13 16:12 .metadata
drwxrwxr-x 5 user www-data 4096 okt 13 16:53 Project

หวังว่าบางคนสามารถช่วยฉันด้วย :-) นี้

คำตอบ:


5

การอนุญาตเหล่านี้ป้องกันไม่ให้apacheคุณเข้าถึง

drwxrwx--- 3 user user     4096 okt 13 17:31 ..

คุณต้องให้สิทธิ์ดำเนินการแก่ผู้อื่น:

chmod o+x /home/juul/Workspaces/

(และอาจจะ/home/juul/เช่นกัน)


ตามคำตอบ @muru ตรวจสอบให้แน่ใจว่าไดเรกทอรีที่มีทั้งหมดมีชุดสิทธิ์ "x" หากไม่มีแล้วมันจะไม่ทำงาน
dawez

3

ฉันมี apache มาตรฐานติดตั้งใน 14.04 ไม่มีไฟล์หรือไดเรกทอรีที่ระบุ "www-data" คุณเปลี่ยนสิ่งเหล่านี้ด้วยตัวเองเหรอ? มีข้อมูลจำนวนมากที่ล้าสมัยหรือไม่ถูกต้องเกี่ยวกับวิธีการตั้งค่าเว็บเซิร์ฟเวอร์ดังนั้นควรระมัดระวังผู้ที่คุณติดตามและเลิกทำสิ่งที่ไม่ได้ผล

ที่กล่าวว่า "site1" ควรอยู่ในhtmlไดเรกทอรีและเป็นของคุณ มันไม่จำเป็นต้องเป็น symlink จริงๆ คุณสามารถระบุไดเรกทอรีอื่นในไฟล์กำหนดค่า บางสิ่งเช่นนี้

# Add this to the end of the existing 000-default.conf file (after "</VirtualHost>")
<VirtualHost *:80>
    <Directory  /home/user/Workspaces/site1>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    DocumentRoot /home/user/Workspaces/site1
    ServerName site1
</VirtualHost>

1

โซลูชันสำหรับ: ลิงก์สัญลักษณ์ไม่อนุญาตหรือเป้าหมายลิงก์ไม่สามารถเข้าถึงได้: /var/www/html/mySymbolicLinkการเชื่อมโยงสัญลักษณ์ไม่ได้รับอนุญาตหรือการเชื่อมโยงเป้าหมายไม่สามารถเข้าถึงได้:

สิ่งนี้ชัดเจนว่ามีปัญหากับการอนุญาต ปัญหาคือว่า html ภายใต้ไดเรกทอรีบ้านของคุณเป็นเจ้าของโดยผู้ใช้ของคุณและเซิร์ฟเวอร์ apache จะถูกเรียกใช้โดยผู้ใช้รายอื่นดังนั้นจึงไม่สามารถเข้าถึงไดเรกทอรีบ้านของคุณ

โซลูชันจะเพิ่มผู้ใช้ที่เรียกใช้ apache ในกลุ่มของคุณตามปกติเหมือนกับชื่อผู้ใช้ของคุณ ดังนั้นในกล่อง CentOS ของฉันฉันทำตาม:

sudo usermod -a -G dev apache

ดังนั้นนี่เป็นการเพิ่ม apache ผู้ใช้ให้กับกลุ่ม dev ตอนนี้ฉันต้องให้สิทธิ์การดำเนินการ

ใน/home:

chmod g+x dev -R

การดำเนินการนี้จะให้สิทธิ์ดำเนินการไปยังโฟลเดอร์ของฉันสำหรับสมาชิกของกลุ่มเท่านั้น และนั่นมัน คุณจะต้องปรับเปลี่ยนการใช้งาน Apache www-dataสำหรับสิ่งที่กำลังเรียกใช้เว็บเซิร์ฟเวอร์ของคุณผมเชื่อว่าสำหรับอูบุนตูผู้ใช้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.