웹사이트 검색

16.10/16.04에서 Nginx, MariaDB 10, PHP 7(LEMP 스택)을 설치하는 방법


LEMP 스택은 동적 웹 애플리케이션을 배포하는 데 사용되는 패키지 그룹(Linux OS, Nginx 웹 서버, MySQL\MariaDB 데이터베이스 및 PHP 서버측 동적 프로그래밍 언어)을 나타내는 약어입니다. 웹 페이지.

이 튜토리얼은 NginxMariaDB 10, PHP 7HTTP 2.0 지원과 함께 LEMP 스택을 설치하는 방법을 안내합니다. Ubuntu 16.10Ubuntu 16.04 서버/데스크톱 버전에서 Strong>

요구사항

  1. Ubuntu 16.04 Server Edition 설치 [지침은 Ubuntu 16.10에서도 작동함]

1단계: Nginx 웹 서버 설치

1. Nginx는 인터넷 방문자에게 웹페이지를 표시하는 데 사용되는 현대적이고 리소스 효율적인 웹 서버입니다. apt 명령줄을 사용하여 Ubuntu 공식 리포지토리에서 Nginx 웹 서버를 설치하는 것부터 시작하겠습니다.

sudo apt-get install nginx

2. 다음으로 Nginx가 시작되고 포트 80에 바인딩되는지 확인하기 위해 netstat 및 systemctl 명령을 실행합니다.

netstat -tlpn

sudo systemctl status nginx.service

서버가 시작되었다는 확인을 받으면 브라우저를 열고 HTTP 프로토콜을 사용하여 서버 IP 주소 또는 DNS 레코드로 이동하여 Nginx 기본 웹 페이지를 방문할 수 있습니다.

http://IP-Address

2단계: Nginx HTTP/2.0 프로토콜 활성화

3. Ubuntu 16.04의 최신 Nginx 바이너리 릴리스에서 기본적으로 빌드되는 HTTP/2.0 프로토콜은 SSL 및 웹 SSL 웹 페이지 로딩 속도가 크게 향상될 것을 약속합니다.

Ubuntu 16.04의 Nginx에서 프로토콜을 활성화하려면 먼저 Nginx 사용 가능한 사이트 구성 파일로 이동하고 아래 명령을 실행하여 기본 구성 파일을 백업합니다.

cd /etc/nginx/sites-available/
sudo mv default default.backup

4. 그런 다음 텍스트 편집기를 사용하여 아래 지침에 따라 새 기본 페이지를 만듭니다.

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

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

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

위의 구성 조각에서는 모든 SSL 수신 지시문에 http2 매개변수를 추가하여 HTTP/2.0을 사용할 수 있습니다.

또한 서버 지시어에 포함된 발췌문의 마지막 부분은 SSL이 아닌 모든 트래픽을 SSL/TLS 기본 호스트로 리디렉션하는 데 사용됩니다. 또한 server_name 지시어를 자신의 IP 주소나 DNS 레코드(FQDN 권장)와 일치하도록 바꾸세요.

5. 위 설정으로 Nginx 기본 구성 파일 편집을 마쳤으면 아래 명령을 실행하여 SSL 인증서 파일과 키를 생성하고 나열합니다.

인증서를 자신만의 맞춤 설정으로 채우고 일반 이름 설정이 DNS FQDN 레코드나 웹페이지에 액세스하는 데 사용되는 서버 IP 주소와 일치하는지 확인하세요.

sudo mkdir /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
ls /etc/nginx/ssl/

6. 또한 아래 명령을 실행하여 ssl_dhparam 명령줄의 위 구성 파일에서 변경된 강력한 DH 암호를 생성합니다.

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Diffie-Hellman 키가 생성되면 Nginx 구성 파일이 올바르게 작성되었는지, Nginx 웹 서버에서 적용할 수 있는지 확인하고 데몬을 다시 시작하여 변경 사항을 반영합니다. 아래 명령을 실행합니다.

sudo nginx -t
sudo systemctl restart nginx.service

8. Nginx가 HTTP/2.0 프로토콜을 사용하는지 테스트하려면 아래 명령을 실행하세요. h2 광고 프로토콜이 있으면 Nginx가 HTTP/2.0 프로토콜을 사용하도록 성공적으로 구성되었음을 확인합니다. 모든 최신 최신 브라우저는 기본적으로 이 프로토콜을 지원해야 합니다.

openssl s_client -connect localhost:443 -nextprotoneg ''

3단계: PHP 7 인터프리터 설치

Nginx는 PHP 동적 처리 언어 인터프리터와 함께 사용되어 Ubuntu 공식 저장소에서 php-fpm 바이너리 패키지를 설치하여 얻은 FastCGI 프로세스 관리자의 도움으로 동적 웹 콘텐츠를 생성할 수 있습니다.

9. PHP7.0과 PHP가 Nginx 웹 서버와 통신할 수 있게 해주는 추가 패키지를 가져오려면 서버 콘솔에서 아래 명령을 실행하세요.

sudo apt install php7.0 php7.0-fpm 

10. PHP7.0 인터프리터가 컴퓨터에 성공적으로 설치되면 아래 명령을 실행하여 php7.0-fpm 데몬을 시작하고 확인합니다. 명령:

sudo systemctl start php7.0-fpm
sudo systemctl status php7.0-fpm

11. Nginx의 현재 구성 파일은 동적 콘텐츠를 서버하기 위해 PHP FastCGI 프로세스 관리자를 사용하도록 이미 구성되어 있습니다.

Nginx가 PHP 인터프리터를 사용할 수 있도록 하는 서버 블록이 아래 발췌에 나와 있으므로 기본 Nginx 구성 파일을 추가로 수정할 필요가 없습니다.

location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

다음은 원래 Nginx 기본 구성 파일의 경우 주석 처리를 제거하고 수정해야 하는 지침에 대한 스크린샷입니다.

12. PHP FastCGI 프로세스 관리자와 Nginx 웹 서버 관계를 테스트하려면 아래 명령을 실행하여 PHP info.php 테스트 구성 파일을 생성하고 이 구성 파일을 방문하여 설정을 확인하세요. 아래 주소를 사용하세요: http://IP_or domain/info.php.

sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

또한 아래 스크린샷에 표시된 대로 PHP 변수 블록에서 $_SERVER['SERVER_PROTOCOL'] 줄을 찾아 서버에서 HTTP/2.0 프로토콜을 광고하는지 확인하세요.

13. 추가 PHP7.0 모듈을 설치하려면 apt search php7.0 명령을 사용하여 PHP 모듈을 찾아 설치하세요.

또한 WordPress나 기타 CMS를 설치하려는 경우 유용할 수 있는 다음 PHP 모듈을 설치해 보세요.

sudo apt install php7.0-mcrypt php7.0-mbstring

14. PHP 추가 모듈을 등록하려면 아래 명령을 실행하여 PHP-FPM 데몬을 다시 시작하세요.

sudo systemctl restart php7.0-fpm.service

4단계: MariaDB 데이터베이스 설치

15. 마지막으로 LEMP 스택을 완성하려면 웹사이트 데이터를 저장하고 관리하기 위한 MariaDB 데이터베이스 구성 요소가 필요합니다.

MySQL 모듈을 사용하여 데이터베이스에 액세스하려면 아래 명령을 실행하여 MariaDB 데이터베이스 관리 시스템을 설치하고 PHP-FPM 서비스를 다시 시작하세요.

sudo apt install mariadb-server mariadb-client php7.0-mysql
sudo systemctl restart php7.0-fpm.service

16. MariaDB 설치를 보호하려면 Ubuntu 저장소의 바이너리 패키지에서 제공하는 보안 스크립트를 실행하십시오. 이 스크립트는 루트 비밀번호 설정, 익명 사용자 제거, 원격 루트 로그인 비활성화 및 테스트 데이터베이스 제거를 요청합니다.

아래 명령을 실행하여 스크립트를 실행하고 모든 질문에 yes로 대답하세요. 아래 스크린샷을 가이드로 사용하세요.

sudo mysql_secure_installation

17. 일반 사용자가 시스템 sudo 권한 없이 데이터베이스에 액세스할 수 있도록 MariaDB를 구성하려면 루트 권한으로 MySQL 명령줄 인터페이스로 이동하여 MySQL 인터프리터에서 아래 명령을 실행합니다.

sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

마지막으로 MariaDB 데이터베이스에 로그인하고 아래 명령을 실행하여 루트 권한 없이 임의의 명령을 실행합니다.

mysql -u root -p -e 'show databases'

그게 다야! 이제 데이터베이스와 상호작용할 수 있는 복잡한 동적 웹 애플리케이션을 배포할 수 있는 Ubuntu 16.10Ubuntu 16.04 서버에 LEMP 스택이 구성되었습니다.