저는 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