AWS 에 PHP 웹 프로젝트 뜨도록 셋팅하는 방법

세차왕·2020년 9월 9일
2
post-thumbnail

안녕하세요 세차왕 개발팀에 도미닉이라고 합니다.

사내 기술 공유 목적으로 글을 작성하였는데 회사 기술 블로그에도 공유하면 어떨까 생각하게 되서 이렇게 블로그를 만들게 되었습니다.

세차왕 기술 블로그, 세차왕에 앞으로 많은 관심 부탁드립니다.

이번 글에서는 AWS EC2 에 PHP 로 만들어진 웹 프로젝트를 띄워보도록 하겠습니다.

1. AWS 에 가입해서 로그인

각자 가입할 수 있다고 생각한다.

2. 콘솔에 접속해 인스턴스 생성


AWS 메인 페이지 상단 오른쪽에 콘솔에 로그인 버튼을 클릭해 콘솔 페이지로 이동한다.

전체 서비스 - 컴퓨팅 - EC2 를 선택한다.

왼쪽 메뉴에서 인스턴스 - 인스턴스 를 클릭한다.

상단에 파란색 인스턴스 시작 버튼을 클릭한다.

가장 상단에 Amazon Linux 를 선택한다.

원하는 사양을 선택 후 검토, 다음을 누르면 위와 같이 키 페어를 선택하는 페이지가 뜬다.

서버에 접속하기 위해 필요한 파일로 중요한 파일이다.

기존에 만든 적이 없다거나 뭔지 잘 모르겠다면 "새 키 페어 생성" 을 선택한 후 원하는 키 페어 이름을 작성하고 키 페어 다운로드 버튼을 클릭해서 키 페어 파일을 다운로드 받는다.

키 페어 파일을 다운로드 받으면 인스턴스 시작 버튼을 누를 수 있게 되며 인스턴스 시작을 눌러 인스턴스 생성을 완료한다.

  1. 터미널로 인스턴스에 접속

ssh -i <인증서이름 경로, 이름>.pem ec2-user@<서버IP>

로 접속해주면 됩니다.

맥의 경우 다운로드 받은 인증서는 Downloads 폴더에 가면 있습니다.

터미널을 연 뒤에 Downloads 폴더로 이동하고 위에 명령어로 접속하면 접속이 됩니다.

Permissions 0644 for './{key_name}' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "'./{key_name}'": bad permissions

위와 같은 에러 메세지가 뜨는 경우는 이는 key의 권한 관련 에러 인데요.

간단한 해결 방법은 아래 코드와 같이 키의 권한(Permission)을 chmod를 통해 400으로 변경해 주시면 됩니다.

$ chmod 400 ./{key_name}

  1. 인스턴스에 FTP 로 접속할 수 있도록 vsftpd 설정
    서버에 정상적으로 접속이 되었으면 콘솔에 아래 명령어를 쳐서 vsftpd 패키지를 설치한다.

sudo yum install vsftpd

y 를 눌러서 설치를 진행한다.

vsftpd 설정을 변경하기 위해 설정 파일을 연다.

sudo vim /etc/vsftpd/vsftpd.conf

파일 중간에 anonymous_enable=YES 라고 되어 있는 부분에서 YES 를 NO 로 변경한다.

저장하고 빠져나온다.

  1. 인스턴스에 FTP 로 접속할 수 있도록 포트 열기

AWS 인스턴스 목록에서 네트워크 및 보안 - 보안 그룹을 클릭한다.

보안 그룹을 만든 적이 없다면 <보안 그룹 생성> 버튼을 클릭한다.

보안 그룹 이름과 설명은 임의로 작성해도 된다.

인바운드 규칙에 규칙 추가를 누르고 FTP 를 통신을 위한 21번 포트와 페이지를 띄워줄 8080번 포트, ssh 접속을 위한 22번 포트, http 연결을 위한 80번 포트를 열어준다.

소스는 위치 무관으로 하는데 자신의 IP 를 알고 있다면 원하는 범위로 조정하면 된다.

보안 그룹 변경을 해야한다.

인스턴스 목록에서 작업중인 인스턴스를 오른쪽 클릭해서 보안 그룹 변경을 선택한다.

우리가 만든 보안 그룹으로 변경한다.

  1. FTP 연결
    파일질라를 이용해 FTP 연결을 할 것이다.

파일질라가 설치되어있지 않다면 인터넷에 검색해서 설치한다.

파일 질라를 실행한 뒤에 왼쪽 위에 끝에 사이트 관리자를 클릭한다.

프로토콜은 SFTP 를 선택하고 호스트는 인스턴스의 IP 를 입력한다.

로그온 유형은 키 파일로 하고 사용자 이름은 ec2-user 를 입력한다.

키 파일은 AWS 에서 인스턴스를 생성하면서 다운로드 받은 pem 인증서를 선택한다.

FTP 연결이 된다.

  1. FTP 로 bitnami 설치 파일 업로드하고 설치하기

apache, mysql, php 를 한번에 설치하는 방법 중에 bitnami 가 있다.

참고로 저희가 사용 중인 버전인 5.6.4 버전은 아래 링크에서 다운로드 받을 수 있다.

https://downloads.bitnami.com/files/stacks/lampstack/5.6.4-0/bitnami-lampstack-5.6.4-0-dev-linux-x64-installer.run

파일질라에 오른쪽 영역에 이 파일을 드래그해서 넣으면 업로드가 진행된다.

쉘에서 이 설치 파일에 실행 권한을 주고 실행합니다.

chmod 700 bitnami-lampstack-5.6.4-0-dev-linux-x64-installer.run

./bitnami-lampstack-5.6.4-0-dev-linux-x64-installer.run

처음에는 Y 를 누르고 그 뒤에 아무것도 입력하지 않고 엔터만 눌러서 진행한다.

Is the selection above correct 에서 Y 를 선택해 설치를 진행한다.

폴더를 선택하라고 하는데 기본 경로로 진행하기 위해 그냥 아무것도 입력하지 않고 엔터를 누른다.

MySQL 에 루트 패스워드를 입력하고 엔터를 누른다.

진행하시겠냐는 질문에 Y 를 누르면 설치가 시작된다.

진행할지 물어볼 때 엔터 누르고 Launch Bitnami LAMP Stack 에서 Y 누르고 또 다시 엔터를 누르면 설치가 완료된다.

  1. 웹페이지 뜨는지 확인

정상적으로 설치되었다면 기본 페이지가 떠야한다.

인스턴스 IP:8080 으로 접속을 하면 기본 페이지가 뜬다.

ex) 172.31.23.194:8080 으로 입력하면 bitnami 기본 페이지가 떠야한다.

  1. 자신의 웹 프로젝트 업로드하기

bitnami 는 apache2/htdocs 경로에 있는 파일이 기본 페이지로 표시가 된다.

나를 따라했으면 기본 페이지가 아래 경로에 있을 것이다.

/home/ec2-user/lampstack-5.6.4-0/apache2/htdocs

이 경로에 있는 파일, 폴더를 전부 삭제하고 위 경로에 웹 프로젝트를 업로드하면 인스턴스 IP:8080 에 표시될 것이다.

  1. PHP 설정

짧은 태그를 활용하고 있다면 php.ini 파일에 short_open_tag 을 On 으로 변경해야 한다.

bitnami 에서 php.ini 은 /home/ec2-user/lampstack-5.6.4-0/php/etc/php.ini 에 위치해있다.

vi 편집기로 파일을 연다.

short_open_tag = Off 로 되어있는 부분을 찾아서 Off 를 On 으로 변경한다.

php 가 아닌 확장자에 php 코드가 있다면 그 확장자를 등록해줘야한다.

/home/ec2-user/lampstack-5.6.4-0/apache2/conf/httpd.conf 파일을 연다.

아래로 내리다보면 AddType application/x-httpd-php .php .phtml 이라는 코드가 보인다.

이 부분에 .phtml 뒤에 추가할 확장자를 입력해주면 된다.

만약 html 에서 php 코드를 사용한다고 하면 위 사진처럼 .html 을 추가해주면 된다.

찾기 힘들다면 터미널에서 esc 를 누르고 /을 입력하고 원하는 검색어를 입력하면 코드를 찾을 수 있다.

위 사진에 네모친 부분처럼 입력하고 엔터를 누른 뒤에 다음 검색을 찾으려면 n 을 누르면 된다.

설정을 바꾼 뒤에는 아파치를 재시작해야지 바뀐 설정이 반영된다.

만약 index.php 가 짧은 태그로 실행되고 있다면 첫 페이지가 안뜰 수 있다.

이럴 때는 위에 설정은 변경한 뒤 아파치를 재시작하고 새로고침하면 웹 프로젝트가 잘 뜰 것이다.

아파치를 재시작하는 방법은 메인 디렉토리(/home/ec2-user/lampstack-5.6.4-0) 로 와서 아래 명령어를 실행하면 된다.

./ctlscript.sh restart

  1. 80번 포트로 접속 허용하기
    지금까지 8080번 포트로 페이지를 열 수 있었다.

하지만 우리는 보통 url만 적어서 80번 포트로 페이지를 연다.

AWS 에서 80번 포트를 열려면 조금 복잡하다.

루트 계정을 활용해야 하고 웹페이지를 띄우는 계정 또한 변경이 필요하다.

80번 포트로 접속을 해도 8080번 포트로 여는 것과 동일하게 페이지가 열리는 방법이 있다.

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

이 명령어를 통해 80번 포트로 접속했을 때 8080번 포트로 리다이렉트를 할 수 있다.

이렇게 해서 인스턴스의 IP 로 접속했을 때 뒤에 :8080 을 붙이지 않더라도 페이지를 띄울 수 있다.

참고 :
dololak.tistory.com/648

idchowto.com/?p=30828

extbrain.tistory.com/21

m.blog.naver.com/PostView.nhn?blogId=carrotcarrot&logNo=220680470792&proxyReferer=https:%2F%2Fwww.google.com%2F

community.bitnami.com/t/installer-with-php-5-6-11/49782/2

codechacha.com/ko/use-80port-in-aws/

profile
세차왕 기술블로그입니다.

0개의 댓글