본문 바로가기
AWS

[AWS EC2]아파치 웹서버와 PHP연동 (EC2서버로 파일전송)

by Ju_hye 2020. 3. 6.

저번 포스팅에서는 아마존 aws에서 EC2인스턴스를 만들고 아파치 웹서버를 구축했었습니다.

이번에는 만들어놓은 아파치 웹서버에 php코드를 올려볼겁니다. 오늘 필요한 준비물은 git bash입니다.

 

현재 아무런 파일도 없는 상태입니다.

 

 

인터넷에 EC2 서버로 파일을 전송하는 방법을 검색하면 여러 방법이 나오는데, 저는 scp를 이용했습니다. 관련 정보를 서칭하다 알게 된 사실인데, MobaXterm이나 PuTTY를 이용하지 않고 git bash만으로도 EC2인스턴스에 접속할수 있더군요..! (관심있으신 분은 위의 SSH프로그램 없이 한번 진행해보시는것도 좋을 것 같습니다.)

 

더보기
## git bash에서 서버 접속하는 명령어
ssh -i [pem file] [user id]@[ec2 public dns IP]:~/[이동할 파일 경로]
## 예시
ssh -i C:\Users\Secure\Downloads\jhkim9663.pem ubuntu@[자신의 Public DNS IP]:~/

 


이제 옮길 파일을 만들어보겠습니다. 에디터창을 열고 아래의 코드를 입력해주세요.

<?php
//파일명 : phpinfo.php
phpinfo()
?>

이 코드가 잘 돌아가는지 확인하고 싶으신 분들은 xampp등을 이용하여 로컬서버에서 확인하셔도 좋습니다.

이제 옮길 파일이 있는 곳에서 우클릭을 통해 git bash창을 열고 아래의 명령어를 입력해주세요.

만약 git bash에서 위의 명령어를 통해 접속하신 분들은 새 git bash창을 열어주세요

 

##파일 전송시
scp -i [pem file] [upload file] [user id]@[ec2 public IP]:~/[파일이동경로]
##예시
scp -i "C:\Users\Secure\Downloads\jhkim9663.pem" phpinfo.php ubuntu@[자신의 Public DNS IP]:~/
##폴더 전송시
scp -i [pem file] -r [upload folder] [user id]@[ec2 public IP]:~/[파일이동경로]
##예시
scp -i "C:\Users\Secure\Downloads\jhkim9663.pem" -r Desktop/example ubuntu@[자신의 Public DNS IP]:~/

 

pem file : 제 블로그의 AWS 첫번째 포스팅을 보시면 키 페어 파일이라는 것이 나오는데, 여러분들이 그 파일을 받은 경로를 넣어주시면 됩니다. (경로를 넣을때 꼭 "" 안에 넣어주세요.)

user id :  MobaXterm에서 specify username 에 넣었던 디폴트값 ubuntu를 기억하시나요? 그걸 넣어주시면 됩니다.

ec2 public IP : 저번 포스팅에서 IPv4 퍼블릭 IP를 확인했던 화면을 기억하시나요? 그곳에서 퍼블릭 DNS(IPv4)를 찾아 그 값을 넣어주시면 됩니다.

 

오타가 나지 않도록 복사 붙여넣기를 사용하는 것이 좋습니다. git bash창에서 ctrl-v 단축키는 사용할 수 없지만 우클릭으로 paste하면 됩니다.

분홍색으로 지워진 부분은 퍼블릭dns입니다. amazonaws.com으로 끝나는 것은 공통입니다.

위 사진처럼 연결하겠냐고 물을때 yes를 쳐주시면 (영구)연결이 완료되고 파일이 무사히 옮겨지는 걸 볼 수 있습니다.

 

이전에는 없던 phpinfo.php파일이 생긴 것을 볼 수 있습니다.

파일이 무사히 옮겨졌다면 이제 아파치의 홈디렉토리로 이동시켜주어야 합니다. 처음 파일을 업로드할 때 그곳으로 이동시키면 되지 않느냐 하실수도 있지만, 권한문제로 바로 업로드할 수가 없습니다. 이 문제를 해결할 방법도 인터넷에 찾아보면 있겠지만 기본적인 리눅스 명령어에 대해 안다면 파일이동이 어렵지는 않으니 쉽게 가도록 하죠. :)

mv 명령어를 이용하여 해당 파일을 아파치 홈디렉토리로 이동시킵니다.

sudo mv phpinfo.php /var/www/html

파일이 무사히 옮겨졌습니다.

이제 [퍼블릭 IP주소]/phpinfo.php 를 주소창에 치면 됩니다.

이런 창이 떠도 당황하지 마세요

위의 상황은 아파치와 PHP연동이 안되었거나 PHP가 설치되지 않았을때 발생하는 상황입니다.

일단 아래의 명령어로 PHP를 설치합니다.

sudo apt install php libapache2-mod-php ## php 설치
sudo /etc/init.d/apache2 restart  ## 아파치 서버 재시작

설치 후에 창을 새로고침하면 php코드가 제대로 인식됩니다. 만약 바로 되지 않는다면 아파치서버를 재시작하고 다시 시도해보세요.

 

이래도 문제가 생긴다면 아래의 더보기를 눌러주세요.

더보기

php를 설치해도 되지 않는 분들은 apache설정 파일에서 설정을 바꿔주셔야 합니다.

보통 아파치의 설정파일은 httpd.conf인데, 우분투의 아파치는 설정디렉토리의 구조가 다릅니다. /etc/apache2/apache2.conf 는 httpd.conf와 같은 기본설정파일

/etc/apache2/mods-enabled/mime.conf 가 사용할 모듈을 동작하게 하는 설정파일로, 저희가 건드릴 파일입니다.

sudo nano /etc/apache2/mods-enabled/mime.conf

위의 명령어를 치면 해당 설정파일이 나노에디터로 열립니다. (설정파일을 바꿔줘야하니 sudo권한으로 여는걸 잊지 마세요.)

열자마자 바로 AddType... 이라고 시작하는 라인이 보입니다. 파랗게 주석처리가 안된 부분을 보시면 될겁니다.

이곳에 아래의 라인들을 추가하고 저장해주세요.

AddType application/x-httpd-php .php .htm .html .inc
AddType application/x-httpd-php-source .phps

nano 에디터에서 파일을 변경하고 저장하는 방법은 이렇습니다.(이 과정에서 문제가 생긴다면 sudo권한으로 열었는지 확인해보세요.)

라인들을 추가하고 ctrl-x를 누르면 변경된 버퍼를 저장할 것이냐고 묻습니다. y를 눌러주면 됩니다.

 

어떤 이름으로 저장할건지 묻습니다. 따로 파일명을 바꿀 건 아니니 그대로 엔터를 눌러주세요.

이렇게 하면 파일이 정상적으로 수정되었을겁니다. 아파치서버를 재시작하고 다시 [퍼블릭ip주소]/phpinfo.php를 주소창에 쳐서 확인해보세요.

 

 

php 코드가 제대로 인식되는 것을 확인할 수 있습니다.

다음 포스팅에서는 EC2에서 mysql서버를 만들고 php와 연동하는 내용을 포스팅하겠습니다.