본문으로 건너뛰기
  1. Memo/

Ubuntu PHP 메모

·
PHP
작성자
hw5e
page.hw5e.cc
PHP - 이 글은 시리즈의 일부입니다.
1: 현재 글

패키지 이름은 php-fpm이다. .

sudo apt install php-fpm
sudo apt install php8.1-fpm # 버전 이름을 직접 지정하는 경우

버전 이름을 지정하지 않으면 우분투 버전에 따른 기본값에 해당하는 버전을 설치하는 것 같은데 어차피 PHP 패키지는 버전마다 한가지 버전만 있는 것 같다.

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  bzip2 mailcap mime-support php-common php8.1-cli php8.1-common php8.1-fpm php8.1-opcache php8.1-readline
Suggested packages:
  bzip2-doc php-pear
The following NEW packages will be installed:
  bzip2 mailcap mime-support php-common php-fpm php8.1-cli php8.1-common php8.1-fpm php8.1-opcache php8.1-readline
0 upgraded, 10 newly installed, 0 to remove and 6 not upgraded.
Need to get 5256 kB of archives.
After this operation, 21.7 MB of additional disk space will be used.
Do you want to continue? [Y/n]

systemd 서비스 이름은 php버전-fpm이다.

sudo systemctl status php8.1-fpm

alt text
이거 보고 알게된건데 FPM은 FastCGI Process Manager인 것인가보다. 설치하면서 아파치 서버가 같이 설치되면서 실행될 수 있는데 80번 포트를 사용하고 있는 다른 프로그램이 있다면 에러를 뱉는다. 아파치를 안쓸거면 아파치를 지우거나 비활성화 하자.

sudo systemctl disable apache2
sudo apt remove apache2

유닉스 소켓 파일은 /run/php/php8.1-fpm.sock;에 있고 버전 이름이 안붙은 php-fpm.sock도 있는데 php8.1-fpm.sock로 향하는 심볼릭 링크이다.

ls -la /run/php/
total 4
drwxr-xr-x  2 www-data www-data  100 Jan 13 20:51 .
drwxr-xr-x 38 root     root     1160 Jan 13 20:10 ..
lrwxrwxrwx  1 root     root       30 Jan 13 20:51 php-fpm.sock -> /etc/alternatives/php-fpm.sock
-rw-r--r--  1 root     root        7 Jan 13 20:51 php8.1-fpm.pid
srw-rw----  1 www-data www-data    0 Jan 13 20:51 php8.1-fpm.sock

유닉스 소켓에서 TCP로 전환하려면 /etc/php/버전/fpm/pool.d/www.conf 에서 listen = /run/php/php8.1-fpm.socklisten = localhost:9000으로 바꿔야 한다. 소켓 파일의 소유자와 www.conf파일의 내용을 보면 php가 www-data사용자로 실행하는 것을 확인할 수 있었다.

PHP 확장의 패키지 이름은 php버전-모듈이름 이고 마찬가지로 버전을 생략하면 기본값의 버전이 붙는다.

sudo apt install php-mysqli
sudo apt install php8.1-mysqli
cat /lib/systemd/system/php8.1-fpm.service 

[Unit]
Description=The PHP 8.1 FastCGI Process Manager
Documentation=man:php-fpm8.1(8)
After=network.target

[Service]
Type=notify
ExecStart=/usr/sbin/php-fpm8.1 --nodaemonize --fpm-config /etc/php/8.1/fpm/php-fpm.conf
ExecStartPost=-/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81
ExecStopPost=-/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target
Reply by Email
PHP - 이 글은 시리즈의 일부입니다.
1: 현재 글