본문 바로가기
시행착오/laravel

[laravel + php-fpm + nginx + docker] 4. php-fpm.sock을 찾아서..

by 성동원 2024. 3. 5.

2024.03.05 - [시행착오] - [laravel + php-fpm + nginx + docker] 3. 절망.

 

[laravel + php-fpm + nginx + docker] 3. 절망.

2024.03.05 - [시행착오] - [laravel + php-fpm + nginx + docker] 2. 재앙 시작 [laravel + php-fpm + nginx + docker] 2. 재앙 시작 2024.03.05 - [시행착오] - [laravel + php-fpm + nginx + docker] 1. 서버 배포. [laravel + php-fpm + nginx + dock

dongwoning.tistory.com

 

 

이전 글 처럼 진행을 했는데 다음과 같은 에러가 나오더라..

  • unix:/var/run/php/php8.1-fpm.sock failed (2: No such file or directory) while connecting to upstream,

 

 

내용을 보니 .sock  파일을 못찾는 것 같았다.

 

이전 theme-back.conf 의 설정 경로는 잘 맞춘 경로여서 위 와 같은 에러가 나오지 않았는데, 위 에러는 그 때당시 경로를 잘 못 입력해서 나온 에러다.

 

그래서 경로를 맞춰서 잘 적어야 한다.

 

.sock의 경로를 찾아 잘 적어 주면 됨.

 

근대 나는 당시에 .sock 을 못읽었었다...

 

.sock 파일은 php-fpm의 설정파일에서 제어가 가능한대. listen을 해줘야 읽을 수 있다고 한다..;;

 

 

vi /etc/php-fpm.d/www.conf

 

 

 

위 와 같은 경로로 지정을 해줘야함.

근데 저 경로에 다 있다는 건아님. 찾아봐야한다.

 

예상가는 php-fpm.sock 의 위치는 다음과 같다.

 

cd /var/run/php-fpm.sock
cd /run/php-fpm/php-fpm.sock

 

2개 또는 더 있을 순 있다. 아무튼 php-fpm.sock을 찾아서 경로지정을 잘 해줘야 한다.

 

위 처럼 다 설정을 하고 나니 또 이런 에러가 나왔다..unix:/var/run/php-fpm.sock

  • failed (13: Permission denied) while connecting to upstream

 

 

대충 내용을보니  권한이 없다는 뜻 같다.

 

현재 .sock의 위치가 /var/run/php-fpm.sock 이므로. 권한을 줬다.

 

chmod 751 /var/run/php-fpm.sock

 

이럼에도 불구하고 안된다..

 

확인을 해보니.

 

nginx에서 sock 소켓파일을 읽기 위해서 권한을 줘야 한다.

 

먼저.

1. php-fpm 소켓파일의 소유자와 그룹을 확인.
$ ls -l /var/run/php-fpm.sock

2. nginx 사용자 그룹을 확인.
$ grep -i 'user' /etc/nginx/nginx.conf

3. 소켓 파일의 소유자와 그룹이 nginx 사용자와 같은지 확인. 일치하지 않으면 권한 부여 해야함.
$ sudo chown [nginx-user]:[nginx-group] /var/run/php-fpm.sock
ex) sudo chown nginx:nginx /var/run/php-fpm.sock

그리고 나서 재시작.
sudo systemctl restart nginx
sudo systemctl restart php-fpm

 

하고 나니. 에러가 나오지 않았다..!!

 

여기까지 했지만. 한가지 빠트린게 있다. (여긴 나만 해당될듯..)

 

보통 이렇게 하면 laravel + nginx + php-fpm은 연결 될 것 이다.

 

 


 

내가 빠트린 부분...

 

맨처음 laravel git clone을 통해서 소스를 받아 왔는데,

 

.env 파일을 생성하지 않았다.

 

.env.example 파일을 복사해서 .env 로컬에서 진행한 내용을 복사해주면 된다.

 

 

두번째.

 

docker 부분인데, 나는 laravel api 프로젝트를 진행하면서, cache 부분을 적용하고 싶어서 docker를 이용해서 redis를 도입했다.

 

docker 또한 centos7에 설치를 진행했고,

 

docker-compose 를 통해 이미지를 올려서 적용했다.

 

결론은 잘 된다. ㅎ

 

 

 

나는 개발은 찾아가면서 하는데 환경구축이 진짜 너무 어렵다. 환경구축때문에 다 때려치우고 싶기도 하지만. 이것만 해내면.... 잘 된다 아무쪼록.

 

정말 환경구축이라는게 자주 있는 것도 아니고 가끔씩 진행하는데 ( 새프로젝트 진행할때 )

 

그 때마다 잊어버리는데, 이렇게 적어 놓는 습관을 들여야겠다.