본문 바로가기
코딩과 알고리즘

AWS(아마존 웹서비스) 웹서비스 자동 시작 & PHP 설치

지난 시간에는 AWS 프리티어 서버를 세팅하고 nginx 웹서비스를 설치하여, 
홈페이지를 띄워보는 부분까지 알아보았습니다.
그리고 소요 시간이 소진되지 않게 서버를 중지하는 부분까지 진행했었는데요.

itadventure.tistory.com/372

 

AWS ( 아마존 웹서비스 ) 웹서버 만들기

AWS ( 아마존 웹서비스 ) 에 대해 아시나요? :) AWS 를 공부할 일이 있어서 며칠동안 알아본 결과 몇가지는 알아내고 몇가지는 아직 불분명한 상태여서 좀 더 학습이 필요한데요. 우선 알아낸 부분

itadventure.tistory.com

이번 시간에는 서버를 시작하는 부분부터 진행해보도록 하겠습니다.

먼저 아마존 서비스에 접속하신 다음,

aws.amazon.com/ko/

제일 먼저는 콘솔에 접속해 주세요.

그리고 최근 방문한 서비스EC2 를 선택하시거나,
최근에 방문한게 너무 많아서 보이지 않는 경우라면 전체 서비스EC2를 선택하시면 됩니다

그리고 인스턴스 메뉴를 선택,

지난번 생성한 인스턴스 PC의 체크상자를 선택하고, 인스턴스 시작을 선택해주세요.
노파심에 한번 더 말씀드리지만 서버를 삭제할 생각이 아닌 이상 절대로 인스턴스 종료는 손대지 마세요.

그리고 인스턴스 ID 선택,

이후 화면은 연결, 다음 화면에서도 연결입니다.
잠깐, 그 전에 먼저 퍼블릭 URL 주소를 먼저 복사 아이콘을 클릭해서 복사해 준 다음 진행해 주세요.
그래야 다시 이 화면으로 돌아오는 번거로움을 없앨 수 있습니다.

그러면 지난번 내용처럼 아래의 리눅스 터미널 접속 화면에 화면에 뜹니다.

이제 웹브라우저를 열어, 금방 복사했던 퍼블릭 URL 주소를 붙여넣어 봅시다.

그러면 지난번 처럼 Very Thank you 페이지가 열리겠지요?
아니! 이럴수가?
페이지 오류가 나는군요? 왜 그럴까요?

         :
         :
         :

그것은 서버컴퓨터를 껐다 켰기 때문입니다.
여러분께서 만일 한글프로그램으로 문서 작업을 하다가
컴퓨터를 완전히 껐다 켜면 
한글프로그램이 자동으로 실행되지는 않지요? ( 노트북 절전 모드에서 복귀하는 경우는 예외입니다 ㅎ.. )
그와 같은 원리입니다.

"카카오톡"이나 "백신 프로그램"은 컴퓨터를 다시 켜도 자동으로 뜨지 않나요?"

네 맞습니다. 그런 경우를 서비스 프로그램이라고 합니다.

윈도우 서비스 프로그램이거나 자동실행 프로그램인 경우는
그와 달리 컴퓨터를 껐다 켜도 자동으로 실행이 되는데요.

우리의 훌륭한 웹서버 nginx 도 사실은 서비스 프로그램입니다.
하지만 자동으로 작동하지 않는 것은 서비스 자동 시작을 걸어놓지 않았기 때문이지요.

이제 서비스 자동 시작을 걸어놓도록 하겠습니다.
이제 sudo su - root 명령으로 root 계정으로 변경하시고요

아래 명령을 내려 nginx 서비스를 서버컴퓨터가 켜질 때 자동으로 시작하게 해줍니다.

systemctl enable nginx

이제 터미널 창을 닫고, 인스턴스 연결 창에서 2번 뒤로 돌아가면 다시 인스턴스 연결 창이 나옵니다.
인스턴스 체크 상자가 선택된 상태에서 인스턴스를 중지하시고 난 다음,

F5 키로 페이지를 새로 고침하여 중지됨이 확인되면 다시 체크를 선택, 인스턴스 시작을 선택해 주세요.

그리고 인스턴트 ID를 클릭하면, 인스턴트 상세 페이지가 나오는데요.
아까와 상이하게 퍼블릭 IP주소, URL이 변경된 것을 확인할 수 있습니다.

만약 고정된 도메인을 사용하려면 별도의 결제가 필요한 것으로 확인되는데요.
추후 확인되면 관련 방법 공유하도록 하겠습니다.

하여간 이 주소를 복사하여 웹브라우저 창에 붙여넣어 주시면,
엇, 터미널을 띄우지도 않았는데, 아래와 같이 웹페이지가 뜨는 것을 확인하실 수 있지요.

금방 nginx 서비스를 자동시작하도록 활성화시켰기 때문입니다.


이제 계속해서 PHP 서버를 설치하도록 하지요.
연결 - 연결을 다시 선택해서 터미널 창에 접속하신 다음에,
sudo su - root 명령어로 root 계정으로 접속해 주세요.

이제 PHP 를 설치해보도록 할텐데요. 사실 이것 때문에 좀 고생했습니다.
아마존 웹사이트에서는 CentOS 환경에서 nginx + php 에 대한 가이드가 나와 있는게 없어서,
인터넷 여기저기를 찾아 외국 글을 참조해도 nginx 환경에서 php 가 제대로 설치가 안되는 문제가 있습니다.

리눅스의 서비스 부분에 대한 이해 부족일수도 있지만
알아낸 것은 현재 아마존 리눅스는 버전이 아마존 리눅스2라는 것입니다. 
대부분의 인터넷 게시글들이 아마존 리눅스1 버전을 기준으로 하고 있어서,
그런 것이 아닐까 생각됩니다.

확실히 확인된 것은 아마존 리눅스2 OS 환경에서는 PHP7.3, nginx 1.12 버전으로 설치해야 설치가 무난히 잘 된다는 점입니다. 하지만 나중에 아마존 리눅스3 버전이 나온다면 신규 설치는 아마도 이 방법으로 안될 수도 있을 겁니다.

자, 사연은 이만 하고, 세팅을 해보도록 하겠습니다.
아마존 리눅스2에 좀 황당하게도 yum같은 자체 설치 프로그램이 있더군요.
amazon-linux-extras 라는 명령어인데, 물론 다른 리눅스에는 존재하지 않는 기능입니다.

아래 명령을 내려 php 7.3을 먼저 설치합니다. 

amazon-linux-extras install php7.3

이어서 다음으로 각종 php 모듈을 설치합니다.

yum install php-gd php-mbstring php-dom php-imagick php-zip

그 다음으로 nginx 1.12 모듈을 설치합니다.

amazon-linux-extras install nginx1.12

다음으로, 아래 명령을 내려 nginx 환경설정 파일을 열어주신 다음에,

vi /etc/nginx/nginx.conf

화살표 키로 아래로 쭉 내려가시면, server 라고 된 부분이 있을 겁니다.
그 아래쪽의 location / { 라고 적힌 바로 윗 줄까지 이동하셔서,

i키를 눌러 삽입모드로 전환한 다음,

아래 내용을 복사, 터미널 창에서 Ctrl+V 키로 붙여 넣어 주세요.

location ~ \.php$ {
  include fastcgi.conf;
  fastcgi_intercept_errors on;
  fastcgi_pass unix:/run/php-fpm/www.sock;
}

아래 화면처럼 되었으면 제대로 된 것입니다.

ESC, :wq!, Enter 를 차례대로 입력해주시면 저장됩니다.

이어서 우리는 apache 를 설치한게 아니라 nginx 를 설치했기 떄문에 실행권한도 변경해주어야 합니다.
아래 명령을 입력한 다음,

vi /etc/php-fpm.d/www.conf

user = apache 라고 되어 있는 부분과
group = apache 라고 되어 있는 부분을 변경해 주셔야 합니다.

변경하는 방법은 화살표 키를 이용, 커서를 apache의 a 글자에 갖다 댄 다음,

x키를 누릅니다. 그러면 글자가 하나씩 지워지는데요. apache 글자를 모두 지웁니다.

다 지웠으면, a 키를 눌러 보세요.
그러면 화면 아랫 부분이 insert 로 바뀝니다.

그 상태에서 nginx 를 차례대로 입력해줍니다.

그리고 ESC 키를 누르면 삽입 모드가 해제됩니다.

이 방법이 바로 단어를 변경하는 방법입니다.
메모장보다는 많이 불편하지요?
처음 vi 편집기를 접하실 경우 키가 매우 혼동되지만 몇번 하다보면 익숙해집니다.

동일한 방법으로 group 도 nginx 로 변경해봅시다.
이번엔 간단히 설명드릴테니 한번 따라해 보세요.

1. 커서를 group = apache 의 a 글자에 위치하고
2. x키를 눌러 apache 글자를 모두 지웁니다
3. a 키를 한번 눌러 삽입 모드로 전환하고
4. nginx 를 타이핑합니다.
5. esc 키를 눌러 다시 편집 모드로 돌아옵니다.

아래와 같이 하셨으면 잘 하신 겁니다.

이제 이 파일을 저장합니다. 
저장하는 키는 :wq!, enter 키를 차례대로 입력해주세요.

이제 설치가 완료되었습니다.

다시 웹서비스를 작동시켜 보겠습니다.
아래 2줄의 명령어를 모두 입력해 보세요. nginx 에서는 php-fpm 이라는 데몬도 함께 작동시켜 주어야 합니다.

service php-fpm restart
service nginx restart

그리고 php 를 테스트할 페이지를 하나 마련합니다.
아래 명령어를 내려 info.php 웹페이지를 하나 만들어 봅시다.

vi /usr/share/nginx/html/info.php

다음으로 i키를 눌러 삽입모드로 바꾼 후 아래 내용을 입력해 주세요.

<?php phpinfo(); ?>

ESC 키를 누르고 :wq!, Enter 키를 눌러 저장해 줍니다.

이제 웹 브라우저를 열어 아까 복사했던 퍼블릭 URL + /info.php 를 입력해보시면,
아래와 같은 페이지를 확인하실 수 있습니다.

참고로 phpinfo(); 명령은 php의 설치된 서비스 정보를 표로 상세히 나열해주는 기능입니다.
다음번엔 이어서 몽고DB를 설치하는 방법을 알아봐야겠네요. 

여기까지 잘 진행해주신 분 수고 많으셨고,
여기까지 읽어주신 분들께도 감사드립니다~


성서의 말씀을 마음에 담아 두면 힘든 때에 도움이 됩니다.

너희가 아들인고로 하나님이 그 아들의 영을 우리 마음 가운데 보내사 아바 아버지라 부르게 하셨느니라
- 갈라디아서 4장 6절 말씀 -