웹사이트 검색

Ubuntu 16.04에서 Nginx, PHP-FPM 및 SSL을 사용하여 Drupal 8.1을 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • 우분투 15.10(Wily Werewolf)

이 페이지에서

  1. 전제 조건
  2. 1단계 - Ubuntu 시스템 업데이트
  3. 2단계 - Nginx 및 PHP-FPM 설치
  4. 3단계 - Nginx 및 PHP-FPM 구성
  5. 4단계 - MariaDB 설치 및 구성
  6. 5단계 - 자체 서명된 SSL 인증서 생성
  7. 6단계 - Drupal용 VirtualHost 구성
  8. 7단계 - Drupal 설치 및 구성
  9. 결론

Drupal은 PHP 기반의 잘 알려진 오픈 소스 콘텐츠 관리 시스템입니다. 무료로 사용할 수 있으며 GNU General Public License에 따라 배포됩니다. Drupal은 대규모 국제 웹사이트에서 개인 블로그, 기업 또는 정부 사이트에 이르기까지 모든 규모의 웹사이트에 사용할 수 있습니다. drupal의 핵심 부분은 "Drupal Core"라고 하며 기본 콘텐츠 관리 시스템, 사용자 관리, 메뉴 관리, 레이아웃 사용자 지정 및 시스템 관리를 포함합니다. Drupal Core는 플러그인으로 확장할 수 있습니다. 지금까지 drupal 커뮤니티에는 Drupal용 모듈이 31,000개 이상 제공되었습니다.

이 튜토리얼에서는 Nginx 웹 서버와 함께 Drupal 8.1.10, 데이터베이스 서버로 MariaDB 10, PHP 요청을 처리하기 위한 PHP-FPM(PHP 7.0)을 설치합니다. Drupal 웹 사이트를 보호하기 위해 SSL 인증서를 설치하는 방법도 보여 드리겠습니다.

전제 조건

  • Ubuntu 16.04 - 64비트 버전.
  • 루트 권한.\n

1단계 - Ubuntu 시스템 업데이트

ssh를 사용하여 우분투 서버에 로그인한 다음 루트 사용자가 되어 우분투 저장소를 업데이트합니다.

sudo su
sudo apt-get update

2단계 - Nginx 및 PHP-FPM 설치

Nginx 또는 \engine-x\는 낮은 메모리/RAM 사용량으로 고성능에 중점을 둔 빠른 HTTP 서버입니다. HTTP, HTTPS, POP3 및 IMAP 프로토콜을 위해 Nginx를 리버스 프록시로도 사용할 수 있습니다. 이 튜토리얼에서는 Nginx를 SSL 지원 HTTP 서버로 사용합니다.

sudo/root 사용자로 다음 apt 명령을 사용하여 Nginx를 설치합니다.

sudo apt-get install nginx -y

다음으로, drupal 코어에 필요한 php-gd 확장자를 사용하여 php7.0-fpm을 설치합니다.

sudo apt-get install php7.0-fpm php7.0-cli php7.0-gd php7.0-mysql php7.0-xml -y

다음 단계에서는 Nginx를 구성합니다.

3단계 - Nginx 및 PHP-FPM 구성

이 단계에서는 php-fpm을 사용하여 PHP 페이지에 대한 HTTP 요청을 제공하도록 Nginx를 구성합니다. php-fpm 디렉토리 "/etc/php/7.0/fpm"로 이동하여 "php.ini" 파일을 편집합니다.

cd /etc/php/7.0/fpm/
vim php.ini

761행에서 cgi.fix_pathinfo 행의 주석을 제거하고 값을 "0"으로 변경하십시오.

cgi.fix_pathinfo=0

파일을 저장하고 편집기를 종료합니다.

이제 기본 Nginx 가상 호스트 구성을 수정합니다. "default" 파일을 편집하고 php-fpm 지시문을 활성화합니다.

cd /etc/nginx/sites-available/
vim default

nginx와 함께 php-fpm을 사용하려면 51~58행의 주석을 해제하세요.

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php7.0-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php7.0-fpm:
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

파일을 저장하고 종료합니다.

그런 다음 "nginx -t" 명령으로 Nginx 구성을 테스트하여 유효한지 확인합니다.

nginx -t

오류가 없으면 nginx와 php-fpm 서비스를 다시 시작합니다.

systemctl restart nginx
systemctl restart php7.0-fpm

다음으로 웹 디렉토리 "/var/www/html"에 새 php info 파일을 생성하여 php-fpm이 nginx와 제대로 작동하는지 테스트합니다.

cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php

웹 브라우저에서 서버 IP(제 경우 http://192.168.1.4/info.php)에 있는 info.php 파일을 방문합니다. 결과는 아래 스크린샷과 비슷해야 합니다.

4단계 - MariaDB 설치 및 구성

MariaDB는 MYSQL 관계형 데이터베이스 관리 시스템의 데이터베이스 서버 분기이며 MySQL을 위한 드롭인 대체 기능을 제공합니다.

apt-get 명령을 사용하여 최신 버전의 MariaDB를 설치합니다.

sudo apt-get install mariadb-client mariadb-server -y

설치가 완료되면 MariaDB를 시작합니다.

systemctl start mysql

MariaDB 서비스 이름은 "mysql"이므로 여기서 systemctl 명령이 mysql이라는 단어를 사용합니다.

이제 아래 명령을 사용하여 MariaDB 사용자 이름과 비밀번호를 구성합니다.

mysql_secure_installation
mysql_secure_installation

Set root password? [Y/n] Y
New password:
Re-enter new password:

Remove anonymous users? [Y/n] Y
 ... Success!

Disallow root login remotely? [Y/n] Y
 ... Success!

Remove test database and access to it? [Y/n] Y
 ... Success!

Reload privilege tables now? [Y/n] Y
 ... Success!

비밀번호를 사용하여 MariaDB 셸에 로그인하고 "drupaldb"라는 drupal용 새 데이터베이스를 만들고 설치를 위해 비밀번호 "[email "를 사용하여 새 MariaDB/MySQL 사용자 "drupaluser"를 만듭니다!

mysql -u root -p


create database drupaldb;
create user ';
flush privileges;
\q

\drupaluser\ 사용자가 있는 \drupaldb\ 데이터베이스가 생성되었습니다.

5단계 - 자체 서명된 SSL 인증서 생성

/etc/nginx 디렉토리로 이동하여 SSL 구성 파일용으로 "ssl"이라는 이름으로 새 디렉토리를 만듭니다.

mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl

그런 다음 아래의 openssl 명령을 사용하여 자체 서명된 새 SSL 인증서를 생성합니다.

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

요청된 정보를 입력합니다. SSL 인증서 파일이 생성되었습니다. 이제 개인 키 파일 "drupal.key"의 권한을 600으로 변경하십시오.

chmod 600 drupal.key

6단계 - Drupal용 VirtualHost 구성

도메인 이름이 "drupal8.me"인 "/var/www/drupal8" 디렉토리에 Drupal 8을 설치합니다. 설치의 도메인 이름을 이 drupal 설치를 사용하려는 웹사이트의 도메인 이름으로 바꾸십시오. 이제 디렉토리를 생성해 보겠습니다.

mkdir -p /var/www/drupal8

그런 다음 Nginx 가상 호스트 디렉토리 "/etc/nginx/sites-available/"로 이동하고 vim 편집기로 새 파일 "drupal8"을 만듭니다.

cd /etc/nginx/sites-available/
vim drupal8

아래의 drupal용 Nginx 구성을 drupal8 파일에 붙여넣습니다.

server {
    server_name drupal8.me;
    root /var/www/drupal8; ## <-- Your only path reference.

    listen 80;
    listen [::]:80;
    listen 443 default ssl;

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

    # Redirect HTTP to HTTPS
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # In Drupal 8, we must also match new paths where the '.php' appears in the middle,
    # such as update.php/selection. The rule we use is strict, and only allows this pattern
    # with the update.php front controller.  This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If you do not have
    # any paths like that, then you might prefer to use a laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL pattern with front
    # controllers other than update.php in a future release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7
        try_files $uri @rewrite;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

파일을 저장하고 편집기를 종료합니다.

Drupal 가상 호스트 파일이 생성되었으므로 이제 "sites-enabled" 디렉토리에 파일에 대한 심볼릭 링크를 생성하여 활성화해야 합니다.

ln -s /etc/nginx/sites-available/drupal8 /etc/nginx/sites-enabled/

Nginx 구성을 테스트하고 Nginx를 다시 시작합니다.

nginx -t
systemctl restart nginx

7단계 - Drupal 설치 및 구성

Drupal 설치를 시작하기 전에 git 및 drush를 설치해야 합니다. Drush는 Drupal용 명령줄 셸 및 Unix 스크립팅 인터페이스입니다. 다음 명령어를 사용하여 설치합니다.

sudo apt-get install git drush -y

그런 다음 이전에 생성한 drupal8 디렉토리에 들어가 wget 또는 drush로 Drupal을 다운로드합니다. 여기서는 wget을 사용하겠습니다.

cd /var/www/drupal8
wget https://ftp.drupal.org/files/projects/drupal-8.1.10.tar.gz

drush를 사용하려면 대신 아래 명령을 실행하십시오.

drush dl drupal-8

다운로드가 완료될 때까지 기다린 다음 모든 Drupal 파일을 기본 디렉터리로 이동합니다.

tar -xzvf drupal-8.1.10.tar.gz
mv drupal-8.1.10/* .
rm -rf drupal-8.1.10

다음 단계에서는 Drupal 설정 파일을 구성합니다. Drupal 기본 디렉토리에서 "sites/default" 디렉토리로 이동하여 "settings.php" 및 "services.yml" 구성 파일 두 개를 복사합니다.

cd sites/default
cp default.settings.php settings.php
cp default.services.yml services.yml

그런 다음 "sites/default" 디렉토리 안에 "files"라는 이름으로 새 디렉토리를 만들어야 합니다. "chmod" 명령은 구성 파일과 "files" 디렉토리가 Drupal 설치를 위해 쓰기 가능한지 확인합니다.

mkdir files/
chmod a+w *

이제 웹 브라우저를 사용하여 Drupal 사이트(내 경우 http://drupal8.me)를 방문하면 자동으로 https 연결로 리디렉션되고 Drupal 설치 프로그램 페이지가 표시됩니다.

이 가이드는 오늘 출시된 Drupal의 최신 보안 패치를 포함하기 위해 명령에서 Drupal 8.1.8에서 8.1.10으로 업데이트되었습니다. 스크린샷에는 인터페이스가 변경되지 않았기 때문에 여전히 8.1.8 버전 번호가 표시됩니다. . 항상 안정적인 최신 Drupal 버전을 설치에 사용하고 위의 설치 명령에서 버전 번호를 바꿔야 합니다.

언어를 선택하세요. 여기서는 "영어"를 사용하겠습니다.

"저장하고 계속하기"를 클릭하십시오.

이제 설치 유형을 선택하십시오. 표준 또는 최소 유형을 사용할 수 있습니다. "표준"을 사용하겠습니다.

이제 데이터베이스 구성 페이지가 표시됩니다. Drupal용으로 만든 데이터베이스에 대한 데이터베이스 세부 정보를 입력합니다.

설치가 완료될 때까지 기다리십시오.

이제 관리자의 사이트 이름, 사용자 및 비밀번호, 이메일 주소 등과 같은 사이트 프로필 설정을 구성해야 합니다.

이제 Drupal이 설치되었습니다. Drupal 홈페이지로 리디렉션됩니다.

drupal 구성 파일 "settings.php" 및 "services.yml"의 권한에 대한 오류 메시지가 표시될 수 있습니다. 다음 명령을 사용하여 권한을 변경하십시오.

cd sites/default/
chmod 644 settings.php services.yml

이제 Drupal 8.1은 우분투 16.04에 Nginx 및 SSL과 함께 설치됩니다.

결론

Drupal은 PHP 기반의 무료 오픈 소스 콘텐츠 관리 프레임워크입니다. 개인 블로그, 개인 홈페이지, 기업 홈페이지에서 사용하실 수 있습니다. Drupal은 GNU-GPL 라이선스에 따라 배포됩니다. Drupal의 주요 구성요소는 "Drupal Core"라고 하며 지금까지 Drupal 커뮤니티는 이를 확장하기 위해 31.000개 이상의 모듈을 개발했습니다. 현재 안정 버전은 8.1.10입니다. Drupal은 설치 및 구성이 쉬우며 Nginx 또는 Apache를 웹 서버로 사용하고 PHP-FPM을 사용하여 Drupal 서버에서 PHP 요청을 처리할 수 있습니다.