워프월드 10 · 서버 설치PHP를 설치하고 php-fpm 소켓과 php.ini를 맞춰요.
⏱ 예상 15분🧭 난이도 보통📍 SSH
💡 핵심 한 줄 요약
PHP를 설치한 뒤 php.ini를 직접 만들고, php-fpm이 소켓으로 대기하게 설정해요. php.ini 위치와 OPcache 설정 두 가지가 Termux의 함정이에요.
결과부터 보세요
이 글을 끝내면 php-fpm이 소켓 파일을 만들고 대기해요. nginx가 이 소켓으로 PHP 실행을 맡기게 돼요.
$ php -v
PHP 8.5.1 (cli) (NTS)
$ ls -l $PREFIX/var/run/php-fpm.sock
srw-rw---- 1 u0_a349 u0_a349 0 Oct 29 12:12 php-fpm.sock
준비물
- SSH로 접속한 PC 터미널
- DB가 켜져 있는 상태 (9편)
따라 하기
- PHP를 설치해요. php-gd는 이미지 썸네일을 만들 때 필요해요.
pkg install -y php php-fpm php-gd
- 필요한 확장이 있는지 확인해요. 아래 단어가 모두 나오면 돼요.
php -m | grep -iE "mysqli|curl|mbstring|xml|zip|gd"
- php.ini가 어디서 읽히는지 확인해요. 이게 첫 번째 함정이에요.
php --ini
Configuration File (php.ini) Path: /data/data/com.termux/files/usr/etc/php
Loaded Configuration File: (none)
Loaded가 none이면 PHP가 설정 파일을 하나도 읽지 않고 있다는 뜻이에요. Termux는 etc 폴더 바로 아래가 아니라 etc/php 폴더 안의 php.ini를 읽어요.
- php.ini를 만들어요. 기본 파일이 없어서 필요한 줄만 직접 적어요.
mkdir -p $PREFIX/etc/php
cat >> $PREFIX/etc/php/php.ini <<'EOF'
upload_max_filesize=64M
post_max_size=64M
memory_limit=256M
max_execution_time=120
opcache.enable=0
EOF
마지막 opcache.enable=0이 두 번째 함정을 막아 줘요. Termux에서는 OPcache가 잠금 파일을 만들 폴더에 권한이 없어서, 켜 두면 php-fpm이 시작하자마자 죽는 경우가 있어요.
- 설정이 읽히는지 확인해요. 아래 두 줄이 새 값으로 나오면 성공이에요.
php --ini | grep Loaded
php -i | grep -E "^(upload_max_filesize|memory_limit)"
- php-fpm이 소켓으로 대기하게 설정해요. 설정 파일의 listen 값을 소켓 경로로 바꾸고 권한 줄을 추가해요.
sed -i "s|^listen = .*|listen = $PREFIX/var/run/php-fpm.sock|" $PREFIX/etc/php-fpm.d/www.conf
echo "listen.mode = 0660" >> $PREFIX/etc/php-fpm.d/www.conf
mkdir -p $PREFIX/var/run
- php-fpm을 켜요. user 지시문이 무시된다는 NOTICE는 정상이에요.
php-fpm
- 소켓 파일이 생겼는지 확인해요.
ls -l $PREFIX/var/run/php-fpm.sock
막히는 곳
Cannot create lock – Permission denied (13)가 나오고 소켓이 안 생기면 OPcache 때문이에요. php.ini에 opcache.enable=0이 있는지 확인하세요.
- 설정을 바꿨는데 그대로예요. php –ini의 Loaded 줄이 etc/php/php.ini를 가리키는지 확인하세요. none이면 파일 위치가 틀린 거예요.
- php-fpm이 이미 켜져 있어요. pgrep -a php-fpm으로 확인하고, 설정을 바꾼 뒤에는 pkill -x php-fpm 후 php-fpm으로 다시 켜요.
- NOTICE user directive is ignored가 떠요. 루트가 아닐 때 나오는 안내라서 무시해도 돼요.
받는 결과: php-fpm이 소켓으로 대기해요. 다음 글에서 nginx와 연결해 첫 PHP 페이지를 띄워요.
다음 글 · 11/21nginx 설치하고 첫 페이지 띄우기nginx 설정을 바꿔 8080 포트에서 PHP 페이지를 띄워요.
← 이전 글: MariaDB 설치하고 워드프레스용 DB 만들기
공폰이의 워프월드 전체 목차 (21편)
- 시작하기
- 폰 준비
- 서버 설치
- 09. MariaDB 설치하고 워드프레스용 DB 만들기
- 10. PHP-FPM 설치와 php.ini 위치 찾기
- 11. nginx 설치하고 첫 페이지 띄우기
- 워드프레스
- 도메인 연결
- 운영과 관리