문제
1. Elastic Beanstalk 사용 중
2. 라라벨 사용 중 로그파일 작성 시
3. config/logging.php 파일에서 로그파일 작성 위치 설정 시
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/'.php_sapi_name().'_ranking_prod.log'), // storage/logs 에 생성 (퍼미션문제 발생)
'path' => 'logs/ranking_prod.log', // public/logs 에 생성 (퍼미션문제 없음)
'level' => 'debug',
'days' => 31,
],
위 설정상 문제는 storage 폴더 접근 권한이 문제이다.
vi /etc/group 으로 확인해보면, AWS 기본계정 ec2-user 는 apache 그룹에 포함 되어 있다.
/public/logs 에 파일을 생성할때는 퍼미션 문제가 발생하지 않는다.
/storage/logs 에 파일을 생성할때는 퍼미션 문제가 발생한다.
그렇다면, 권한이 다르다는 얘기. 실제 퍼미션을 살펴보자
/public/logs 폴더는 apache(소유자) apache(그룹) 으로 구성되어있다.
/public/logs 안에 로그파일들도 apache(소유자) apache(그룹) 으로 구성되어있다.
/storage/logs 폴더는 ec2-user(소유자) apache(그룹) 으로 구성되어있다.
/storage/logs 안에 로그들을 보면 apache(소유자) apache(그룹) 으로 되어있다.
위 권한을 살펴볼때, AWS서버의 기본 소유자는 ec2-user 이고, 로그를 쓰고 서버에 파일을 생성할때는 apache권한으로 쓰게 되는 것을 알수있다.
그렇다면, ec2-user의 권한을 가진 logs 폴더에 apache 권한으로 접근이 가능하도록 apache 그룹을 생성해주면 된다.
AWS 내에서 권한작업은 IAM(Identity and Access Management) 에서 할 수 있다.
IAM 대시보드 -> 그룹 -> 새로운 그룹 생성 -> apache 그룹을 생성 -> 자신의 계정을 선택해서 apache 그룹에 넣어준다.
이렇게 해주면 자신의 계정이 apache 그룹 권한이 생겼다.
이후에 다시 EB에서 테스트해보면 정상적으로 파일 생성 권한을 사용할 수 있을 것이다.
그리고, 로드밸런싱 사용중인 경우 로그파일의 이름이 겹치면 안돼서 php_sapi_name() 를 사용해서 로그명을 기기별로 나눠줘야 된다는 얘기도 있는데, 테스트결과 php_sapi_name() 로 굳이 나눠주지 않아도 된다.
'path' => storage_path('logs/'.php_sapi_name().'_ranking_prod.log')
'path' => storage_path('logs/'.php_sapi_name().'_laravel_prod.log'),
'AWS' 카테고리의 다른 글
[AWS] EC2 Linux 서버 한국표준시간으로 변경하기 (0) | 2021.03.10 |
---|---|
[AWS] Lightsail 서버에 접근 IP 설정하기 (0) | 2021.03.09 |
[AWS] S3 권한 설정 하기 (IAM) (0) | 2021.03.09 |
[AWS] EB(Elastic Beanstalk) .ebextensions 사용하기 (0) | 2021.03.05 |
[AWS] EB(Elastic Beanstalk) 에 SSH로 접속하기 (0) | 2021.03.04 |