Ubuntu에 Nginx, MySQL, PHP (LEMP stack) 서버 환경 구축하기

콜트·2021년 1월 7일
1

Nginx 설치

  1. EC2 인스턴스에 접속해서 Nginx를 설치한다.

  2. Nginx 설치가 완료되었다면 잘 설치되었는지 확인하기 위해 EC2 인스턴스퍼블릭 IPv4 주소를 브라우저에 입력해서 접근해본다. 하지만 Nginx 화면이 나오지 않는데, 이는 보안 그룹 설정을 하지 않았기 때문이다. 인스턴스 세부 정보의 보안 탭에서 확인해보면 인바운드 규칙22번 포트만 열려있는 것을 확인할 수 있다(이 때문에 WinSCP로 서버에 접속할 수 있는 것이다). 따라서, 웹 브라우저(클라이언트)에서 접근하기 위해서 보안 규칙을 추가해줘야 한다.

  3. 보안 탭 내부의 보안 그룹을 클릭하면 인바운드 규칙을 편집할 수 있다. 인바운드 규칙 편집 버튼을 눌러 진입한 뒤, 규칙 추가 버튼을 누르고 다음과 같이 추가한다. HTTP 유형을 선택하면 프로토콜은 자동으로 TCP로 선택되므로 소스 유형만 위치 무관으로 변경해준 뒤 규칙 저장 버튼을 눌러 저장한다. 이 과정을 거치면 EC2 인스턴스 서버에서 80번 포트를 접근할 수 있도록 열어준 것과 같다.

  4. 다시 EC2 인스턴스퍼블릭 IPv4 주소를 브라우저에 입력해서 접근해보면 다음과 같이 Nginx 화면이 잘 나오는 것을 볼 수 있다. 이렇게 나온다면 성공적으로 Nginx를 설치한 것이다.

MySQL 설치

  1. MySQL을 설치한다.

  2. MySQLroot 비밀번호를 입력하라는 창이 나오는데, 원하는 비밀번호를 입력해주면 된다.

  3. 비밀번호를 입력한 뒤 설치가 완료되면, sudo mysql -u root -p 명령어를 입력하고 비밀번호를 입력하면 MySQL에 접근할 수 있다.

PHP 설치

  1. PHP를 설치한다. 이때, Nginx에서는 php-fpm을 반드시 설치해야 한다.

    - 왜 fpm을 설치해야하는가? 를 찾아보자.

  2. 설치가 완료되었다면 PHP가 잘 설치되었는지 phpinfo를 통해서 확인해야 한다. Nginx의 기본 경로는 /var/www/html이므로, 해당 디렉토리를 확인했을 때 index.nginx-debian.html 파일이 존재할 것이다(이 파일이 앞서, Nginx의 설치가 잘 되었음을 확인할 수 있는 화면을 보여주는 파일이다).

  3. /var/www/html 디렉토리로 이동한 뒤, 다음과 같이 index.php 파일을 만들어준다.

  4. index.php 파일을 만들고 브라우저에서 EC2 인스턴스퍼블릭 IPv4 주소/index.php 주소로 접근하면 index.php 파일이 다운로드 되는 것을 확인할 수 있는데, 이는 아직 PHPNginx가 연동되지 않았기 때문에 발생하는 현상이다. 따라서 연동을 위해 Nginx 에 설정을 추가해줘야 한다.

  5. Nginx의 기본 설정 파일은 /etc/nginx/sites-available/default 이다. vi 편집기로 해당 파일을 열어서 다음과 같이 설정 파일을 수정해준다. 여기서, 사용하는 php-fpm의 버전에 따라 pastcgi_pass 부분의 php7.0-fpm.sock를 수정해줘야 한다(만약 php7.2-fpm을 사용한다면 php7.2-fpm.sock로 변경해준다. Ubuntu 16.04 버전에서는 해당사항이 없으므로 본 글에서는 그대로 두었다).

  6. 변경된 설정을 적용해주기 위해 Nginx를 다시 시작하려고 했는데, 에러가 발생했다.

  7. journalctl -xe 명령어를 입력해서 확인해보니 이유는 모르겠지만 /etc/nginx/sites-enable/default 파일이 적절하게 끝나지 않았다고 하며, 87번째 라인에 } 기호가 필요하다고 한다. 따라서 sudo vi /etc/nginx/sites-enable/default의 87번째 라인에 } 기호를 추가해준 뒤 다시 Nginx를 실행했더니 잘 되는 것을 확인할 수 있었다.



  8. Nginx를 재시작해 설정을 적용했으므로 앞서 접근했던 EC2 인스턴스퍼블릭 IPv4 주소/index.php로 접근하면 다음과 같이 설치된 PHP 정보를 확인할 수 있다.


참고자료


profile
개발 블로그이지만 꼭 개발 이야기만 쓰라는 법은 없으니, 그냥 쓰고 싶은 내용이면 뭐든 쓰려고 합니다. 코드는 깃허브에다 작성할 수도 있으니까요.

0개의 댓글