설치 중 보안을 고려하여 DocumentRoot를 별도의 파티션에 배치할 계획이므로 논리 파티션에 이를 위해 특별히 디렉터리를 만들었습니다: /Dmnr
파티션을 마운트하려면 /etc/fstab을 다음으로 설정하세요:
코드:…
LABEL=/Dmnr /Dmnr ext3 기본값은 1 2
디렉터리가 생성된 후 웹사이트 콘텐츠를 해당 디렉터리의 www/html에 복사하고 /etc/httpd/conf/httpd.conf를 다음과 같이 수정합니다.
[php]
…
DocumentRoot “/Dmnr/www/html”
…
…
[/php]
Apache를 다시 시작하면 다음 오류 메시지가 나타납니다.
코드: #service httpd restart
httpd 시작: 경고: DocumentRoot [/Dmnr/www/html]가 존재하지 않습니다
[ 알았어 ]
물론 서버는 제대로 작동하지 않을 것입니다. Apache는 이것이 디렉터리가 아니라고 생각합니다. 그러나 DocumentRoot ""를 다른 디렉터리로 지정하면 문제가 없으며 서버는 정상적으로 작동합니다.
해결책:
1. SELinux 구성(생략...)은 다음을 참조하세요.
http://www.chinalinuxpub.com/read.php?wid=1010
http://blog.josesun.org/archives/2004_08/2
2. html 디렉토리 권한 수정:
1. 웹사이트 콘텐츠 디렉터리를 확인하세요
[php]
#ls -Z /Dmnr/www/html
[/php]
상태는:
[php]
-rwxr-xr-x someuser somegroup index.php
…
[/php]
2. 당연히 SELinux 권한이 없으므로 다음과 같이 수정하세요.
[php]
chcon -R -t httpd_user_content_t /Dmnr/www/html
[/php]
다시 보면 이렇습니다.
[php]
-rwxr-xr-x someuser somegroup user_u:object_r:httpd_sys_content_t index.php
…
[/php]
httpd를 다시 시작하면 일반 PHP가 작동합니다.
3. 데이터베이스
1. MySQL
그러나 데이터베이스를 읽고 쓸 때 SELinux에서 거부됩니다. /var/lib/mysql 또는 /var/lib/pgsql로 이동하여 권한에 문제가 없는지 확인하세요.
[php]
-rw-rw——- mysql mysql 루트:object_r:mysqld_db_t ibdata1
-rw-rw——- mysql mysql 루트:object_r:mysqld_db_t ib_logfile0
-rw-rw——- mysql mysql 루트:object_r:mysqld_db_t ib_logfile1
drwx —— mysql mysql root:object_r:mysqld_db_t mysql
srwxrwxrwx mysql mysql 루트:object_r:mysqld_var_run_t mysql.sock
drwx —— mysql mysql root:object_r:mysqld_db_t 테스트
[/php]
하지만 데이터가 있는 테스트 라이브러리를 살펴보면 자체 구축된 테이블에 여전히 SELinux 권한이 없다는 것을 알 수 있습니다. 상관없습니다. 수정하면 됩니다.
[php]
chcon -R -t mysqld_db_t /var/lib/mysql
[/php]
참고! 여기서 SELinux 속성은 mysqld_db_t
입니다.
2. pgsql
PostgreSQL 라이브러리도 열었지만 이 방법을 사용하여 속성을 수정하지 못했습니다.
[php]
chcon: 레이블이 지정되지 않은 파일 pgsql/data/base/23456에 부분 컨텍스트를 적용할 수 없습니다.
chcon: 레이블이 지정되지 않은 파일 pgsql/data/base/12345에 부분 컨텍스트를 적용할 수 없습니다
[/php]
/var/lib/pgsql/data/base로 이동하여 자체 빌드된 라이브러리 12345 및 23456에는 속성을 적용할 수 없는 것으로 나타났습니다. 정보 찾느라 정신이 없었는데 오랫동안 정보가 없었으니 잊어버리세요!
[php]
#su - postgres
위 내용은 관련 내용을 포함하여 Warning: DocumentRoot 오류에 대한 해결 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.