본문 바로가기
서버/환경설정

[서버 개발 환경 구축] 3. AWS EC2 ubuntu에 nginx,php,mysql (LEMP Stack)로 서버 환경 구축하기

by 베어 그릴스 2022. 7. 12.
320x100

여기부터는 서버 구동 원리에 대한 이해가 필요하다.

 

nginx는 뭐고 php와 mysql은 왜 다운 받는지 이해하기 위해선 본인 블로그 글인 다음 글을 참고하고 다음을 진행하기 바란다.

 

https://developbear.tistory.com/44

 

서버란? 서버 프로그램 NGINX

서버란? 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램(server program) 또는 장치(device)를 의미한다. 서버는 클라이언트에게 서비스를 제공한다.

developbear.tistory.com

https://developbear.tistory.com/45

 

서버의 구동 원리 - APM

APM이란? Apache(서버 프로그램, Apache는 클라이언트의 요청달 프로세스를 하나씩 만들어 CPU 과부하가 오는 단점 때문에 최근엔 Nginx를 주로 사용한다) + PHP(Backend language) + MySQL(DBMS, database manage..

developbear.tistory.com

 

1. Nginx 설치


서버 프로그램인 Nginx 부터 우선적으로 설치해주자.

 

sudo apt update

 

복사 붙이기 할때 ctrl + v로는 아마 putty에서 되지 않을 것이다. putty에 마우스 우클릭을 하면 붙여진다.

 

 

sudp apt install nginx

 

중간에 묻는 질문이 나오면 주저없이 Y를 입력하고 enter해주자.

 

이후 Nginx 설치가 완료되었다면 EC2 인스턴스의 퍼블릭 IPv4 주소를 주소 창에 입력하면 Nginx 화면이 나오는게 정상이다.

 

그러나 유의해야할 점이, 우리는 아직 인바운드 규칙을 하나밖에 열지 않았다는 점이다.

 

브라우저에 입력해서 접근하는 방식은 HTTP 방식이고, 이를 위해서 HTTP AWS EC2 보안그룹 창으로 가서 인바운드 규칙을 열어준다.

 

 

이후 브라우저에 EC2 인스턴스의 퍼블릭 IPv4 주소를 주소 창에 입력하면

이런 화면이 잘 뜨는 것을 확인할 수 있을 것이다.

 

이 화면이 떠야지만 Nginx 설치가 완료된 것이다.

 

2. Mysql 설치


mysql을 설치해주자.

sudo apt install mysql-server

중간에 비밀번호 입력을 해야하는데, 원하는 비밀번호를 입력하고 잊지 않도록 하자.

 

이후 

sudo mysql -u root -p

를 입력하고 비밀번호를 입력하면 mysql에 접근할 수 있다.

각종 명령어로 mysql을 사용할 수 있다.

mysql에서 나오려면 exit 를 입력해야 한다.

 

PHP 설치


 

PHP란?

PHP : PHP(Hypertext Preprocessor)는 C언어를 기반으로 만들어진 서버 측에서 실행되는 서버 사이드 스크립트 언어다.

 

php는 웹서버인 nginx가 아닌 php-fpm을 통해서 실행되기 때문에 설치가 필수적이다.

 

sudo apt install php-fpm php-mysql

php-mysql 은 php와 mysql 연동 코드이다.

 

설치해주자.

 

계속할지 묻는 질문엔 모두 Y를 눌러주자.

 

설치가 완료되었다면 phpinfo()파일을 만들어서 해당 화면이 잘나오나 확인해보도록 하자.

 

cd /var/www/html/

 의 경로로 이동해보자

 

어느정도 예상했겠지만, 해당 경로가 바로 http://EC2 인스턴스의 퍼블릭 IPv4 주소 자체이다. 

 

즉, 해당 경로에 어떤 파일을 만들고 (html,php 등등) http://EC2 인스턴스의 퍼블릭 IPv4 주소/파일 을 브라우저에 쳐주면 해당 파일의 화면이 나오거나 해당 파일이 다운된다.

 

여기서 index.php 파일을 만들어준다.

sudo vi index.php

 

여기서 vi란 리눅스용 문서 편집기를 연다고 간단하게 일단 생각해두면 된다.

I 를 치면, Insert모드가 되고 해당 php 파일 내용을 복사 붙이기 해준다. (혹은 직접 쳐도 좋다)

<?php
phpinfo();
?>

:wq (wirte and quit)로 나와주자.

저장하지 않고 나오고 싶을땐 :q!를 치면 된다.

 

지금은 주소창에 00.000.00.00(EC2 인스턴스의 퍼블릭 IPv4 주소)/index.php 하면 파일이 다운될 것이다.

 

php와 nginx를 연동해서 phpinfo(); 화면이 나오게끔 해주자.

 

이를 위해 nginx 설정 파일을 수정해주면 된다.

 

cd /etc/nginx/sites-available/

해당 폴더에 보면 default 파일이 있을텐데 이 파일이 nginx의 root 폴더나 들어오는 uri들을 어떻게 처리할것인지 등을 설정하는 설정파일이다.

 

sudo vi default

 

로 해당 파일을 열어주자.

 

php 설정하는 부분이 주석처리 되어있을 텐데 다음과 같이 주석 해제를 해준다.

 

index.php 파일도 이용할 것이니 해당 파일도 사용한다고 추가해주자.

 

주의할 점은, 양쪽 중괄호와 php 버전에 맞게끔 바꿔주어야 한다는 것이다.

난 php -v를 통해 버젼을 확인하였고 8.1.2버젼이었기에 8.1로 바꾸어주었다.

 

버전 차이로 인한 문제는 항상 서버에서 삽질을 엄청나게 하게 만든다. 조심하도록 하자.

 

 

 

이제 변경된 설정을 적용하기 위해 nginx를 다시 시작해주자.

sudo service nginx restart

 

이후 00.000.00.00(EC2 인스턴스의 퍼블릭 IPv4 주소)/index.php을 쳐주면

이렇게 잘 연동된 것을 확인할 수 있다.

728x90