서버 관리를 위해 CentOS 가상 머신을 사용하는 방법을 배우기 시작했습니다. 간단한 홈페이지를 만들어 보려고 합니다.
Apache 기본 파일이 있기 때문에 /var/www
파일을 작성/만들기/변경하기가 어렵습니다 . 그렇긴 하지만, 홈 페이지를 폴더에 넣고 /var/www
다른 모든 페이지는 폴더에 넣기를 원합니다 /home/$USER/Documents/Website
.
홈페이지의 코드는 href
다른 페이지의 코드일 뿐입니다. 내 컴퓨터에서 코드를 실행하면 작동하지만 홈페이지로 이동하면(브라우저에 IP 입력) 링크가 작동하지 않지만 홈페이지는 여전히 있습니다.
링크를 클릭하면 나타나는 오류는 입니다 404 file not found
.
해당 오류 코드에서 파일 위치를 복사하고 서버에 입력하면
cat {file_location}
파일을 인쇄하는데 문제가 없습니다. Apache 그룹을 이 파일의 소유자로 변경했습니다. Apache 서버가 여기에서 파일을 찾도록 하려면 어떻게 해야 합니까? 편집해야 합니까 http.conf
?
편집: 서버가 이름이 지정된 폴더에서 읽고 쓸 수 있도록 하려면 어떻게 해야 합니까 /Website
?
편집 2: 내가 실행 중인 Apache 버전이 무엇인지 모르겠습니다. CentOS 설치 프로그램을 사용하여 Apache를 설치합니다. /var/www/html/index.html
내 IP 주소를 입력하면 나타나는 페이지입니다 . GUI 패키지를 사용하여 서버를 설치한 후 "보안" 문제가 있음을 알려주는 SELinux 팝업이 표시되므로 이는 SELinux 문제일 가능성이 높습니다. 나는 그것이 말한 스크립트를 실행했고 폴더를 쓸 수 있었습니다 /var/www/html
. 이제 다른 위치에 폴더를 추가하고 싶지만 어떻게 해야 할지 모르겠습니다. 폴더에 쓰기를 방지하는 SELinux 외에도 올바르게 기억한다면 /var/www/html
소유자를 변경하고 실행했습니다.chmod 755
답변1
Apache가 에서 파일만 제공하도록 하려면 /Website
Apache 구성을 편집하여 로 /etc/httpd/conf/httpd.conf
변경한 다음 서버를 다시 로드하세요 .DocumentRoot
/Website
systemctl reload httpd.service
/Website
또한 SELinux 파일 컨텍스트와 그 안에 있는 파일을 변경해야 합니다 . /var/www
( httpd_sys_content_t
또는 ) httpd_sys_rw_content_t
에서와 동일한 파일 컨텍스트를 사용할 수 있습니다 . 새 파일 레이블 지정 규칙을 추가 semanage
하고 restorecon
다음을 사용하여 적용합니다.
semanage fcontext -a -t httpd_sys_rw_content_t "/Website(/.*)?"
restorecon -R -v /Website
예를 들어, 홈 디렉터리에서 사용자 콘텐츠를 제공하도록 Apache를 구성하려는 경우. http://server/~user
, 당신은 그것을 사용할 수 있습니다mod_user 디렉토리. 이를 활성화 /etc/httpd/conf.d/userdir.conf
하고 서버를 다시 로드하십시오.
httpd_read_user_content
액세스를 허용하려면 SELinux 부울을 활성화하십시오 .
semanage boolean -m --on httpd_read_user_content
디렉터리의 파일은 public_html
이미 올바른 httpd_user_content_t
유형으로 구성되어 있어야 합니다. 그렇지 않은 경우 실행하여 restorecon -R -v /home/user/public_html
올바른 파일 컨텍스트를 적용할 수 있습니다.