Apache는 파일 서비스를 제공하지 않습니다

Apache는 파일 서비스를 제공하지 않습니다

저는 Apache2 웹 서버를 설정하고 있는데 어떤 이유로 웹 브라우저를 통해 액세스할 수 있도록 파일을 제공하지 않습니다.
문서 루트가 올바르게 설정되었으며 파일은 www-data가 소유합니다(환경 변수로 Apache를 실행하는 것과 동일).

....com/hello.txt를 통해 파일에 액세스하려고 하면 다음과 같은 결과가 나타납니다.

Not Found

The requested URL /hello.txt was not found on this server.
Apache/2.4.25 (Debian) Server at ....... Port 80

내 구성 파일(일부 주석 줄이 제거됨):

<VirtualHost *:80>

    #serverName www.example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /srv/www/linuxvm232b/public

    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    #Include conf-available/serve-cgi-bin.conf

    <Directory "/srv/www/linuxvm232b/public">
        AllowOverride None
        Require all granted
    </Directory>

</VirtualHost>

원본 사진

디렉토리 목록:

root@linuxvm232:/etc/apache2/sites-available# ll /srv/www/linuxvm232b/public/
total 14
drwxr-xr-x 2 www-data www-data 6   Mar 4   14:58 assets
-rwxr-xr-x 1 www-data www-data 0   May 11  21:10 hello.txt
-rwxr-xr-x 1 www-data www-data 907 Mar 4   14:58 index.html
drwxr-xr-x 2 www-data www-data 4 Mar 4 14:58 src
root@linuxvm232:/etc/apache2/sites-available#

원본 사진

답변1

스크린샷에서 볼 수 있듯이 /srv 디렉토리를 사용하여 파일을 제공하고 있는데, 제가 아는 한 이는 데비안의 기본 방식이 아닙니다.

/etc/apache2/apache2.conf가 Apache 서버가 /srv 디렉토리에 액세스하도록 허용하는지 확인하십시오. 표준 구성에서는 이 디렉토리에 대한 액세스가 금지되어 있습니다.

다음과 같은 주석 항목이어야 합니다.

#<Directory /srv/>
#   Options Indexes FollowSymLinks
#   AllowOverride None
#   Require all granted
#</Directory>

블록의 주석 처리를 해제하고 apache2를 다시 로드하면 systemctl reload apache2 /srv의 디렉터리에 액세스할 수 있습니다.

또한 다음을 통해 사이트가 활성화되어 있는지 확인하십시오 a2ensite linuxvm232b.systemctl reload apache2

관련 정보