웹사이트 검색

Ubuntu 14.04에 Linux, Nginx, MySQL, PHP(LEMP) 스택을 설치하는 방법


소개

LEMP 소프트웨어 스택은 동적 웹 페이지 및 웹 애플리케이션을 제공하는 데 사용할 수 있는 소프트웨어 그룹입니다. 이것은 Nginx 웹 서버가 있는 Linux 운영 체제를 설명하는 약어입니다. 백엔드 데이터는 MySQL에 저장되고 동적 처리는 PHP에 의해 처리됩니다.

이 가이드에서는 Ubuntu 14.04 서버에 LEMP 스택을 설치하는 방법을 보여줍니다. Ubuntu 운영 체제는 첫 번째 요구 사항을 처리합니다. 나머지 구성 요소를 시작하고 실행하는 방법을 설명합니다.

참고: LEMP 스택은 Droplet 사용자 데이터에 대해 자세히 알아보기 위해 이 자습서를 추가하여 Droplet에 자동으로 설치할 수 있습니다.

전제 조건

이 자습서를 완료하기 전에 서버에 sudo 권한이 있는 루트가 아닌 일반 사용자 계정이 있어야 합니다. Ubuntu 14.04 초기 서버 설정에서 1-4단계를 완료하여 이러한 유형의 계정을 설정하는 방법을 배울 수 있습니다.

계정을 사용할 수 있으면 해당 사용자 이름으로 서버에 로그인하십시오. 이제 이 가이드에 설명된 단계를 시작할 준비가 되었습니다.

1. Nginx 웹 서버 설치

사이트 방문자에게 웹 페이지를 표시하기 위해 현대적이고 효율적인 웹 서버인 Nginx를 사용할 것입니다.

이 절차를 위해 얻을 모든 소프트웨어는 Ubuntu의 기본 패키지 저장소에서 직접 가져옵니다. 즉, apt 패키지 관리 제품군을 사용하여 설치를 완료할 수 있습니다.

이 세션에 대해 apt를 처음 사용하므로 로컬 패키지 인덱스를 업데이트하는 것으로 시작해야 합니다. 그런 다음 서버를 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install nginx

Ubuntu 14.04에서 Nginx는 설치 시 실행을 시작하도록 구성됩니다.

웹 브라우저에서 서버의 도메인 이름 또는 공용 IP 주소에 액세스하여 서버가 실행 중인지 테스트할 수 있습니다.

서버를 가리키는 도메인 이름이 없고 서버의 공용 IP 주소를 모르는 경우 터미널에 다음 중 하나를 입력하여 찾을 수 있습니다.

<예비>

또는 다음을 사용해 볼 수 있습니다.

<예비>

웹 브라우저에 표시되는 라인 중 하나를 시도하십시오. Nginx의 기본 랜딩 페이지로 이동해야 합니다.

<예비>

위와 같은 페이지가 보이면 Nginx가 성공적으로 설치된 것입니다.

2. 사이트 데이터 관리를 위한 MySQL 설치

이제 웹 서버가 있으므로 사이트의 데이터를 저장하고 관리하기 위해 데이터베이스 관리 시스템인 MySQL을 설치해야 합니다.

다음을 입력하여 쉽게 설치할 수 있습니다.

sudo apt-get install mysql-server

MySQL 시스템 내에서 사용할 루트(관리자) 암호를 입력하라는 메시지가 표시됩니다.

이제 MySQL 데이터베이스 소프트웨어가 설치되었지만 해당 구성이 아직 정확히 완료되지 않았습니다.

먼저 데이터베이스와 정보를 저장하는 데 필요한 디렉토리 구조를 생성하도록 MySQL에 지시해야 합니다. 다음을 입력하면 됩니다.

sudo mysql_install_db

다음으로 일부 안전하지 않은 기본값을 수정하라는 메시지를 표시하는 간단한 보안 스크립트를 실행하려고 합니다. 다음을 입력하여 스크립트를 시작합니다.

sudo mysql_secure_installation

설치 중에 선택한 MySQL 루트 암호를 입력해야 합니다.

다음으로 비밀번호를 변경할 것인지 묻습니다. MySQL 루트 암호가 마음에 들면 "N\을 입력하고 "ENTER\를 누르십시오. 그런 다음 일부 테스트 사용자 및 데이터베이스를 제거하라는 메시지가 표시됩니다. 안전하지 않은 기본 설정을 제거하려면 이 프롬프트에서 "ENTER\를 누르기만 하면 됩니다.

스크립트가 실행되면 MySQL을 사용할 준비가 된 것입니다.

3. 처리를 위해 PHP 설치

이제 페이지를 제공하기 위해 Nginx가 설치되었고 데이터를 저장하고 관리하기 위해 MySQL이 설치되었지만 이 두 부분을 연결하고 동적 콘텐츠를 생성하려면 여전히 무언가가 필요합니다. 이를 위해 PHP를 사용할 수 있습니다.

Nginx에는 다른 웹 서버와 같은 기본 PHP 처리 기능이 없으므로 "fastCGI 프로세스 관리자\를 나타내는 php5-fpm을 설치해야 합니다. Nginx에게 PHP 요청을 여기에 전달하도록 지시합니다. 처리용 소프트웨어.

이 모듈을 설치할 수 있으며 PHP가 데이터베이스 백엔드와 통신할 수 있도록 하는 추가 도우미 패키지도 가져올 수 있습니다. 설치는 필요한 PHP 코어 파일을 가져옵니다. 다음을 입력하여 수행하십시오.

sudo apt-get install php5-fpm php5-mysql

PHP 프로세서 구성

이제 PHP 구성 요소가 설치되었지만 보다 안전한 설정을 위해 약간의 구성 변경이 필요합니다.

루트 권한으로 기본 php5-fpm 구성 파일을 엽니다.

sudo nano /etc/php5/fpm/php.ini

이 파일에서 우리가 찾고 있는 것은 cgi.fix_pathinfo를 설정하는 매개변수입니다. 이것은 세미콜론(;)으로 주석 처리되고 기본적으로 \1로 설정됩니다.

이는 PHP 파일이 정확히 일치하지 않는 경우 찾을 수 있는 가장 가까운 파일을 실행하도록 PHP에 지시하기 때문에 매우 안전하지 않은 설정입니다. 이것은 기본적으로 사용자가 실행할 수 없는 스크립트를 실행할 수 있는 방식으로 PHP 요청을 만들 수 있게 합니다.

다음과 같이 행의 주석을 제거하고 "0\으로 설정하여 이 두 조건을 모두 변경합니다.

cgi.fix_pathinfo=0

완료되면 파일을 저장하고 닫습니다.

이제 다음을 입력하여 PHP 프로세서를 다시 시작하면 됩니다.

sudo service php5-fpm restart

이것은 우리가 만든 변경 사항을 구현합니다.

4. PHP 프로세서를 사용하도록 Nginx 구성

이제 필요한 모든 구성 요소가 설치되었습니다. 여전히 해야 할 유일한 구성 변경은 동적 콘텐츠에 PHP 프로세서를 사용하도록 Nginx에 지시하는 것입니다.

서버 블록 수준에서 이 작업을 수행합니다(서버 블록은 Apache의 가상 호스트와 유사함). 다음을 입력하여 기본 Nginx 서버 블록 구성 파일을 엽니다.

sudo nano /etc/nginx/sites-available/default

현재 주석이 제거된 Nginx 기본 서버 블록 파일은 다음과 같습니다.

<예비>

root /usr/share/nginx/html;
index index.html index.htm;

server_name localhost;

location / {
    try_files $uri $uri/ =404;
}

}

사이트에 맞게 이 파일을 일부 변경해야 합니다.

  • 먼저 index.php 옵션을 index 지시문의 첫 번째 값으로 추가하여 디렉토리가 요청될 때 PHP 인덱스 파일을 제공할 수 있도록 해야 합니다.
  • 또한 서버의 도메인 이름이나 공용 IP 주소를 가리키도록 server_name 지시문을 수정해야 합니다.
  • 실제 구성 파일에는 오류 처리 루틴을 정의하는 주석 처리된 일부 줄이 포함되어 있습니다. 해당 기능을 포함하기 위해 주석을 제거합니다.
  • 실제 PHP 처리를 위해 다른 섹션의 주석을 제거해야 합니다. 또한 Nginx가 잘못된 요청을 PHP 프로세서에 전달하지 않도록 try_files 지시문을 추가해야 합니다.

변경해야 하는 사항은 아래 텍스트에서 빨간색으로 표시됩니다.

<예비>

root /usr/share/nginx/html;
index <span class="highlight">index.php</span> index.html index.htm;

server_name <span class="highlight">server_domain_name_or_IP</span>;

location / {
    try_files $uri $uri/ =404;
}

<span class="highlight">error_page 404 /404.html;</span>
<span class="highlight">error_page 500 502 503 504 /50x.html;</span>
<span class="highlight">location = /50x.html {</span>
    <span class="highlight">root /usr/share/nginx/html;</span>
<span class="highlight">}</span>

<span class="highlight">location ~ \.php$ {</span>
    <span class="highlight">try_files $uri =404;</span>
    <span class="highlight">fastcgi_split_path_info ^(.+\.php)(/.+)$;</span>
    <span class="highlight">fastcgi_pass unix:/var/run/php5-fpm.sock;</span>
    <span class="highlight">fastcgi_index index.php;</span>
    <span class="highlight">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span>
    <span class="highlight">include fastcgi_params;</span>
<span class="highlight">}</span>

}

위와 같이 변경했으면 파일을 저장하고 닫을 수 있습니다.

Nginx를 다시 시작하여 필요한 사항을 변경합니다.

sudo service nginx restart

5. 구성 테스트를 위한 PHP 파일 생성

이제 LEMP 스택이 완전히 설정되었습니다. 여전히 Nginx가 .php 파일을 PHP 프로세서에 올바르게 전달할 수 있는지 테스트해야 합니다.

문서 루트에 테스트 PHP 파일을 생성하여 이를 수행할 수 있습니다. 텍스트 편집기의 문서 루트 내에서 info.php라는 새 파일을 엽니다.

sudo nano /usr/share/nginx/html/info.php

이것을 새 파일에 입력할 수 있습니다. 이것은 서버에 대한 형식화된 정보를 반환하는 유효한 PHP 코드입니다.

<?php
phpinfo();
?>

완료되면 파일을 저장하고 닫습니다.

이제 웹 브라우저에서 서버의 도메인 이름 또는 공용 IP 주소를 방문하고 /info.php를 입력하여 이 페이지를 방문할 수 있습니다.

<예비>

서버에 대한 정보와 함께 PHP에 의해 생성된 웹 페이지가 표시되어야 합니다.

다음과 같은 페이지가 표시되면 Nginx로 PHP 처리를 성공적으로 설정한 것입니다.

이를 테스트한 후에는 생성한 파일을 제거하는 것이 가장 좋습니다. 권한이 없는 사용자에게 침입을 시도하는 데 도움이 될 수 있는 구성에 대한 몇 가지 힌트를 실제로 제공할 수 있기 때문입니다. 나중에 필요할 때 이 파일을 언제든지 다시 생성할 수 있습니다.

지금은 다음을 입력하여 파일을 제거합니다.

sudo rm /usr/share/nginx/html/info.php

결론

이제 Ubuntu 14.04 서버에 LEMP 스택이 구성되어 있어야 합니다. 이는 방문자에게 웹 콘텐츠를 제공하기 위한 매우 유연한 기반을 제공합니다.

저스틴 엘링우드