php-fpm 서버에서의 php_value 를 선언하는 방법.

기존에 mod_php를 사용하는 php 4.x ~ 7.2 까지의 버전에서는 .htaccess 파일에서 php_value 를 설정해서 쓰는 경우가 많았다.

다만 php-fpm의 경우 별도의 데몬으로 작동을 하기 때문에 해당 값을 입력할 경우 500 에러가 발생한다.

아울러서 Apache 의 디렉토리 보안설정의 AllowOverride 설정이 All 또는 Options 으로 설정 되어 있어야 했다.
주: AllowOverride All 은 하위에서 위험한 값들을 변조 가능성을 열어 주기 때문에 보안상 매우 좋지 않으니 되도록이면 하지 말아야 한다.

 

기술적으로 php 5.6의 경우에도 php-fpm 을 사용 할 수 있기 때문에 버전으로 나누기 보다 phpinfo() 에 선언된 값을 보고 php-fpm 인지 판단해야 한다.

20240326_140656

위 캡춰 이미지와 같이 php-fpm 으로 구성된 서버에서는 php 코드 안에서의 ini_set 을 선언하거나 .htaccess 에서 php_value 선언을 해도 무시되거나 500 에러가 발생 한다고 생각 하면 쉽다.

권고 되는 방법은 apache 웹서버내에서 선언되거나 php-fpm 에서 선언 되거나 user.ini 를 불러오도록 설정해서 하는 방법이다. 다만 이경우 서버 설정을 건들이기 때문에 직접 수정이 불가능한 경우가 많겠다.

 

먼저 php.net 에서 공개해둔 메뉴얼 https://www.php.net/manual/en/ini.core.php을 보게 되면 아래와 같이 Changeable 이 공개 되어 있다.

20240326_141221

php_value 으로 변경 할 수 있는 값은 INI_PERDIR 또는 INI_ALL 이다.

INI_SYSTEM 의 경우 PHP_ADMIN_VALUE 으로 선언이 가능하지만.. 일반 계정에서의 선언은 되지 않고 웹서버(apache conf 파일) 에서 선언해야만 인식 한다.

설정 방법은 아래와 같다.

주의 할점은 $_SERVER 으로 전달 하는 부분이기 때문에 하나의 SetEnv만 인식 한다는 부분이다. 여러 가지의 PHP_VALUE 를 선언 하기 위해서는 vi 에디터로 수정을 해야 한다.

Ctrl + v 를 누르면 ^ 부분이 vi 에디터에 입력이 되는데 이후 Enter 를 입력하면 파란색의 ^M 표시기를 입력할 수 있다.
ftp를 이용하려 전송할때 ascii 파일을 binary로 전송했을때 칸 구분에 붙은 그 표기가 맞다.

이를 아래와 같이 입력하면 여러개의 PHP_VALUE 를 사용할 수 있다.

20240326_154447

 

도커 허브에 배포 중인 이미지에서 CI4(CodeIgniter 4) 사용 방법

도커에 이미지를 작성 하여 배포중에 있다.
https://hub.docker.com/search?q=san0123

간단히 서버를 꾸미거나 개발용 PC에 서버 환경을 꾸릴 수 있도록 배포하였고.
Oracle Linux 8 (arm64) 서버에 httpd, php 설치, Docker for windows – centos8(php, httpd) 설치
일반 CMS (wordpress, gnuboard 등등) 를 사용하는데는 큰 지장이 없지만 CI4 를 설치시 환경 구성법을 문의 하는 사람이 있어서 사용법을 적습니다.
 

일단 도커를 설치한 윈도우 또는 Linux 에서 아래와 같은 명령어로 시작을 합니다.

이미지가 없어도 run 할때 정확한 도커URL을 적으면 pull 을 하고 나서 run을 하는 기능이 있으미 바로 run을 하면 된다.
 

실행된 도커 진입 (윈도우나 리눅스 둘다 명령어 같음)

 

아파치 더큐먼트 루트 변경 (컨테이너 안에서 실행)

 

CI4 설치 (컨테이너 안에서 실행)

 

접속 확인 🙂
20240326_093221

RockyLinux 8 미사용 커널 삭제

Linux 상에서 dnf update 를 한  경우 보통은 새로운 업데이트 버전이 설치 되면서 기존 버전을 삭제 하게 되어있다.

다만 일반적인 범주를 벗어나는 java 라든가 python 은 기존 버전의 삭제 없이 다른 이름으로 설치 되어 alternatives에 의해 선택되어 사용 된다.

그리고 또 다른 하나의 경우는 kernel 이 업데이트 된 경우 인데 (8.5 -> 8.9) 이경우 /boot 파티션에 기존 부분 삭제없이 누적 되기 때문에

업데이트를 꾸준히 한경우 /boot 파티션의 용량이 부족한 경우가 발생한다.

 

요점은 /boot 폴더는 보통 용량이 작기 때문에 용량 확보를 위해서 기존 커널을 지워야 한다 ‘ ㅅ’a

손쉽게 삭제가 된다. 🙂

20240304_142946

OCI 구성 서버중 update를 많이 한 웹서버 용량이 73%를 쓰고 있어서 삭제 후 43% 으로 감소 하였음 :).

nginx 설정파일을 vim 으로 변경시 색상 표시

nginx 의 경우 vim 을 이용한 편집시 색상 표기가 되지 않아 눈에 잘 들어오지 않는다.

이는 vim 이 가지고 있는 syntax중 nginx 에 맞는 색상 코드가 존재 하지 않기 때문이고 이를 추가해 줄 경우

색상이 정상적으로 표시가 된다.

 

먼저 아래 와 같이 경로 이동 및 파일 다운로드를 진행한다. (경로 이동중 vim80 부분은 설치된 vim의 버전에 따라 변경 될 수 있다.)

 

이후 filetype.vim 에서 어떤 파일에 해당 syntax를 사용할지 설정해야 한다.

vi /usr/share/vim/vim80/filetype.vim 를 이용해 파일 편집을 진행 한다.

99번째 줄에 apache(httpd) 에 대한 설정이 있는데 그 아래 추가를 하고 저장 한다.

 

nginx.conf 를 vi 로 열었을때 아래와 같이 나온다면 잘 설정이 된것이다.

20240208_133533

 

출처: https://gist.github.com/ralavay/c4c7750795ccfd72c2db

ps. 출처에서는 vim.org 에서 다운받게 하였으나 다운로드 시 잘 안되는 경우가 발생했고, 일부 ssl 관련 설정을 추가해서 nginx.vim.tgz 에 담았음.

nginx 자동 리로드 스크립트

Let’s encrypt 가 snapd 를 이용하여 자동으로 갱신이 이루어 지지만 시작 시점의 인증서를 계속 가져 가기 때문에

nginx 재시작이 되지 않아서 인증서 만료 문제가 발생을 한다.

 

때문에 1일 이내의 갱신된 인증서(let’s encrypt)가 존재할 경우 nginx 를 reload 해서 적용이 되도록 한다.

 

이후 아래와 같이 crontab 에 등록한다.