Amazon linux2 에 REMI 저장소를 사용하여 PHP 8.1 버전 설치하기 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

Amazon linux2 에 REMI 저장소를 사용하여 PHP 8.1 버전 설치하기 정보

웹서버 Amazon linux2 에 REMI 저장소를 사용하여 PHP 8.1 버전 설치하기

본문

AWS 인스턴스를 새로 생성합니다. 

 

 

 

1888934781_1646028503.9556.png

 

amazon-linux-extras 를 사용하여 Nginx , Mariadb 설치

 

1888934781_1646028761.7164.png

 

su 권한으로 접근하시고 amazon-linux-extras 리스트를 출력해보면

 

1888934781_1646028854.4935.png

 

설치 가능한 목록이 나옵니다. 

 

  • [root@ip-172-26-11-232 ec2-user]# amazon-linux-extras install nginx1 mariadb10.5
  •  

입력하여 nginx와 mariadb를 설치

 

 

이제 REMI 저장소와 필요한 패키지를 설치해줍니다.

위 명령어들을 차례로 입력하여 설치해줍니다. (root권한이 아니면 앞에 sudo 를 붙여줘야합니다.)

위 3가지를 설치 완료하면 yum repolist를 입력하여 설치된 저장소를 확인합니다.

  • yum repolist
  •  

1888934781_1646030516.5566.png

 

php 8.1 버전을 설치할 remi 저장소를 허용해줍니다

  • yum-config-manager --disable 'remi-php*'
  • yum-config-manager --enable remi-php81

이제 php 8.1 버전을 설치합니다.

  • yum install php81

php81 --version 으로 설치된 버전을 확인해줍니다.

 

1888934781_1646030848.0097.png

 

이제 php 확장 모듈을 설치해줍니다

  • sudo yum install php81-php-{cli,fpm,mysqlnd,devel,gd,mbstring,curl,xml,pear,bcmath,json,opcache,ldap}
  • yum install php81-php-soap

설치가 마무리되면 php81 --modules로 설치된 모듈을 확인해줍니다

 

1888934781_1646031391.3019.png

 

 

설치를 완료했으니 설정을 해줄 차례입니다

php-fpm 설정

  • vi /etc/opt/remi/php81/php.ini

아래 내용들을 추가 및 수정 해줍니다

(추가)

date.timezone = Asia/Seoul 

(수정)

expose_php = Off
post_max_size = 500M
upload_max_filesize = 200M
memory_limit = 512M

 

php-fpm.conf 파일 수정

 

  • cd /etc/opt/remi/php81
  • vi php-fpm.conf

 

daemonize = yes 주석이 되어있으면 해제

include 문이 주석해제 되어있는지 확인

include=/etc/opt/remi/php81/php-fpm.d/*.conf

 

socket이 생성될 위치를 정해서 디렉토리를 생성해줍니다.

  • mkdir -p /run/php/

재부팅시에 디렉토리 생성시켜주는 파일 생성

  • cd /usr/lib/tmpfiles.d
  • vi php.conf

php.conf 파일에 하단 내용 입력

d /run/php 0755 root root -

 

www.conf 파일 수정

  • cd /etc/opt/remi/php81/php-fpm.d
  • vi www.conf

user = apache
group = apache
listen.owner = nobody
listen.group = nobody
listen.mode = 0660

listen = 127.0.0.1:9000

 

↓↓↓↓↓↓↓↓↓

user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

listen = /run/php/php-fpm.sock

access.log = log/$pool.access.log

access.log = /var/opt/remi/php81/log/php-fpm/$pool.access.log

위의 내용을 아래로 변경하고 주석은 전부 해제해줍니다.

로그 관련 내용 수정

----------------------------------------------------------------------------

access.log = log/$pool.access.log

↓↓↓↓↓↓↓↓↓

access.log = /var/opt/remi/php81/log/php-fpm/$pool.access.log

----------------------------------------------------------------------------
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

↓↓↓↓↓↓↓↓↓

access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"

----------------------------------------------------------------------------

slowlog = /var/opt/remi/php81/log/php-fpm/www-slow.log

↓↓↓↓↓↓↓↓↓

slowlog = /var/opt/remi/php81/log/php-fpm/$pool.slow.log

----------------------------------------------------------------------------

request_slowlog_timeout = 0

↓↓↓↓↓↓↓↓↓
request_slowlog_timeout = 5

----------------------------------------------------------------------------


;catch_workers_output = yes
↓↓↓↓↓↓↓↓

catch_workers_output = yes

----------------------------------------------------------------------------
 

nginx.conf 수정

  • cd /etc/nginx
  • vi nginx.conf

 

root 페이지 수정

 root    /home/ec2-user/www;

원하시는 위치로 설정

 

서버 설정

  • cd /etc/nginx/conf.d
  • vi default.conf

default.conf 파일을 생성해서 아래 내용을 입력해줍니다.

# PHP-FPM FastCGI server
# network or unix domain socket configuration

upstream php-fpm {
        server unix:/run/php/php-fpm.sock;
}  

 

  • cd ..
  • cd default.d
  • vi php.conf

php.conf 파일을 생성해서 아래 내용을 입력해줍니다.

# pass the PHP scripts to FastCGI server
#
# See conf.d/php-fpm.conf for socket configuration
#
index index.php index.html index.htm;

location ~ \.(php|phar)(/.*)?$ {
    fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;

    fastcgi_intercept_errors on;
    fastcgi_index  index.php;
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO $fastcgi_path_info;
    fastcgi_pass   php-fpm;
}

 

테스트 파일 생성

  • cd /home/
  • chmod 701 ec2-user
  • cd /home/ec2-user/
  • mkdir www
  • chmod 701 www
  • cd www
  • chown ec2-user:ec2-user www
  • touch phpinfo.php
  • chown ec2-user:ec2-user phpinfo.php
  • vi phpinfo.php

<?php

    phpinfo();

?>

입력후 저장해줍니다.

 

설정을 완료했으니 패키지들을 실행시켜줍니다

 

1888934781_1646035795.2927.png

 

패키지들을 실행시켜주고 아까 만들었던 경로에 들어가면 

php 버전 정보를 확인 할 수 있습니다.

1888934781_1646036429.1058.png

 

이제 그누보드5를 설치해보겠습니다.

 

서버에 깃을 설치합니다.

  • sudo yum install git

 

DB를 만들고 그에 접근 가능한 계정을 하나 만들어주겠습니다.

  • mysql -uroot -p
  • password를 입력하라고 하면 아무것도 입력하지 않고 엔터를 눌러줍니다.
  • [mariadb]> use mysql
  • [mariadb]> create database 'DB이름';
  • [mariadb]> create user '유저명'@'%' identified by '비밀번호';
  • [mariadb]> select host, user, password from user; 명령어로 유저생성되었는지 확인
  • [mariadb]> show databases; 명령어로 DB 생성되었는지 확인해줍니다.
  • [mariadb]> grant all privileges on DB명.* to '유저명'@'%';
  • [mariadb]> flush privileges;

이제 DB와 %권한의 계정도 생성을 완료했습니다.

 

깃허브에서 그누보드5를 클론해옵니다.

 

그누보드 5를 실행해보면 이런창을 볼 수 있습니다.

 

1888934781_1646038070.991.png

 

페이지에서 요청하는대로 data 디렉토리를 707권한으로 생성해줍니다.

생성하고 새로고침을 누르면 아래 페이지로 동의를 구하는 페이지를 만나고

동의롤 해주면 데이터를 입력해주는 창이 나옵니다.

 

※ 여기서 수정해야할 부분

+ /install/ajax.install.check.php - 55~58라인
if(sql_query("DESCRIBE `{$table_prefix}config`", G5_DISPLAY_SQL_ERROR, $dblink)) {
    die(install_json_msg('주의! 이미 테이블이 존재하므로, 기존 DB 자료가 망실됩니다. 계속 진행하겠습니까?', 'exists'));
}

if(sql_fetch("SHOW TABLES LIKE '{$table_prefix}config'", G5_DISPLAY_SQL_ERROR, $dblink)) {
    die(install_json_msg('주의! 이미 테이블이 존재하므로, 기존 DB 자료가 망실됩니다. 계속 진행하겠습니까?', 'exists'));
}

+ /install/install_db.php - 97~98라인
$sql = " desc {$table_prefix}config";
$result = @sql_query($sql, false, $dblink);

$sql = "SHOW TABLES LIKE '{$table_prefix}config'";
$result = @sql_fetch($sql, false, $dblink);
 

코드를 수정해주시고

 

아까 만들었던 mysql 계정과 비밀번호 DB명을 입력해주고 admin 관리자 비밀번호는 

원하시는 정보로 입력해주시고  다음으로 진행하면

 

1888934781_1646038176.9635.png

 

 

1888934781_1646038812.4257.png

 

설치 완료된 화면을 볼 수 있습니다.

추천
5

댓글 5개

내용과 흐름이 이 분거는 바로 될거 같네 ㅎㅎ 반바지 아저씨 동영상은 아주 코껴서 쓰레기통에 버렸는데 감사합니다.
전체 111
개발자팁 내용 검색 웹서버에서

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT