 설치 방법.png)
Ubuntu 16.04에 Linux, Nginx, MySQL, PHP(LEMP 스택) 설치 방법
소개
LEMP 소프트웨어 창고는 동적 웹 페이지와 웹 응용 프로그램에 사용할 수 있는 소프트웨어입니다.이것은 이니셜 줄임말로 Linux 운영체제와 Nginx 웹 서버를 설명한다.백엔드 데이터는 MySQL 데이터베이스에 저장되며 동적 처리는 PHP가 처리합니다.
이 가이드에서는 Ubuntu 16.04 서버에 LEMP 스택을 설치하는 방법을 설명합니다.Ubuntu 운영 체제가 첫 번째 요구 사항을 충족했습니다.나머지 구성 요소를 시작하고 실행하는 방법을 설명할 것입니다.
선결 조건
이 강좌를 완성하기 전에, 서버에
sudo
권한이 있는 일반적인 비루트 사용자 계정을 가지고 있어야 합니다.당신은 우리의 Ubuntu 16.04 initial server setup 를 기입하여 어떻게 이런 계정을 설정하는지 알 수 있습니다.사용자가 사용 가능한 경우 이 사용자 이름을 사용하여 서버에 로그인합니다.이제 이 안내서에서 개술한 절차를 시작할 수 있습니다.
1단계: Nginx 웹 서버 설치
우리의 사이트 방문자에게 웹 페이지를 표시하기 위해서, 우리는 현대적이고 효율적인 웹 서버인 Nginx를 사용할 것이다.
이 프로세스에 사용할 모든 소프트웨어는 Ubuntu의 기본 패키지 저장소에서 직접 제공됩니다.이것은 우리가
apt
패키지 관리 세트를 사용하여 설치를 완성할 수 있다는 것을 의미한다.이것은 우리가 이 세션에서 처음 사용하는 것이기 때문에, 우리는 로컬 패키지 인덱스를 업데이트하는 것부터 시작해야 한다.그런 다음 서버를 설치할 수 있습니다.
- sudo apt-get update
- sudo apt-get install nginx
Ubuntu 16.04에서 Nginx는 설치 후 실행되도록 구성되어 있습니다.방화벽
apt
을 실행한 경우 초기 설정 설명서에 설명된 대로 Nginx에 연결할 수 있어야 합니다.Nginx는 설치할 때 ufw
에 스스로 등록하기 때문에 과정이 상당히 간단하다.원하는 트래픽을 허용하기 위해 가장 제한적인 프로필을 사용하는 것이 좋습니다.아직 서버에 SSL을 구성하지 않았기 때문에, 이 가이드에서는 포트 80의 데이터만 허용해야 합니다.
다음을 입력하여 이 기능을 활성화할 수 있습니다.
- sudo ufw allow 'Nginx HTTP'
다음 내용을 입력하여 변경 사항을 확인할 수 있습니다.- sudo ufw status
표시된 출력에서 허용되는 HTTP 트래픽을 볼 수 있어야 합니다.OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
새 방화벽 규칙이 추가되면 웹 브라우저에서 서버의 도메인 이름이나 공공 IP 주소에 접근해서 서버가 시작되고 실행 중인지 테스트할 수 있습니다.서버에 대한 도메인 이름이 없고 서버의 공용 IP 주소를 모르는 경우 터미널에 다음 중 하나를 입력하여 찾을 수 있습니다.
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
이렇게 하면 몇 개의 IP 주소가 인쇄됩니다.웹 브라우저에서 순서대로 모든 방법을 시도할 수 있습니다.또는 인터넷의 다른 위치에서 액세스할 수 있는 IP 주소를 확인할 수 있습니다.
- curl -4 icanhazip.com
웹 브라우저에서 받은 주소를 입력하십시오.Nginx의 기본 로그인 페이지로 이동합니다.http://server_domain_or_IP

위의 페이지를 보면 Nginx가 성공적으로 설치되었음을 나타냅니다.
2단계: MySQL 관리 사이트 데이터 설치
현재 우리는 웹 서버가 하나 있는데, 우리는 MySQL, 데이터베이스 관리 시스템을 설치하여 우리 사이트의 데이터를 저장하고 관리해야 한다.
다음을 입력하여 쉽게 설치할 수 있습니다.
- sudo apt-get install mysql-server
시스템에서 MySQL 시스템에서 사용할 수 있도록 루트(관리) 암호를 요구합니다.현재 MySQL 데이터베이스 소프트웨어가 설치되어 있지만 구성이 완료되지 않았습니다.
설치의 안전을 확보하기 위해서, 우리는 간단한 안전 스크립트를 실행하여, 안전하지 않은 기본 설정을 수정해야 하는지 물어볼 수 있다.다음 내용을 입력하여 스크립트를 시작합니다.
- mysql_secure_installation
ySQL 루트 계정에 설정된 암호를 입력해야 합니다.다음으로 구성할 것인지 묻겠습니다 ufw
.경고: 이 기능을 사용하는 것은 일종의 판단 호출 같다.활성화되면 MySQL이 지정된 조건과 일치하지 않는 암호를 거부하고 오류를 반환합니다.비암호를 MySQL 사용자 자격 증명을 자동으로 설정하는 소프트웨어(예: phpMyAdmin용 Ubuntu 패키지)와 결합하면 문제가 발생합니다.인증 해제는 안전하지만 데이터베이스 자격 증명에 항상 강력한 고유 암호를 사용해야 합니다.
y에 대답하면 예, 또는 다른 질문에 대답해서 사용하지 않습니다.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
인증이 설정되어 있으면 암호 인증 수준을 선택해야 합니다.가장 강력한 레벨로 2를 입력하면 숫자, 대소문자, 특수 문자가 포함되지 않거나 자주 사용하는 사전 단어를 기반으로 한 암호를 설정하려고 할 때 오류가 발생합니다.There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
암호 확인을 활성화하면 기존 루트 암호의 암호 강도가 표시되고 암호를 변경할 것인지 묻습니다.현재 암호에 만족하는 경우 프롬프트에서 n 을 입력하여 "아니오"를 나타냅니다.Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
나머지 질문의 경우 Y 키를 누르고 메시지가 표시될 때마다 Enter 키를 눌러야 합니다.이것은 일부 익명 사용자와 테스트 데이터베이스를 삭제하고 원격 루트 로그인을 사용하지 않으며 MySQL이 변경 사항을 즉시 존중할 수 있도록 새 규칙을 불러옵니다.현재, 당신의 데이터베이스 시스템이 이미 설정되어 있으니, 우리는 계속할 수 있습니다.
3단계: PHP 설치 처리
우리는 현재 Nginx를 설치하여 우리의 페이지를 서비스하고 MySQL을 설치하여 우리의 데이터를 저장하고 관리합니다.그러나 우리는 여전히 동적 내용을 생성할 수 있는 어떤 것도 없다.우리는 PHP를 사용하여 이 점을 실현할 수 있다.
Nginx는 다른 웹 서버처럼 본 컴퓨터의 PHP 처리를 포함하지 않기 때문에, 설치
VALIDATE PASSWORD PLUGIN
가 필요합니다. 이것은 "fastCGI 프로세스 관리자"를 대표합니다.Nginx에서 이 소프트웨어에 PHP 요청을 처리하도록 전달할 것입니다.우리는 이 모듈을 설치할 수 있으며, PHP가 우리의 데이터베이스 백엔드와 통신할 수 있도록 추가 도움말 패키지를 얻을 수 있습니다.설치는 필요한 PHP 핵심 파일을 가져옵니다.다음을 입력하십시오.
- sudo apt-get install php-fpm php-mysql
PHP 프로세서 구성
현재 PHP 구성 요소가 설치되어 있지만 설치를 더욱 안전하게 하려면 구성을 약간 변경해야 합니다.
주
php-fpm
구성 파일을 루트 권한으로 열려면 다음과 같이 하십시오.- sudo nano /etc/php/7.0/fpm/php.ini
우리가 이 파일에서 찾은 것은 설정 php-fpm
의 매개 변수입니다.이것은 세미콜론 (;) 으로 주석을 달 것이다기본값은 1 입니다.이것은 매우 안전하지 않은 설정입니다. 요청한 PHP 파일을 찾지 못하면 PHP가 가장 가까운 파일을 실행하려고 시도하는 것을 알려주기 때문입니다.이것은 기본적으로 사용자가 실행할 수 없는 스크립트를 실행할 수 있도록 하는 방식으로 PHP 요청을 작성할 수 있도록 합니다.
다음과 같이 행에 대한 설명을 취소하고 "0"으로 설정하여 두 조건을 변경합니다.
/etc/php/7.0/fpm/php.회사 명
cgi.fix_pathinfo=0
완료되면 파일을 저장하고 닫습니다.이제 PHP 프로세서를 재부팅하려면 다음 명령을 입력하십시오.
- sudo systemctl restart php7.0-fpm
이것은 우리가 한 변경을 실현할 것이다.4단계: PHP 프로세서를 사용하도록 Nginx 구성
현재, 우리는 이미 모든 필요한 구성 요소를 설치했다.우리가 여전히 필요로 하는 유일한 설정 변경은 Nginx가 우리의 PHP 프로세서를 사용하여 동적 내용을 처리하도록 알려주는 것이다.
서버 블록 수준에서 이 작업을 수행합니다(아파치의 가상 호스트와 유사한 서버 블록).다음 내용을 입력하여 기본 Nginx 서버 블록 구성 파일을 엽니다.
- sudo nano /etc/nginx/sites-available/default
현재 주석을 삭제하면 Nginx 기본 서버 블록 파일은 다음과 같습니다./etc/nginx/sites available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
우리는 우리 사이트를 위해 이 파일에 대해 약간의 변경을 해야 한다.cgi.fix_pathinfo
라는 파일을 제공하기 위해 index.php
명령의 첫 번째 값으로 index
을 추가해야 합니다.index.php
명령을 수정할 수 있습니다.server_name
위치 블록, 포함된 location ~\.php$
코드 세그먼트와 fastcgi-php.conf
와 관련된 플러그인입니다.php-fpm
파일의 위치 블록에 대한 주석을 취소할 것이다.Nginx는 이러한 파일을 처리하지 않습니다.만약 이 파일들 중 어느 것이 공교롭게도 문서 루트 디렉터리에 들어갔다면 방문자에게 제공해서는 안 된다./etc/nginx/sites available/default
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
위의 변경 사항을 완료하면 파일을 저장하고 닫을 수 있습니다.다음 내용을 입력하여 구성 파일에 구문 오류가 있는지 테스트합니다.
- sudo nginx -t
오류가 보고되면 파일을 다시 확인하고 계속하십시오.준비가 완료되면 필요한 변경 사항을 위해 Nginx를 다시 로드합니다.
- sudo systemctl reload nginx
단계 5: 구성을 테스트하는 PHP 파일 만들기
이제 완전히 LEMP 스택을 설정해야 합니다.Nginx가
.htaccess
개의 파일을 PHP 프로세서에 정확하게 전달할 수 있는지 확인하기 위해 테스트를 진행할 수 있습니다.우리는 문서 루트 디렉터리에 테스트 PHP 파일을 만들어서 이 점을 실현할 수 있다.텍스트 편집기의 문서 루트 디렉토리에서
.php
라는 새 파일을 엽니다.- sudo nano /var/www/html/info.php
새 파일에 다음 줄을 입력하거나 붙여넣습니다.유효한 PHP 코드이며 서버에 대한 정보를 반환합니다./var/www/html/info.php
<?php
phpinfo();
완료되면 파일을 저장하고 닫습니다.현재 웹 브라우저에서 이 페이지를 액세스할 수 있습니다. 서버의 도메인 이름이나 공공 IP 주소를 액세스한 후
info.php
:http://server_domain_or_IP/info.php
서버에 대한 정보가 포함된 PHP로 생성된 웹 페이지를 볼 수 있어야 합니다.
이러한 페이지를 보았다면 Nginx를 사용하여 PHP 처리를 설정했습니다.
Nginx가 페이지를 제대로 보여주는지 확인한 후에 만든 파일을 삭제하는 것이 좋습니다. 인증되지 않은 사용자에게 사용자의 설정에 대한 힌트를 주고 침입을 시도할 수 있도록 도와주기 때문입니다.나중에 필요하면 항상 이 파일을 다시 생성할 수 있습니다.
이제 다음 내용을 입력하여 파일을 삭제합니다.
- sudo rm /var/www/html/info.php
결론
이제 Ubuntu 16.04 서버에 LEMP 스택을 구성해야 합니다.이것은 방문자에게 웹 콘텐츠를 제공하는 데 매우 유연한 기초를 제공합니다.