우분투 14.04에 Linux, nginx, MySQL, PHP(LEMP) stack을 설치하는 방법

소개

LEMP 소프트웨어 스택은 동적 웹페이지와 웹 어플리케이션을 서비스 할 수 있도록 만드는 소프트웨어의 그룹이다. LEMP는 리눅스 운영체제, 엔진엑스 웹서버의 기술 약어이다. 백엔드 데이터는 MySQL에 저장하고 동적 처리는 PHP에 의해 이루어진다.

이 포스트에서 우분투 14.04 서버에 LEMP stack을 설치하는 방법을 설명한다.우분투는 이미 설치되었다고 가정하고 나머지 구성요소들을 설치하고 실행하는 방법을 설명한다.

전제 조건

이 가이드를 따라하기 전에, 서버에 일반적인 sudo 권한을 가진 루트 계정이 아닌 사용자 계정이 있어야 한다. 이것은 우분투 14.04 초기 설정(번역) 글을 통해 배울 수 있다.

당신이 생성한 계정으로 로그인이 가능하다면, 가이드의 다음 단계를 시작할 준비가 된 것이다.

1 단계- Nginx 웹 서버 설치

사이트 방문자에 웹 페이지를 표시하기 위해 우리는 현대적이며(?) 효율적인 Nginx 웹 서버를 사용할 것이다.

이 절차에서 모든 소프트웨어는 우분투의 기본 패키지 저장소에서 가져올 것이다. 이것은 설치를 완료하기 위해 apt 패키지 관리자를 사용한다는 것을 의미한다.

이 세션에서 apt를 사용하는 것은 처음이기 때문에 우리는 로컬 패키지 인덱스를 업데이트하고 시작해야 한다. 다음 명령어를 통해 nginx를 설치할 수 있다.

우분투 14.04 에서 Nginx는 설치시 실행하도록 구성되어 있다.

웹브라우저에 서버 도메인이나 공인 IP를 입력하여 서버가 정상적으로 설치되었고 동작하는지 확인 할 수 있다.

도메인이 아직 서버를 가르키지 않거나, 당신이 서버의 공인 IP 주소를 모를 경우 터미널에 다음 명령어들 중 하나를 입력하여 확인할 수 있다.

명령어를 입력하기 어렵다면 ip addr show eth0 만으로도 충분히 ip를 식별할 수 있을 것이다. 유명한 ifconfig 명령어로도 알 수 있다. 공인 아이피가 eth0 에 설정되지 않고 다른 이더넷에 설정되었을 수도 있으니 개인적으로는 ifconfig 명령어를 사용하여 확인하는 것을 추천한다.

또는 iconhazip 사이트를 이용하여 알 수도 있다.

위 과정을 통해 알아낸 아이피 혹은 아이피와 연결된 도메인를 웹브라우저 입력하자. 그러면 Nginx의 기본 랜딩 페이지를 볼 수 있을 것이다.

위의 페이지를 볼 경우, 성공적으로 Nginx가 설치된 것이다.

2 단계 – 사이트 데이터를 관리하기 위한 MySQL 설치

이제 우리는 웹서버를 가지게 되었으니, 사이트의 데이터를 관리하기 위해 데이터 관리 시스템인 MySQL 설치가 필요하다.

아래를 입력하여 쉽게 설치할 수 있다.

설치가 마지막에 MySQL의 시스템 내에서 사용하기 위한 루트(관리자) 암호를 입력하라는 메시지를 볼 수 있다.

이제 MySQL 데이터베이스 소프트웨어는 설치되었지만, 그 구성은 아직 정확히 완료되지 않았다.

첫번째로, MySQL이 데이터베이스와 정보를 저장할 디렉토리 구조를 생성하기 위하여 다음을 입력해야 한다:

다음으로, 안전하지 않은 기본값을 수정하라는 메시지를 표시하는 간단한 보안 스크립트를 실행하는 것이 좋다. 다음을 입력하여 스크립트를 시작하자:

그럼 설치 중에 입력한 MySQL의 루트 암호를 입력해야 한다.

다음으로 비밀번호를 바꾸고 싶은지 물을 것이다. 당신의 MySQL 루트 암호가 만족스럽다면 “N”을 입력 후 엔터를 누르면 된다. 그 후 몇몇 테스트 사용자와 데이터베이스를 제거하라는 메세지가 표시된다. 안전하지 않은 기본 설정들을 제거하려면 단지 프롬프트에 “ENTER” 를 입력하면 된다. .

스크립트가 모두 실행되면, MySQL은 시작할 준비가 된 것이다.

3 단계 – 프로세싱을 위한 PHP 설치

이제 우리는 우리의 페이지를 제공하기 위해 Nginx 설치를 했고, 우리의 데이터를 저장하고 관리하기 위한 MySQL도 설치했다. 하지만 우리는 여전히 이 두 가지를 연결하고 동적 콘텐츠를 생성하기 위해 뭔가를 해야 한다. 이를 위해 우리는 PHP를 사용 할 수 있다.

Nginx는 다른 웹 서버와 달리 네이티브 PHP 처리를 포함하지 않기 때문에, PHP5-FPM (FastCGI process manager) 를 설치해야 한다. PHP 요청을 이 소프트웨어가 처리하도록 엔진엑스를 통해 전달할 것이다.

우리는 이 모듈과 데이터베이스 백엔드와 통신 할 수 있도록 하는 부가적인 헬퍼 패키지를 함께 설치할 것이다. 이 설치작업은 필수적인 PHP 코어 파일이 필요하다. 다음을 입력하여 이를 수행한다.

PHP 프로세서 설정

이제 PHP 구성 요소가 설치되어 있지만, 보다 안전하게 하기 위하여 약간의 변경이 필요하다.

루트 권한으로 php5-fpm 설정 파일을 연다:

이 파일에서 cgi.fix_pathinfo 라는 설정 매개 변수를 찾는다. 이것은 세미콜럭으로 주석처리 되있고 기본적으로 1로 설정되어 있을 것이다.

이것은 매우 안전하지 않은 설정이다. 이유는 PHP 파일이 정확히 일치하지 않는 경우 가장 근접한 파일 실행을 시도 하는 설정이기 때문이다. 이 설정이 허용되지 않도록 설정해야 사용자가 원하는 방식으로 PHP 요청을 할 수 있다.

라인의 주석을 풀고 “0” 으로 설정하여 취약점을 제거한다.

저장이 완료되면 파일을 닫는다.

이제, 다음을 입력하여 PHP 프로세서를 다시 시작한다 :

이것은 변경 사항을 적용 할 것이다.

4 단계 Nginx가 PHP 프로세서를 사용하도록 설정

이제 우리는 설치에 필요한 모든 구성 요소를 가지고 있다. 앞으로 해야 할 유일한 구성 변경은 동적 컨텐츠에 대한 PHP 처리기를 Nginx가 사용하도록 하는 것이다.

우리는 서버 블록에서 이 작업을 수행한다. (서버 블록은 아파치의 가상 호스트와 유사하다.) 다음을 입력하여 기본 Nginx 서버 블록 구성 파일을 연다.

이 원문의 마지막 업데이트는 2014년 7월. 이 글을 번역하는 2015년 3월 26일 기준으로 디폴트 엔진엑스 서버 블록 구성 파일의 위치는 /etc/nginx/conf.d/default.conf 이다.

주석처리가 된 부분을 제거하면, 엔진엑스의 기본 서버 블록 파일은 아래와 같은 것이다.

내 기본 설정파일이랑 좀 다른데?ㅠㅠ

사이트를 위해 약간의 변경이 필요하다

  • 첫째, 디렉토리가 요청될 때 PHP index 파일이 제공 될 수 있도록 index 지시자에 index.php 를 추가한다.
  • server_name 지시자가 자신의 도메인 주소 또는 공인 IP를 가르키도록 수정한다.
  • 현재 구성 파일은 오류 처리 루틴을 정의하는 몇 라인이 주석처리 되어있다. 이 기능을 포함하도록 주석을 해제한다.
  • 실제 PHP 처리를 위해, 다른 섹션의 일부를 주석을 해제해야 한다. 또한 Nginx가 잘못된 요청을 PHP 프로세서에 전달하지 않도록 하기 위해서try_files 지시자를 추가해야 한다.

위 사항들을 변경하면 서버 블록은 다음과 같을 것이다.

원문에는 변경된 부분이 빨간색으로 표시되어 있지만 내 블로그 테마의 설정상 코드 내부의 특정 라인 색깔을 변경하는게 어려워 그냥 옮겼다.

이 부분은 내 블록 파일과 많이 달라서 추가한 부분과 비슷한 주석처리된 부분의 주석을 해제하기만 하였다. 서버 블록 설정에 대해서는 다른 최신 글을 통해 더 조사해봐야 할 듯

위의 변경한 뒤 파일을 저장하고 닫는다.

변경한 것들을 적용하기 위해 Nginx를 재시작한다.

5번째 단계 – 설정 테스트를 위한 PHP 파일 생성

이제 LEMP 스택은 완전히 설정되었다. 이제 Nginx가 .php PHP 프로세서로 확실히 핸들링하는지 확인해봐야 한다.

문서 루트에서 테스트 PHP 파일을 만들어 이 작업을 수행 할 수 있다. 텍스트 편집기로 문서 루트 안에 info.php 파일을 생성하고 연다.

서버의 정보를 반환하여 보여주는 php 코드를 입력한다.

작업이 완료되면 파일을 저장하고 닫는다.

이제 서버의 도메인 이름 또는 공인 IP 주소를 방문하여 웹 브라우저에서이 페이지를 방문한다.

별다른 문제가 없다면 서버에 대한 정보를 PHP에 의해 생성된 웹 페이지를 볼 수 있을 것이다

이처럼 보이는 페이지를 볼 경우, 당신은 성공적으로 Nginx에 PHP 처리를 설정한 것이다.

이 테스트 후에는 파일을 제거하도록 하자. 제거하지 않는다면 이 파일은 허가받지 않은 사용자들이 침입을 시도하는데 도움이 될 수 있는 정보를 제공하게 될 것이다.

아래를 입력하여 파일을 제거한다.

결론

이것으로 우분투 14.04 서버에 LEMP 스택 구성을 완료하였다. LEMP 스택은 당신의 방문자에게 웹 콘텐츠를 제공하기 위한 매우 유연한 기반을 제공할 것이다.

원본출처 : https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04


막히는 부분있으시면 댓글로 문의해주세요. 서버설정 여러 번하면서 이런 저런 오류를 많이 봐와서 도움드릴 수 있을 것 같아요^^

About dezang

애플제품과 구글서비스를 좋아합니다. 블로그에서는 반말사용하며 시크한 척하지만 실제로는 예의바르고 상냥합니다^^. 언젠가는 세상을 바꾸는 개발자가 되고자 합니다. 언젠가는...

댓글 남기기