เปลี่ยนโฟลเดอร์เอกสารของ Apache เป็นฮาร์ดไดรฟ์รอง


28

ฉันติดตั้งเซิร์ฟเวอร์รุ่น ubuntu 12.04 สำหรับเซิร์ฟเวอร์ pc ของฉัน ฉันติดตั้งเซิร์ฟเวอร์หลอดไฟแล้ว ฉันต้องเปลี่ยนตำแหน่ง var / www เป็นตำแหน่งที่สองของฮาร์ดดิสก์ ฉันได้รับการกำหนดค่าหลายครั้งเพื่อที่ gedit / etc / apache2 / sites-available / default นี่คือรหัสของฉัน

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    #DocumentRoot /var/www
    DocumentRoot /media/myserver/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    #<Directory /var/www/>
        <Directory /media/myserver/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

และยังใช้

sudo chown -R var/www /media/myserver/

และ

chmod -R 755 /media/myserver/

ยังฉันไม่สามารถเชื่อมต่อ / สื่อ / myserver ของฉันและเบราว์เซอร์ของฉันแสดงข้อความต่อไปนี้

Forbidden

You don't have permission to access / on this server.

กรุณาบอกให้ทุกคนรู้วิธีการติดตั้ง myserver ที่ var / www ของฉันขอบคุณล่วงหน้า


ฟอร์แมตไดรฟ์ที่สองถูกฟอร์แมตและเชื่อมต่อกับไดเร็กทอรี / media / myserver หรือไม่ คุณเพิ่มรายการ fstab สำหรับไดรฟ์นั้นหรือไม่
เมีย

คุณได้ตรวจสอบว่าสแลชต่อท้ายบนรูทเอกสารเป็นปัญหาหรือไม่โปรดสังเกตว่าที่ความคิดเห็นนั้นไม่มีอยู่ แต่ในการแก้ไขของคุณมี
Chris

คุณลองเปลี่ยนไฟล์ apache2.conf หรือไม่
Golden_flash

คำตอบ:


40

คุณจะต้องแก้ไขapache2.confและ000-default.confเปลี่ยนรากของเอกสารของ Apache

เซิร์ฟเวอร์ Apache ได้รับการติดตั้งในvar/www/html. นี่เป็นไดเรกทอรีรากเริ่มต้นของ apache

ทั้งเปลี่ยนไดเรกทอรีรากของ Apache /var/www/htmlหรือย้ายโครงการไป

  1. ในการเปลี่ยนไดเรกทอรีรูทของ Apache ให้รัน:

    cd /etc/apache2/sites-available
    
  2. จากนั้นเปิด000-default.confไฟล์โดยใช้คำสั่ง:

    nano 000-default.conf
    
  3. แก้ไขDocumentRootตัวเลือก:

    DocumentRoot /path/to/my/project
    
  4. จากนั้นรีสตาร์ทเซิร์ฟเวอร์ apache:

    sudo service apache2 restart
    

หากคุณได้รับForbidden You don't have permission to access / on this serverหลังจากเปลี่ยนรูตของ Apache ให้ทำตามขั้นตอนเหล่านี้

  1. ค้นหาที่apache2.confอยู่ใน/etc/apache2และเปิดโดยใช้:

    nano apache2.conf
    
  2. ใช้Ctrl+ Wและค้นหาไดเรกทอรี (ควรอยู่ในบรรทัดที่ 153)

  3. ควรมีลักษณะเช่นนี้

    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all denied
    </Directory>
    
  4. เปลี่ยนเป็น

    <Directory />
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Require all granted
    </Directory>
    
  5. รีสตาร์ท apache

    sudo service apache2 restart
    

ฉันสร้างสคริปต์ที่เปลี่ยนรูต apache ในคำสั่งเดียว คุณสามารถค้นหาได้ในของฉันGitHub


มันเป็นชนิดของการทำงานสำหรับฉัน <Directory /path/to/my/project>Options Indexes FollowSymLinks AllowOverride All Require all denied </Directory>แต่ฉันต้องเพิ่ม ใน/etc/apache2/apahce2.confก่อนที่จะเริ่มต้นใหม่บริการ apache2
r0ng

19

อาจจะสายไปสักหน่อย แต่ยังคง..

คุณควรแก้ไขการอนุญาตไดเรกทอรีใน apache.conf ภายใต้ / etc / apache2

ค้นหาสิ่งนี้

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

และเพิ่มรหัสนี้ภายใต้มันซึ่งให้สิทธิ์ในการเข้าถึงไดเรกทอรีของคุณ

 <Directory /media/myserver/>
            Options Indexes FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>

3

เพียงเปลี่ยนรูทเอกสารในการกำหนดค่าที่เปิดใช้งานของคุณ /etc/apache2/sites-enabled/000-default จากนั้นตรวจสอบให้แน่ใจว่าได้โหลด apache ของคุณใหม่

ดังนั้นลองกับสิ่งนี้:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /media/myserver/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /media/myserver/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

จากนั้นควรได้รับอนุญาตที่เหมาะสมเช่นนี้

sudo adduser <username> www-data
sudo chown -R www-data:www-data /media/myserver/
sudo chmod -R g+rw /media/myserver/

ใช่เพื่อนของฉันฉันทำไปแล้ว ดูรหัสข้างต้นฉันได้แสดงความคิดเห็นรูทเอกสารเริ่มต้นและแทรกรูทเอกสารใหม่ หลังจาก apache2 หยุดและเริ่ม มันไม่ทำงาน เป็นข้อผิดพลาด 403 และแสดงว่าสิทธิ์การเข้าถึงถูกปฏิเสธและเบราว์เซอร์ของฉัน
Kevin - Dhinesh babu

คุณเคยเห็นงานเขียนชิ้นสุดท้ายของฉันหรือไม่
Achu

ใช่ฉันเห็นสิ่งนี้ ยังคงแสดงว่าคุณไม่ได้รับอนุญาตให้เข้าถึง / บนเซิร์ฟเวอร์นี้
Kevin - Dhinesh babu

2

เป็นวิธีแก้ปัญหาอย่างรวดเร็ว (ปลอดภัยและรวดเร็ว) คุณสามารถทำให้จุดติดตั้งของฮาร์ดไดรฟ์ภายนอกของคุณเป็นไดเรกทอรีรากเริ่มต้น (/ var / www โดยค่าเริ่มต้น)

การกำหนดจุดติดตั้งไปยังไดเรกทอรีต่อที่มีอยู่นั้นปลอดภัย แต่ไม่สามารถเข้าถึงเนื้อหาเก่าได้จนกว่าคุณจะยกเลิกการต่อเชื่อมไดรเวอร์

ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการสร้างจุดติดตั้งหมายถึงนี้


ตามความคิดที่ว่าฉันจะติดโฟลเดอร์บางอย่างโดยใช้bindfsตามที่อธิบายไว้ที่นี่: askubuntu.com/a/1024308/566421
pa4080

1

sudo gedit etc/apache2/apache2.conf เพิ่มตัวเลือกนี้ดัชนี FollowSymLinks MultiViews AllowOverride ไม่มีคำสั่งอนุญาต, ปฏิเสธอนุญาตจากทั้งหมด

ในการกำหนดค่าเสมือน:/etc/apache2/sites-available/site.conf

ServerAdmin anilrmg@localhost.com
ServerName anilrmg.localhost.com
ServerAlias www.anilrmg.localhost.com
DocumentRoot /home/anilrmg/projects/code/anilrmg

sudo a2dissite 000-default.conf


1

สำหรับผู้ใช้ VirtualBox ที่เพิ่มเข้ามาและรับ you don't have permission to access /on this serverทุกอย่างที่กล่าวมาข้างต้น:

หากคุณกำลังพยายามตั้งค่าโฟลเดอร์รากเอกสาร Apache เป็นโฟลเดอร์ที่ใช้ร่วมกันของ VirtualBox และคุณลองทุกอย่างด้านบนแล้วและไม่ได้ช่วยอะไรเลยมีขั้นตอนอีกหนึ่งขั้นตอน

ในระยะสั้นการแก้ปัญหาคือการเพิ่มผู้ใช้ 'www-data' ไปยังกลุ่ม 'vboxsf':

sudo usermod -a -G vboxsf www-data

คุณไม่สามารถเปลี่ยนเจ้าของและ / หรือกลุ่มของโฟลเดอร์ที่ใช้ร่วมกัน VirtualBox แต่วิธีการแก้ปัญหาข้างต้นทำงานได้ดีสำหรับฉัน


1

ฉันพบปัญหาเดียวกันเช่นกันและสามารถแก้ไขได้!

สิ่งที่คุณต้องทำคือ

  1. คุณแก้ไข apache2.conf แลกเปลี่ยน/var/www/กับเส้นทางของคุณ: <Directory /your/path/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

  2. ปรับเปลี่ยน 000-default.conf:

    DocumentRoot /your/path/

  3. เปลี่ยนความเป็นเจ้าของไดเรกทอรีเป็นตัวคุณเองจากตัวจัดการไฟล์หรือเทอร์มินัล (เช่น sudo chown pi: path) หากไม่มีสิ่งนี้คุณจะได้รับข้อความ "คุณไม่ได้รับอนุญาตให้เข้าถึง / บนเซิร์ฟเวอร์นี้" ข้อความผิดพลาด.

นั่นคือทั้งหมดที่

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