이번에 Cent Os에서 LEMP 스택을 모두 설치하고 워드프레스를 구동중에 자꾸 Access denied. 가 나온것에 대한 트러블 슈팅이다.
일단 nginx의 에러로그를 확인하면 아래와 같이 나왔다.
nginx 로그같은경우 vi /etc/nginx/conf.d/default.conf 에러 error 경로에 따라 다르니 참고.
나같은경우 /var/log/nginx/web.error.log
[error] 6689#6689: *7 FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0Unable to open primary script: /var/www/html/index.php (Permission denied)" while reading response header from upstream
마지막에 떡하니 Permission denied라고 적혀있다.(권한거부)
그래서 php-fpm의 설정에 들어가서 확인해봤는데(vi /etc/php-fpm.d/www.conf)
아래와 같이 모두 nginx 로 잘설정되어있음..
그럴경우 SELinux를 의심해봐야한다.(제일 늦게의심함 ㅠㅠ 하루 날렸다)
위 SELinux 에러같은경우 Cockpit으로 확인한것이므로 웹콘솔로 볼것을 추천한다.
SELinux Error 내용
- If you want to allow httpd to read user content
You must tell SELinux about this by enabling the ‘httpd_read_user_content’ boolean.
=>httpd가 사용자 컨텐츠를 읽도록 하려면 ‘httpd_read_user_content’를 활성화 시켜야함 - If you believe that php-fpm should be allowed read access on the index.php file by default.
You should report this as a bug. You can generate a local policy module to allow this access.
=> php-fpm 이 index.php를 읽어야하는경우 로컬 정책 모듈을 생성해야함.
해결방법.
- SELinux ‘httpd_read_user_content’ 활성화
=> setsebool -P httpd_read_user_content 1 - php-fpm이 index.php를 읽도록 로컬 정책 모듈 생성
=>ausearch -c ‘php-fpm’ –raw | audit2allow -M my-phpfpm
semodule -X 300 -i my-phpfpm.pp
터미널로 다시 접속해서 위 해결방법 시도
그리고 다시 Access Denied 떴던 웹서버 접속.
됐다 ; 후.. 망할 Cent 8… SELinux를 조심하자