Amazon linux2 에 REMI 저장소를 사용하여 PHP 8.1 버전 설치하기 정보
웹서버 Amazon linux2 에 REMI 저장소를 사용하여 PHP 8.1 버전 설치하기본문
AWS 인스턴스를 새로 생성합니다.
amazon-linux-extras 를 사용하여 Nginx , Mariadb 설치
su 권한으로 접근하시고 amazon-linux-extras 리스트를 출력해보면
설치 가능한 목록이 나옵니다.
- [root@ip-172-26-11-232 ec2-user]# amazon-linux-extras install nginx1 mariadb10.5
입력하여 nginx와 mariadb를 설치
이제 REMI 저장소와 필요한 패키지를 설치해줍니다.
- yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
- yum -y install yum-utils
위 명령어들을 차례로 입력하여 설치해줍니다. (root권한이 아니면 앞에 sudo 를 붙여줘야합니다.)
위 3가지를 설치 완료하면 yum repolist를 입력하여 설치된 저장소를 확인합니다.
- yum repolist
php 8.1 버전을 설치할 remi 저장소를 허용해줍니다
- yum-config-manager --disable 'remi-php*'
- yum-config-manager --enable remi-php81
이제 php 8.1 버전을 설치합니다.
- yum install php81
php81 --version 으로 설치된 버전을 확인해줍니다.
이제 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로 설치된 모듈을 확인해줍니다
설치를 완료했으니 설정을 해줄 차례입니다
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();
?>
입력후 저장해줍니다.
설정을 완료했으니 패키지들을 실행시켜줍니다
패키지들을 실행시켜주고 아까 만들었던 경로에 들어가면
php 버전 정보를 확인 할 수 있습니다.
이제 그누보드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를 실행해보면 이런창을 볼 수 있습니다.
페이지에서 요청하는대로 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 관리자 비밀번호는
원하시는 정보로 입력해주시고 다음으로 진행하면
설치 완료된 화면을 볼 수 있습니다.
5