웹사이트 검색

Ubuntu 22.04에서 Apache2와 함께 Drupal CMS를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. Apache2 웹 서버 설치
  3. MariaDB 서버 설치
  4. PHP 8.x 설치 및 구성
  5. 작성기 설치
  6. Drupal 최신 버전 다운로드
  7. Drupal용 Apache2 가상 호스트 설정\n
  8. Drupal 웹 설치 프로그램 실행\n
  9. 결론

Drupal은 PHP로 작성되고 GNU General Public License에 따라 배포되는 무료 오픈 소스 웹 콘텐츠 관리 시스템입니다. Drupal은 다중 채널 게시를 위한 정교한 API가 포함된 강력한 콘텐츠 관리 도구를 제공합니다. Drupal은 인터넷의 상위 10,000개 웹사이트 중 최소 14%에서 사용되며 글로벌 엔터프라이즈 산업, 정부, 교육 및 기관 사이트에서 사용됩니다. Drupal은 디지털 응용 프로그램과 통합된 확장성이 뛰어난 시스템을 제공하며 다국어 지원을 통해 여러 조직을 위한 다중 사이트를 만드는 데 사용할 수 있습니다.

이 가이드에서는 Ubuntu 22.04 시스템에 Drupal의 최신 버전을 설치하는 방법을 설명합니다. 이 가이드에는 Apache2 웹 서버, MariaDB 데이터베이스, PHP 8.1 및 Composer와 같은 일부 패키지 종속성의 설치가 PHP 패키지 관리 도구로 포함되어 있습니다. 여기서 목표는 LAMP Stack으로 Drupal 설치를 완료하고 SSL 인증서로 보호하는 것입니다.

전제 조건

이 가이드를 완료하려면 다음 요구 사항이 필요합니다.

  • Ubuntu 22.04 서버. 이 데모는 호스트 이름이 server-ubuntu이고 UFW 방화벽이 활성화된 Ubuntu 서버를 사용합니다.\n
  • 관리 권한이 있는 루트가 아닌 사용자.\n
  • Ubuntu 서버 IP 주소를 가리키는 도메인 이름.

Apache2 웹 서버 설치

첫 번째 단계에서는 Ubuntu 리포지토리에서 APT를 통해 Apache 웹 서버를 설치합니다. 이 글을 쓰는 시점에서 Drupal 9의 최신 버전에는 Apache v2.x 이상이 필요했습니다.

대부분의 Drupal 개발은 Apache 웹 서버와 함께 실행되지만 여전히 Nginx와 같은 다른 웹 서버에서도 실행됩니다.

패키지를 설치하기 전에 루트가 아닌 sudo 사용자로 다음 apt 명령을 실행하여 패키지 인덱스 저장소를 업데이트하고 새로 고칩니다. 서버에서 직접 루트 사용자를 사용할 수도 있습니다.

sudo apt update

이제 아래의 apt 명령을 실행하여 Apache 웹 서버를 설치하십시오. Apache 설치를 확인하라는 메시지가 표시되면 Y를 입력하여 동의하고 ENTER를 누릅니다.

sudo apt install apache2

다음으로 아래의 systemctl 명령을 사용하여 apache2 서비스를 확인하고 확인합니다.

apache2 서비스가 활성화되고 시스템 부팅 시 자동으로 실행된다는 출력이 표시되어야 합니다. 또한 실행 중인 apache2 서비스의 상태 출력을 받게 됩니다.

sudo systemctl is-enabled apache2
sudo systemctl status apache2

마지막으로 UFW 방화벽에 "Apache Full" 규칙을 추가해야 합니다. "Apache Full" 규칙은 HTTP 및 HTTPS 포트에 대한 액세스를 자동으로 허용하며 이는 기본적으로 Apache 패키지에 포함됩니다.

다음 명령을 실행하여 "Apache Full" 규칙을 추가합니다. 그런 다음 UFW 방화벽의 상태를 확인하고 확인하십시오. "Apache Full" 규칙이 UFW 방화벽에 추가되었다는 출력을 받아야 합니다.

sudo ufw allow "Apache Full"
sudo ufw status

MariaDB 서버 설치

Drupal은 MySQL/MariaDB, PostgreSQL 및 SQLite와 같은 여러 RDBMS(관계형 데이터베이스 관리 시스템)를 지원합니다. 이 예에서는 MariaDB 데이터베이스 서버와 함께 Drupal을 설치합니다.

Drupal 9의 현재 최신 버전에는 최소한 MariaDB 서버 v10.3.x가 필요했습니다. 그리고 최신 우분투 리포지토리는 MariaDB 서버 v10.6을 제공합니다.

다음 apt 명령을 사용하여 MariaDB 서버 패키지를 설치합니다. 설치를 확인하라는 메시지가 표시되면 Y를 입력하여 확인한 다음 ENTER를 누릅니다.

sudo apt install mariadb-server mariadb-client

MariaDB 서버가 설치되면 다음 systemctl 명령을 실행하여 mariadb 서비스의 상태를 확인합니다.

mariadb 서버가 활성화되고 시스템 부팅/시작 시 자동으로 실행된다는 출력을 받게 됩니다. 그리고 mariadb 서비스의 현재 상태가 실행 중입니다.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

이제 mariadb 서비스가 실행 중이므로 MariaDB 서버 설치를 설정하고 보호해야 합니다. 이렇게 하려면 MariaDB 서버 패키지에서 제공하는 명령줄 도구 mysql_secure_installation을 사용할 수 있습니다.

다음 명령을 실행하여 MariaDB 서버 설치 구성 및 보안을 시작합니다.

sudo mysql_secure_installation

이제 다음 질문이 표시됩니다.

  • 루트 비밀번호가 없는 기본 MariaDB 서버 설치의 경우 비밀번호를 묻는 메시지가 표시되면 ENTER를 누릅니다.\n
  • MariaDB 루트 사용자에 대한 로컬 인증은 기본적으로 보호되며 인증 방법을 unix_socket으로 변경하라는 메시지가 표시되면 n을 입력합니다.\n
  • Y를 입력하여 새 MariaDB 루트 암호를 만듭니다. 그런 다음 MariaDB 루트 사용자의 강력한 암호를 입력하고 반복합니다.\n
  • MariaDB 루트 사용자에 대한 원격 인증을 비활성화하라는 메시지가 표시되면 Y를 입력하여 동의합니다.\n
  • 기본 MariaDB 서버 설치는 데이터베이스 테스트와 함께 제공되며 익명 사용자가 액세스할 수 있습니다. 기본 데이터베이스 테스트를 제거하고 익명 권한을 제거하려면 두 설정 모두에 Y를 입력합니다.\n
  • 마지막으로 Y를 입력하여 테이블 권한 다시 로드를 확인합니다.\n

이제 MariaDB 루트 암호를 구성하고 MariaDB 서버 설치를 보호했습니다. 이제 Drupal에 대한 새 데이터베이스와 사용자를 생성합니다. 이렇게 하려면 먼저 mysql 명령(MySQL/MariaDB 클라이언트)을 통해 MariaDB 셸에 로그인해야 합니다.

다음 mysql 명령을 사용하여 사용자 루트로 MariaDB 셸에 로그인합니다. 암호를 묻는 메시지가 표시되면 MariaDB 루트 암호를 입력합니다. 또한 이 명령을 시스템 Linux 사용자 루트로 실행 중인 경우 ENTER를 누르기만 하면 됩니다.

sudo mysql -u root -p

다음으로 다음 쿼리를 실행하여 Drupal용 새 MariaDB 데이터베이스 및 사용자를 생성합니다. 이 예제에서는 drupal이라는 사용자와 암호가 password인 drupaldb 데이터베이스를 생성합니다. 비밀번호를 강력한 새 비밀번호로 바꿀 수 있습니다.

CREATE DATABASE drupaldb;
CREATE USER WITH GRANT OPTION;
FLUSH PRIVILEGES;

이제 MariaDB 사용자[email 의 권한을 확인하기 위해 다음 쿼리를 다시 실행합니다. 그런 다음 quit 쿼리를 통해 MariaDB 셸을 종료하거나 Ctrl+d를 누르기만 하면 됩니다.

MariaDB 사용자[email 가 drupaldb 데이터베이스에 액세스할 수 있다는 출력을 받아야 합니다.

SHOW GRANTS FOR ;
quit

PHP 8.x 설치 및 구성

이 글을 쓰는 시점에서 설치를 위해 PHP 8.x를 사용하려면 Drupal 9의 최신 버전을 권장합니다. 또한 캐시를 위한 php-apcu, 이미지 처리를 위한 php-gd, MariaDB 데이터베이스용 드라이버로 php-mysql 등과 같은 추가 PHP 확장을 설치해야 합니다.

이 예에서는 Ubuntu 리포지토리에서 제공하는 PHP 8.1을 설치합니다. 다음 apt 명령을 사용하여 PHP 8.1과 필요한 추가 확장 및 패키지를 설치하십시오.

설치를 확인하라는 메시지가 표시되면 Y를 입력하여 동의하고 ENTER를 누릅니다.

sudo apt install php php-apcu php-dev libapache2-mod-php libcurl4-openssl-dev php-cli php-mysql php-zip php-gd php-fpm php-json php-common php-intl php-mbstring php-curl php-xml php-pear php-tidy php-soap php-bcmath php-xmlrpc

PHP가 설치되면 PECL(PHP Extensions Community Library) 리포지토리에서 추가 PHP 확장 uploadprogress를 설치해야 합니다. 이렇게 하려면 php-pear 패키지에서 제공하는 pecl 명령줄을 사용할 수 있습니다.

uploadprogress 확장은 Drupal에서 파일 업로드의 진행 상황을 표시하고 추적하는 데 사용됩니다. 여기에는 남은 예상 시간과 파일이 업로드되는 동안 파일 내용에 대한 액세스가 포함됩니다.

아래의 pecl 명령을 사용하여 PHP 확장자 uploadprogress를 설치합니다. pecl 명령은 이제 uploadprogress 확장의 소스를 다운로드하고 확장을 자동으로 컴파일 및 설치합니다.

sudo pecl install uploadprogress

설치가 완료되면 다음 명령을 실행하여 uploadprogress PHP 확장에 대한 새 구성 파일을 만듭니다.

cat <<EOF | sudo tee /etc/php/8.1/mods-available/uploadprogress.ini
; configuration for php uploadprogress module
; priority 15
extension=uploadprogress.so
EOF

이제 다음 명령을 실행하여 PHP 설치에서 uploadprogress 확장을 활성화합니다.

sudo ln -s /etc/php/8.1/mods-available/uploadprogress.ini /etc/php/8.1/apache2/conf.d/15-uploadprogress.ini

이제 Drupal용 모든 PHP 패키지 설치가 완료되었습니다. 이제 php.ini 파일을 편집하여 PHP 설치를 설정해야 합니다.

텍스트 편집기를 사용하여 /etc/php/8.1/apache2/php.ini 파일을 엽니다. 이 예에서는 nano를 사용합니다.

sudo nano /etc/php/8.1/apache2/php.ini

아래와 같이 일부 옵션을 변경합니다. memory_limit 옵션은 서버 메모리에 따라야 하며 date.timezone 옵션은 시간대에 따라야 합니다.

memory_limit = 512M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Paris

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

다음으로 다음 systemctl 명령을 사용하여 apache2 서비스를 다시 시작하고 PHP 구성에 새로운 변경 사항을 적용합니다.

sudo systemctl restart apache2

PHP 8.1의 설치 및 구성을 완료했으므로 이제 phpinfo 파일을 생성하여 설치를 확인할 수 있습니다.

다음 명령을 실행하여 새 phpinfo 파일 /var/www/html/info.php을 만듭니다. 이 파일에는 웹 브라우저에서 PHP의 세부 구성을 보여주는 phpinfo 스크립트가 포함되어 있습니다.

cat <<EOF | sudo tee /var/www/html/info.php
<?php
phpinfo();
?>
EOF

마지막으로 웹 브라우저를 열고 경로 URL /info.php(예: http://192.168.5.100/info.php)에 따라 Ubuntu 서버 IP 주소를 방문합니다. PHP 8.1 설치에 대한 세부 정보 페이지가 표시되어야 합니다.

작곡가 설치

작성기는 PHP 패키지 종속성을 관리하기 위한 명령줄 도구입니다. Drupal 설치의 PHP 패키지 종속성을 설치하는 데 사용할 Composer를 설치해야 합니다.

Composer를 설치하려면 다음 명령을 실행합니다.

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

각 명령이 사용한 내용은 다음과 같습니다.

  • 첫 번째 명령은 Composer 설치 프로그램 스크립트를 composer-setup.php로 다운로드합니다. 그런 다음 두 번째 명령은 설치 프로그램 스크립트의 해시를 확인합니다. 출력 메시지 설치 프로그램이 확인되었는지 확인하십시오.\n
  • 마지막 두 명령은 설치 프로그램 스크립트를 실행하고 Composer PHP 패키지 종속성 관리 도구를 설치합니다. 그런 다음 설치 프로그램 스크립트 composer-setup.php가 삭제됩니다.\n
  • 마지막으로 현재 작업 디렉토리에 Composer 바이너리 파일을 composer.phar로 가져옵니다.\n

그런 다음 다음 명령을 실행하여 바이너리 파일 composer.phar을 /usr/local/bin/composer로 이동합니다. 이 작업을 통해 모든 사용자가 작성기 명령을 실행할 수 있습니다.

sudo mv composer.phar /usr/local/bin/composer

이제 composer 명령을 실행하여 설치를 확인하고 확인할 수 있습니다. 다음 명령은 Composer 명령의 자세한 도움말 페이지를 보여줍니다.

composer --help

Drupal 최신 버전 다운로드

Drupal의 모든 패키지 종속 항목을 설치했으므로 이제 Drupal 소스 코드를 다운로드하고 Composer를 통해 PHP 패키지 종속 항목을 설치합니다.

최신 버전의 Drupal을 다운로드하려면 다음 wget 명령을 사용하십시오. 현재 작업 디렉토리에 drupal.tar.gz 파일이 보일 것입니다.

wget https://www.drupal.org/download-latest/tar.gz -O drupal.tar.gz

이제 아래의 tar 명령을 통해 drupal.tar.gz 파일을 추출하십시오. 그런 다음 추출된 drupal 디렉토리를 /var/www/drupal으로 이동합니다. 이 디렉토리는 Drupal 설치를 위한 Document-root 디렉토리로 사용됩니다.

tar -xvf drupal.tar.gz
mv drupal-* /var/www/drupal

다음으로 다음 명령을 사용하여 Drupal 설치 디렉터리 /var/www/drupal의 소유권과 권한을 변경합니다. 소유권은 일반 사용자 권한 755이 있는 사용자 및 그룹 www-data여야 합니다.

sudo chown -R www-data:www-data /var/www/drupal/
sudo chmod -R 755 /var/www/drupal/

이제 /var/www/drupal 디렉토리로 이동하고 아래와 같이 작성기 명령을 실행하여 Drupal 설치를 위한 모든 PHP 종속성을 설치하십시오.

cd /var/www/drupal
sudo -u www-data composer install --no-dev

Drupal용 Apache2 가상 호스트 설정

Drupal을 다운로드하고 PHP 패키지 종속성을 설치한 후 이제 Drupal 설치를 위한 Apache 가상 호스트를 설정하고 구성합니다.

가상 호스트 구성을 시작하기 전에 Drupal에 사용할 도메인 이름이 서버 IP 주소를 가리키는지 확인하십시오. 또한 SSL 인증서가 준비되었는지 확인하십시오.

Drupal에 대해 일부 Apache2 모듈을 활성화하려면 다음 a2enmod 명령을 실행하십시오.

sudo a2enmod rewrite ssl headers deflate

이제 다음 명령을 사용하여 drupal /etc/apache2/sites-available/drupal.conf에 대한 새 가상 호스트 파일을 만듭니다. 이 예에서는 nano 편집기를 사용합니다.

sudo nano /etc/apache2/sites-available/drupal.conf

Drupal 가상 호스트에 대해 다음 전체 구성을 추가합니다. 도메인 이름과 SSL 인증서의 경로를 변경해야 합니다. 이 데모에서는 Drupal 설치에 hwdomain.io 도메인을 사용합니다.

<VirtualHost *:80>

    ServerName hwdomain.io
    ServerAdmin
        DocumentRoot /var/www/drupal

        # Add security
        php_flag register_globals off

        ErrorLog ${APACHE_LOG_DIR}/hwdomain.io.error.log
        CustomLog ${APACHE_LOG_DIR}/hwdomain.io.access.log combined

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/hwdomain.io/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/hwdomain.io/privkey.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>

        <Directory /var/www/drupal>
                Options FollowSymlinks
                #Allow .htaccess
                AllowOverride All
                Require all granted
                <IfModule security2_module>
                        SecRuleEngine Off
                        # or disable only problematic rules
                </IfModule>
        </Directory>

        <Directory /var/www/drupal/>
            RewriteEngine on
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
        </Directory>

    </VirtualHost>

</IfModule>

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

그런 다음 다음 명령을 실행하여 drupal.conf 가상 호스트 파일을 활성화합니다. 그런 다음 Apache 구성을 테스트하고 확인합니다. Apache 구성이 올바르면 Syntax OK와 같은 출력 메시지를 받게 됩니다.

sudo a2ensite drupal.conf
sudo apachectl configtest

마지막으로 apache2 서비스를 다시 시작하여 새 변경 사항과 새 가상 호스트 파일을 적용합니다. 이제 도메인 이름과 웹 브라우저를 통해 Drupal 설치 프로그램에 액세스할 수 있습니다.

sudo systemctl restart apache2

Drupal 웹 설치 프로그램 실행

Drupal 설치 프로그램에 액세스하려면 웹 브라우저를 열고 Drupal 설치의 도메인 이름(예: https://hwdomain.io/)을 방문하십시오.

언어 설정에서 원하는 언어를 선택하고 저장하고 계속하기를 클릭합니다. 기본 언어 설정은 영어입니다.

Drupal 설치를 위한 설치 프로파일을 선택하십시오. 그런 다음 저장하고 계속을 클릭합니다.

새로운 Drupal 사용자에게 권장되는 표준 프로필을 사용하거나 Drupal에 익숙한 경우 Minimal을 사용하거나 Drupal 사이트 및 구성의 예가 포함된 데모 프로필을 사용합니다.

이제 drupal 설치에 대한 MariaDB 데이터베이스 세부 정보를 입력하고 저장하고 계속을 클릭합니다. 다른 호스트에서 MariaDB를 사용하는 경우 고급 옵션을 사용하여 MariaDB 서버 호스트 IP 주소를 입력합니다.

그러면 Drupal 설치가 시작됩니다.

다음으로 사이트 이름과 Drupal의 관리자 사용자를 포함하는 Drupal 사이트 구성의 세부 정보를 입력합니다. 완료되면 저장하고 계속을 클릭합니다.

이제 Drupal 설치가 완료되었음을 알리는 페이지가 나타납니다. \축하합니다. Drupal을 설치하셨습니다!.\와 같은 메시지를 볼 수 있습니다.

이제 Drupal 설치가 완료되었지만 여전히 추가 구성을 설정해야 합니다. 이 예에서는 HTTP HOST 헤더 공격으로부터 Drupal 설치를 보호하는 Drupal trusted_host 구성을 설정합니다.

trusted_host 구성을 활성화하려면 Drupal 구성 /var/www/drupal/sites/default/settings.php를 편집해야 합니다.

다음을 실행하여 /var/www/drupal/sites/default/settings.php 파일을 쓰기 가능하게 만드십시오. 그런 다음 텍스트 편집기를 사용하여 파일을 엽니다. 이 데모에서는 nano를 사용합니다.

sudo chmod 644 /var/www/drupal/sites/default/settings.php
sudo nano /var/www/drupal/sites/default/settings.php

Ctrl+w를 눌러 trusted_host의 패턴을 검색합니다. 그런 다음 파일에 다음 구성을 추가하고 Drupal 설치 시 도메인 이름을 변경해야 합니다. 도메인 이름은 Regex 형식이어야 합니다.

$settings['trusted_host_patterns'] = [
  '^hwdomain\.io$',
];

구성을 저장하고 완료되면 종료하십시오. 그런 다음 다음 명령을 사용하여 파일의 권한을 쓰기 불가능으로 다시 변경하십시오.

sudo chmod 444 /var/www/drupal/sites/default/settings.php

마지막으로 웹 브라우저로 돌아가 Drupal 설치 상태 보고서(예: https://hwdomain.io/admin/reports/status)를 방문합니다.

Drupal 설치의 자세한 서버 구성이 표시됩니다. 또한 25개의 Drupal 구성이 모두 성공적으로 확인된 것을 볼 수 있습니다.

페이지를 맨 아래로 스크롤하면 Drupal 설치의 자세한 시스템 구성이 표시됩니다. 다음에서 trusted_host 및 업로드 진행률 설정이 활성화된 것을 볼 수 있습니다.

결론

이 가이드에서는 Ubuntu 22.04 서버에 최신 버전의 Drupal v9를 설치하고 구성했습니다. 또한 Ubuntu 시스템에 LAMP Stack(Linux, Apache, MariaDB 및 PHP)의 기본 설치와 PECL(PHP Extension Community Library) 리포지토리에서 PHP 확장의 기본 설치를 배웠습니다.

이제 Drupal을 설치하고 SSL 인증서와 trusted_host 설정을 사용하여 보호했습니다. 사이트에 대한 테마를 설치하고 일부 추가 Drupal 플러그인을 설치하여 현재 Drupal 설치를 확장할 수 있습니다.