안녕하세요.
현재 php-8.3에 redis-server를 설치하여 아래와 같이 설정 했습니다.
별도로 아이디와 암호는 설정하지 않아, DB번호는 1로 설정하여 phpredis_session까지 생성되는 것을 keys * 로 확인 했습니다.
외부 웹 크론으로 실행하면 아래와 같이 타임아웃이 발생되는데, 예상되는 이유를 알 수 있을까 하여 작성하게 되었습니다.
항상 감사드립니다.
PHP | PHP 8.3 |
---|---|
CMS | Rhymix 2.1 |
안녕하세요.
현재 php-8.3에 redis-server를 설치하여 아래와 같이 설정 했습니다.
별도로 아이디와 암호는 설정하지 않아, DB번호는 1로 설정하여 phpredis_session까지 생성되는 것을 keys * 로 확인 했습니다.
외부 웹 크론으로 실행하면 아래와 같이 타임아웃이 발생되는데, 예상되는 이유를 알 수 있을까 하여 작성하게 되었습니다.
항상 감사드립니다.
웹크론은 기본적으로 1분 간격으로 호출하고, 한 번 호출하면 1분간 실행한다고 가정합니다. 그런데 사용하시는 웹크론 서비스나 웹서버가 딱 30초만 기다리고 포기하는 것 같네요. (Duration이 모두 30초로 찍힘)
외부 웹크론 서비스가 30초 후 포기하더라도 실제로 서버 내에서 웹크론 스크립트가 계속 실행되고 있다면 메일이나 문자는 잘 발송될 겁니다. 정상 발송 여부를 테스트해 보세요.
그리고 서버에 뭘 설치할 권한이 있으시다면 웹크론 따위는 고려할 필요도 없습니다. 크론탭을 사용하는 것이 훨씬 안정적이예요.
www-data 계정이 /home/t_share/c_log/cron.log 파일을 생성하거나 수정할 권한이 있나요?
우분투라면 SELinux 문제는 아닐 테고, 각 폴더의 소유권과 퍼미션을 확인해 보셔야겠습니다.
경로에 share라는 단어가 보이는 것이 좀 걸리는데요, 혹시 공유된 폴더라면 권한이 좀더 복잡하겠죠.
이미지와 같이 www-data에게 그룹과 소유자를 주었습니다.
그리고 t_share는 https://xetown.com/tips/1292199 아파치님의UAAI의 APM 경로 주소이고 별도로 공유받거나 한 폴더는 아닙니다.
제가 놓친 부분이 있을까요?
위의 크론탭 설정에는 queue.log가 아니라 cron.log라고 되어 있네요.
cron.log를 생성하고 소유권을 주거나, 상위 폴더(c_log)의 퍼미션을 풀어서 www-data가 새 파일을 생성할 수 있도록 해 주세요. 사용자의 개입 없이 백그라운드에서 실행되는 프로그램이기 때문에, 로그가 없으면 뭐가 잘못되었는지 짐작조차 할 수 없거든요. 로그가 가장 중요합니다.^^
웹(아파치 또는 PHP-FPM)에서는 새로 설치하신 Redis 확장모듈을 인식하는데
PHP-CLI에서는 설치되지 않은 것으로 보는 모양이군요.
우분투 기본 php8.3-redis 패키지를 설치하셨다면 양쪽 모두 똑같이 적용되었을 텐데 이상하네요.
보통 이런 문제는 불필요한 뻘짓(컴파일 설치)을 했을 때나 일어나는 상황이거든요.
웹용 php.ini는 /etc/php/8.3/(apache2 또는 fpm)/php.ini이고
크론탭이나 터미널에서 실행할 때는 /etc/php/8.3/cli/php.ini를 참조합니다.
각각의 설정파일 위치 바로 옆 conf.d 폴더 안에 있는 파일들도 일괄 인클루드하는데,
패키지 설치하면 conf.d 폴더 안에 심볼릭 링크가 생성되기 때문에 자동으로 인식합니다.
다른 방법으로 설치하셨거나, APM 설치 프로그램이 php.ini를 임의로 조작했다면
자동 인식하여 일괄 인클루드하는 기능이 망가져 있을 수도 있습니다.
해결을 했습니다. 원인은 가장 기본적인 것이었는데...
UAAI에서 php의 여러버전을 지원 하기 위해 /usr/bin/php가 아닌 /use/bin/php버전 으로 되어 있습니다.
지금의 경우에는 8.3 버전을 사용하기 때문에 crontab의 명령 커맨드라인은
* * * * * /usr/bin/php8.3 /웹경로/index.php common.cron >> /에러로그_경로/cron.log 2>&1
가 되어야 했던것이지요. 그래서 www-data에서는 없는 /usr/bin/php를 실행하려니 실행이 되지 않아 그랬던 것으로 보입니다..
웹크론 URL을 브라우저에서 직접 접속해 보시고 잘 되는지 확인해 주세요. 브라우저에서는 잘 된다면 외부 웹 크론 서비스에서 사용하는 IP가 차단된 상태일 수 있어요. 방화벽 설정 확인이 필요해요.