Ubuntu 15.10에서 Nginx, PHP-FPM 및 SSL을 사용하여 Drupal 8을 설치하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- 우분투 16.04(Xenial Xerus)
- 우분투 15.10(Wily Werewolf)
이 페이지에서
- 전제 조건
- 1단계 - Ubuntu 시스템 업데이트
- 2단계 - Nginx 및 PHP-FPM 설치
- 3단계 - Nginx 및 PHP-FPM 구성
- 4단계 - MariaDB 설치 및 구성
- 5단계 - 자체 서명된 SSL 인증서 생성
- 6단계 - Drupal용 VirtualHost 구성
- 7단계 - Drupal 설치 및 구성
- 결론
Drupal은 PHP 기반의 잘 알려진 오픈 소스 콘텐츠 관리 시스템입니다. 무료로 사용할 수 있으며 GNU General Public License에 따라 배포됩니다. Drupal은 대규모 국제 웹사이트에서 개인 블로그, 기업 또는 정부 사이트에 이르기까지 모든 규모의 웹사이트에 사용할 수 있습니다. drupal의 핵심 부분은 "Drupal Core"라고 하며 기본 콘텐츠 관리 시스템, 사용자 관리, 메뉴 관리, 레이아웃 사용자 지정 및 시스템 관리를 포함합니다. Drupal Core는 플러그인으로 확장할 수 있습니다. 지금까지 drupal 커뮤니티에는 Drupal용 모듈이 31,000개 이상 제공되었습니다. 현재 Drupal 버전은 8.0입니다.
이 튜토리얼에서는 Nginx 웹 서버, MariaDB를 데이터베이스 서버로, PHP-FPM을 사용하여 PHP 요청을 처리하는 Drupal 8을 설치합니다. Drupal 웹 사이트를 보호하기 위해 SSL 인증서를 설치하는 방법도 보여 드리겠습니다.
전제 조건
- Ubuntu 15.10 - 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와 함께 php-fpm을 설치합니다.
apt-get install php5-fpm php5-cli php5-gd php5-mysql -y
다음 단계에서는 Nginx를 구성합니다.
3단계 - Nginx 및 PHP-FPM 구성
이 단계에서는 php-fpm을 사용하여 PHP 페이지에 대한 HTTP 요청을 제공하도록 Nginx를 구성합니다. php-fpm 디렉토리 "/etc/php/fpm"로 이동하여 "php.ini" 파일을 편집합니다.
cd /etc/php/fpm/
vim php.ini
773행에서 cgi.fix_pathinfo 행의 주석을 제거하고 값을 "0"으로 변경하십시오.
cgi.fix_pathinfo=0
파일을 저장하고 편집기를 종료합니다.
이제 기본 nginx 가상 호스트 구성을 수정합니다. "default" 파일을 편집하고 php-fpm 지시문을 활성화합니다.
cd /etc/nginx/sites-available/
vim default
nginx와 함께 php-fpm을 사용하려면 45 - 52행의 주석을 제거하십시오.
location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; }
파일을 저장하고 종료합니다.
그런 다음 "nginx -t" 명령으로 Nginx 구성을 테스트하여 유효한지 확인합니다.
nginx -t
오류가 없으면 nginx와 php-fpm 서비스를 다시 시작합니다.
systemctl restart nginx
systemctl restart php5-fpm
다음으로 웹 디렉토리 "/var/www/html"에 새 php info 파일을 생성하여 php-fpm이 nginx와 제대로 작동하는지 테스트합니다.
cd /var/www/html/
echo "<?php phpinfo(); ?>" > info.php
서버 IP: 192.168.1.101/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
비밀번호를 사용하여 MariaDB 셸에 로그인하고 "drupaldb"라는 drupal용 새 데이터베이스를 만들고 설치를 위해 비밀번호 "[email protected]"를 사용하여 새 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; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/php5-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 디렉토리에 들어가 git 또는 drush 명령을 사용하여 Drupal을 다운로드합니다.
cd /var/www/drupal8
git clone --branch 8.0.x http://git.drupal.org/project/drupal.git
drush를 사용하려면 대신 아래 명령을 실행하십시오.
drush dl drupal-8
다운로드가 완료될 때까지 기다린 다음 모든 Drupal 파일을 기본 디렉터리로 이동합니다.
mv drupal/* /var/www/drupal8/
다음 단계에서는 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이 설치되었습니다. Drupal 홈페이지로 리디렉션됩니다.

drupal 구성 파일 "settings.php" 및 "services.yml"의 권한에 대한 오류 메시지가 표시됩니다. 다음 명령을 사용하여 권한을 변경하십시오.
cd sites/default/
chmod 644 settings.php services.yml
이제 Drupal 8은 우분투 15.10에 Nginx 및 SSL과 함께 설치됩니다.
결론
Drupal은 PHP 기반의 무료 오픈 소스 콘텐츠 관리 프레임워크입니다. 개인 블로그, 개인 홈페이지, 기업 홈페이지에서 사용하실 수 있습니다. Drupal은 GNU 라이선스에 따라 배포됩니다. Drupal의 주요 구성요소는 "Drupal Core"라고 하며 지금까지 Drupal 커뮤니티는 이를 확장하기 위해 31.000개 이상의 모듈을 개발했습니다. 현재 안정 버전은 8.0입니다. Drupal은 설치 및 구성이 쉽고 Nginx 또는 Apache를 웹 서버로 사용하고 PHP-FPM을 사용하여 PHP 요청을 처리할 수 있습니다.