PHP 8.x 설치
ubuntu의 패키지를 업데이트 및 업그레이드를 진행합니다.
sudo apt update // 패키지 업데이트
sudo apt upgrade // 패키지 업그레이드
apt list *fpm으로 php 8 설치의 핵심 패키지를 확인
user@ip-:/var/www/web$ sudo apt list *fpm
Listing... Done
php-fpm/noble 2:8.3+93ubuntu2 all
php8.3-fpm/noble-updates,noble-security 8.3.6-0ubuntu0.24.04.1 arm64
user@ip-:/var/www/web$
PHP-FPM 설치
sudo apt install php8.3-fpm
user@ip-:/var/www/web$ sudo apt install php8.3-fpm
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
php-common php8.3-cli php8.3-common php8.3-opcache php8.3-readline
Suggested packages:
php-pear
The following NEW packages will be installed:
php-common php8.3-cli php8.3-common php8.3-fpm php8.3-opcache php8.3-readline
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 5098 kB of archives.
After this operation, 24.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y (선택)
php-fpm 설치 메세지...
Creating config file /etc/php/8.3/mods-available/opcache.ini with new version
Setting up php8.3-cli (8.3.6-0ubuntu0.24.04.1) ...
update-alternatives: using /usr/bin/php8.3 to provide /usr/bin/php (php) in auto mode
update-alternatives: using /usr/bin/phar8.3 to provide /usr/bin/phar (phar) in auto mode
update-alternatives: using /usr/bin/phar.phar8.3 to provide /usr/bin/phar.phar (phar.phar) in auto mode
Creating config file /etc/php/8.3/cli/php.ini with new version
Setting up php8.3-fpm (8.3.6-0ubuntu0.24.04.1) ...
Creating config file /etc/php/8.3/fpm/php.ini with new version
Created symlink /etc/systemd/system/multi-user.target.wants/php8.3-fpm.service → /usr/lib/systemd/system/php8.3-fpm.service.
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for php8.3-cli (8.3.6-0ubuntu0.24.04.1) ...
Processing triggers for php8.3-fpm (8.3.6-0ubuntu0.24.04.1) ...
Scanning processes...
Scanning candidates...
Scanning linux images...
Pending kernel upgrade!
Running kernel version:
6.8.0-1012-aws
Diagnostics:
The currently running kernel version is not the expected kernel version 6.8.0-1013-aws.
Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting.
Restarting services...
Service restarts being deferred:
/etc/needrestart/restart.d/dbus.service
systemctl restart networkd-dispatcher.service
systemctl restart systemd-logind.service
systemctl restart unattended-upgrades.service
No containers need to be restarted.
User sessions running outdated binaries:
user @ session #: sshd[68]
user @ session #: sshd[68]
user @ user manager service: systemd[67]
No VM guests are running outdated hypervisor (qemu) binaries on this host.
user@ip-:/var/www/web$
PHP 8.3-fpm 상태 확인
설치가 완료되고 잘 작동되고 있는지 확인하기 위해서 sudo systemctl status php8.3-fpm 명령어를 실행합니다. 앞서 특정 버전을 설치했다면 php뒤에 버전을 함께 작성해서 확인하면 됩니다.
sudo systemctl status php8.3-fpm
서비스가 정상적으로 실행되고 있습니다. 출력된 내용을 보면 서비스는 php8.3-fpm.service로 작동되며 conf 파일은 아래 로그정보와 같이 "/etc/php/8.3/fpm/php-fpm.conf" 에 파일이 존재 합니다.
user@ip-:/var/www/web$ sudo systemctl status php8.3-fpm
● php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php8.3-fpm.service; enabled; preset: enabled)
Active: active (running) since Tue 2024-07-13 00:10:30 KST; 3min 40s ago
Docs: man:php-fpm8.3(8)
Process: 83408 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d>
Main PID: 83.. (php-fpm8.3)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 1080)
Memory: 7.5M (peak: 8.2M)
CPU: 52ms
CGroup: /system.slice/php8.3-fpm.service
├─83... "php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)"
├─83... "php-fpm: pool www"
└─83... "php-fpm: pool www"
Aug 13 00:10:30 ip-172-31-43-79 systemd[1]: Starting php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager...
Aug 13 00:10:30 ip-172-31-43-79 systemd[1]: Started php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager.
Nginx 웹 서버와 php8.3-fpm 연동 하기
php 패키지를 설치 후 Nginx 웹서버가 .php 파일을 서비스할 수 있도록 일부 서버 블록을 구성 합니다.
Nginx 웹 서버와 php8.3-fpm 설정
Nginx 서버 블록을 설정하여 PHP 파일을 처리하도록 구성합니다. /etc/nginx/sites-available/default 파일을 수정하거나 새로운 서버 블록 파일을 생성할 수 있습니다.
기본 서버 블록 수정 또는 서버 블록(멀티 도메인) 파일 수정
sudo nano /etc/nginx/sites-available/default
sudo nano /etc/nginx/sites-available/domain1.co.kr
해당 파일을 열러 'server' 블록을 다음과 같이 수정합니다.
server_name 뒤에는 서버의 도메인 이름이나 IP 주소로 변경합니다.
php8.3-fpm.sock은 설치한 PHP 버전에 맞게 조정합니다.
추가로 PHP 파일 확장자가 .html인 경우에도 PHP로 인식되도록 설정을 추가 합니다.
server {
listen 80;
server_name domain.co.kr www.domain.co.kr;
root /var/www/web;
index index.php index.html index.htm;
charset utf-8;
location ~ \.(php|html|htm)$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
php-fpm 설정 수정
php-fpm 설정 파일을 열고 security.limit_extensions 디렉티브를 사용하여 PHP 코드를 실행할 수 있는 확장자 목록에 .html을 추가합니다.
security.limit_extensions = .php .html .htm
sudo nano /etc/php/8.3/fpm/pool.d/www.conf
Nginx 구성 파일 테스트 및 재시작
설정 파일에 오류가 없는지 확인한 후, Nginx를 재시작합니다.
sudo nginx -t
systemctl restart nginx php8.3-fpm
user@ip-:/var/www/web$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
user@ip-:/var/www/web$ sudo systemctl restart nginx
user@ip-:/var/www/web$
진짜 마지막으로 PHP 용 MySQLi 확장 모듈 설치
PHP MySQLi 확장 모듈 설치
PHP에서 MySQLi 확장 모듈이 설치되어 있지 않을 경우, 아래 명령어를 사용하여 설치합니다. 설치 명령어는 사용하는 PHP 버전에 따라 다를 수 있습니다.
위에 설치한 PHP 8.3을 예로 들겠습니다.
sudo systemctl restart php8.3-fpm
sudo apt install php8.3-mysqli
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'php8.3-mysql' instead of 'php8.3-mysqli'
The following NEW packages will be installed:
php8.3-mysql
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 125 kB of archives.
After this operation, 568 kB of additional disk space will be used.
Get:1 http://ap-northeast-2c.clouds.ports.ubuntu.com/ubuntu-ports noble-updates/main arm64 php8.3-mysql arm64 8.3.6-0ubuntu0.24.04.1 [125 kB]
Fetched 125 kB in 2s (62.4 kB/s)
Selecting previously unselected package php8.3-mysql.
(Reading database ... 104285 files and directories currently installed.)
Preparing to unpack .../php8.3-mysql_8.3.6-0ubuntu0.24.04.1_arm64.deb ...
Unpacking php8.3-mysql (8.3.6-0ubuntu0.24.04.1) ...
Setting up php8.3-mysql (8.3.6-0ubuntu0.24.04.1) ...
Creating config file /etc/php/8.3/mods-available/mysqlnd.ini with new version
Creating config file /etc/php/8.3/mods-available/mysqli.ini with new version
Creating config file /etc/php/8.3/mods-available/pdo_mysql.ini with new version
Processing triggers for php8.3-fpm (8.3.6-0ubuntu0.24.04.1) ...
Processing triggers for php8.3-cli (8.3.6-0ubuntu0.24.04.1) ...
Scanning processes...
Scanning candidates...
Scanning linux images...
Pending kernel upgrade!
Running kernel version:
6.8.0-1012-aws
Diagnostics:
The currently running kernel version is not the expected kernel version 6.8.0-1013-aws.
Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting.
PHP-FPM 재시작
PHP-FPM을 사용하는 경우, PHP-FPM 서비스를 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart php8.3-fpm
'IT' 카테고리의 다른 글
윈도우 패키지 관리도구 Chocolatey(Choco) 설치 (3) | 2024.08.18 |
---|---|
AWS EC2 우분투 - MariaDB(MySQL) 설치 방법 (2) | 2024.08.17 |
AWS EC2 우분투(Ubuntu) 서버 셋팅 - 압축파일 관련 패키지 설치 (2) | 2024.08.12 |
AWS 우분투 - Nginx 웹서버 설치 (2) | 2024.08.12 |
AWS EC2 우분투(Ubuntu) MySQL 셋팅 - 외부에서 mysql 접속 허용 (2) | 2024.08.04 |