본문 바로가기
IT

AWS 우분투 웹 서버 셋팅 - PHP 8.x 설치 - HTML에서 PHP 실행

by SOGNOD 2024. 8. 13.
반응형

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
반응형