SW/리눅스

CentOS 7 : Drupal 설치 방법, 예제, 명령어

얇은생각 2021. 7. 4. 07:30
반응형

Drupal은 전 세계 최고의 오픈 소스 CMS 플랫폼 중 하나입니다. 유연하고 확장 가능하며 소규모 개인 블로그에서 대기업, 정치 및 정부 사이트에 이르기까지 다양한 유형의 웹 사이트를 구축하는 데 사용할 수 있습니다.

이 튜토리얼에서는 CentOS 7에 Drupal 8.6을 설치하는 방법을 설명합니다. 

Drupal을 설치하는 방법에는 여러 가지가 있습니다. 이 가이드에서는 drupal-project라는 Drupal 프로젝트 용 작성기 템플릿을 사용하여 Drupal을 설치하는 데 필요한 단계를 다룹니다.

Nginx를 웹 서버로, 최신 PHP 7.2와 MySQL / MariaDB를 데이터베이스 서버로 사용할 것입니다.

 

 

 

전제 조건

설치를 시작하기 전에 다음 전제 조건을 충족하는지 확인하십시오.

공용 서버 IP를 가리키는 도메인 이름이 있어야합니다. example.com을 사용하겠습니다.

Nginx가 설치되어 있어야합니다.

도메인에 SSL 인증서가 설치되어 있습니다. 다음 안내에 따라 무료 Let ’s Encrypt SSL 인증서를 설치할 수 있습니다.

sudo 권한이있는 사용자로 로그인했습니다.

 

 

 

MySQL 데이터베이스 생성

첫 번째 단계는 새 데이터베이스 및 사용자 계정을 만들고 사용자에게 적절한 권한을 부여하는 것입니다.

MySQL 또는 MariaDB가 서버에 이미 설치되어있는 경우이 단계를 건너 뛸 수 있습니다. 그렇지 않은 경우 다음을 입력하여 CentOS의 기본 저장소에서 MariaDB 5.5 서버 패키지를 설치할 수 있습니다.

sudo yum install mariadb-server

 

 

MariaDB / MySQL을 새로 설치 한 경우 mysql_secure_installation 명령을 실행하여 데이터베이스 서버의 보안을 향상시키는 것이 좋습니다.

다음 명령을 입력하여 MySQL 셸에 로그인하고 메시지가 나타나면 암호를 입력합니다.

mysql -u root -p

 

 

drupal이라는 데이터베이스를 만들고 drupaluser라는 사용자를 만들고 사용자에게 필요한 권한을 부여하려면 다음 명령을 실행합니다.

CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal.* TO 'drupaluser'@'localhost' IDENTIFIED BY 'change-with-strong-password';

 

 

 

PHP 설치

CentOS 7에는 오래되어 더 이상 지원되지 않는 PHP 버전 5.4가 포함되어 있습니다. Drupal에 권장되는 PHP 버전은 PHP 7.2입니다.

CentOS 7에 PHP 7.2를 설치하려면 먼저 EPEL 및 Remi 저장소를 활성화해야합니다.

sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php72

 

 

저장소가 PHP 7.2 및 모든 필수 PHP 확장을 설치하도록 활성화되면 다음 명령을 실행합니다.

sudo yum install php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl git

 

 

Nginx를 웹 서버로 사용할 것이기 때문에 PHP FPM을 설치했습니다.

기본적으로 PHP FPM은 포트 9000에서 사용자 아파치로 실행됩니다. 사용자를 nginx로 변경하고 TCP 소켓에서 Unix 소켓으로 전환합니다. 그렇게하려면 /etc/php-fpm.d/www.conf 파일을 열고 노란색으로 강조 표시된 줄을 편집합니다.

# /etc/php-fpm.d/www.conf

...
user = nginx
...
group = nginx
...
listen = /run/php-fpm/www.sock
...
listen.owner = nginx
listen.group = nginx

 

 

다음 chown 명령을 사용하여 / var / lib / php 디렉토리에 올바른 소유권이 있는지 확인하십시오.

sudo chown -R root:nginx /var/lib/php

 

 

마지막으로 PHP FPM 서비스를 활성화하고 시작합니다.

sudo systemctl enable php-fpm
sudo systemctl start php-fpm

 

 

 

Composer 설치

Composer는 PHP 용 종속성 관리자입니다. Drupal 템플릿을 다운로드하고 composer와 함께 필요한 모든 Drupal 구성 요소를 설치합니다.

다음 명령은 curl을 사용하여 Composer 설치 프로그램을 다운로드하고 파일을 / usr / local / bin 디렉토리로 이동하여 전역 적으로 composer를 설치합니다.

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

 

 

버전을 인쇄하는 다음 명령을 실행하여 설치를 확인하십시오.

출력은 다음과 같아야합니다.

composer --version

# Composer version 1.8.4 2019-02-11 10:52:10

 

 

 

Drupal 설치

이제 composer가 설치되었으므로 / var / www / my_drupal 디렉토리에있는 Drupal 템플릿을 사용하여 새 Drupal 프로젝트를 만듭니다.

sudo /usr/local/bin/composer create-project drupal-composer/drupal-project:8.x-dev /var/www/my_drupal --stability dev --no-interaction

# Create a sites/default/settings.php file with chmod 0666
# Create a sites/default/files directory with chmod 0777

 

 

위의 명령은 템플릿을 다운로드하고 필요한 모든 php 패키지를 가져 와서 설치를 위해 프로젝트를 준비하는 데 필요한 스크립트를 실행합니다. 프로세스는 몇 분 정도 걸릴 수 있으며 성공하면 출력의 끝은 다음과 같습니다.

다음 단계는 Drush를 사용하여 Drupal을 설치하는 것입니다. 아래 명령에서는 첫 번째 섹션에서 생성 한 MySQL 데이터베이스와 사용자 정보를 전달합니다.

설치 프로그램이 다음 메시지를 표시합니다. 계속하려면 Enter를 누르십시오.

설치가 완료되면 스크립트가 관리 사용자 이름과 비밀번호를 인쇄합니다. 출력은 다음과 유사해야합니다.

cd /var/www/my_drupal
sudo vendor/bin/drush site-install --db-url=mysql://drupaluser:change-with-strong-password@localhost/drupal

# You are about to DROP all tables in your 'drupal' database. Do you want to continue? (yes/no) [yes]:

# [notice] Starting Drupal installation. This takes a while.
# [success] Installation complete.  User name: admin  User password: frxka2Db5v

 

 

마지막으로 웹 서버가 사이트의 파일 및 디렉토리에 대한 전체 액세스 권한을 가질 수 있도록 올바른 권한을 설정합니다.

sudo chown -R nginx: /var/www/my_drupal

 

 

 

Nginx 구성

지금까지이 튜토리얼의 전제 조건을 확인하지 않으면 시스템에 SSL 인증서가있는 Nginx가 이미 설치되어있을 것입니다.

새로운 Drupal 프로젝트를위한 새로운 서버 블록을 생성하기 위해 공식 Nginx 사이트의 Nginx 레시피를 사용할 것입니다.

텍스트 편집기를 열고 다음 파일을 만듭니다.

# /etc/nginx/conf.d/example.com

# Redirect HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# Redirect WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    root /var/www/my_drupal/web;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    # log files
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

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

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

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

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

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    # 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 /index.php?$query_string;
    }

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

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }


    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
        # Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php-fpm/www.sock;
    }

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

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

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

}

 

 

example.com을 Drupal 도메인으로 바꾸고 SSL 인증서 파일의 올바른 경로를 설정하는 것을 잊지 마십시오. 모든 HTTP 요청은 HTTPS로 리디렉션됩니다. 이 구성에 사용 된 스 니펫은이 가이드에서 생성됩니다.

Nginx 서비스를 다시 시작하기 전에 구문 오류가 없는지 테스트하십시오.

sudo nginx -t

 

 

다음을 입력하여 변경 사항을 적용하려면 Nginx 서비스를 다시 시작합니다.

sudo systemctl restart nginx

 

 

 

설치 테스트

브라우저를 열고 도메인을 입력하고 설치가 성공적이라고 가정하면 다음과 유사한 화면이 나타납니다.

CentOS 7 : Drupal 설치 방법, 예제, 명령어

 

 

관리자로 로그인하여 새 Drupal 설치 사용자 지정을 시작할 수 있습니다.

 

 

 

Drupal 모듈 및 테마 설치 

이제 Drupal 프로젝트를 설치 했으므로 몇 가지 모듈과 테마를 설치해야합니다. Drupal 모듈과 테마는 사용자 지정 작곡가 저장소에서 호스팅되며, drupal-project가 즉시 구성 해줍니다.

모듈이나 테마를 설치하려면 프로젝트 디렉토리로 cd하고 composer require drupal / module_or_theme_name을 입력하기 만하면됩니다. 예를 들어 Pathauto 모듈을 설치하려면 다음 명령을 실행해야합니다.

cd /var/www/my_drupal
sudo -u nginx /usr/local/bin/composer require drupal/pathauto

# Using version ^1.3 for drupal/pathauto
# ./composer.json has been updated
# > DrupalProject\composer\ScriptHandler::checkComposerVersion
# Loading composer repositories with package information
# Updating dependencies (including require-dev)
# Package operations: 3 installs, 0 updates, 0 removals
#   - Installing drupal/token (1.5.0): Downloading (100%) 
#   - Installing drupal/ctools (3.2.0): Downloading (100%)
#   - Installing drupal/pathauto (1.3.0): Downloading (100%)
# Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
# Writing lock file
# Generating autoload files
# > DrupalProject\composer\ScriptHandler::createRequiredFiles

 

 

위의 출력에서 ​​볼 수 있듯이 composer는 모든 패키지 종속성을 설치합니다.

 

 

 

Drupal Core 업데이트

업그레이드하기 전에 항상 파일과 데이터베이스를 백업하는 것이 좋습니다. 백업 및 마이그레이션 모듈을 사용하거나 데이터베이스 및 파일을 수동으로 백업 할 수 있습니다.

설치 파일을 백업하려면 다음 rsync 명령을 사용할 수 있습니다. 물론 설치 디렉토리에 대한 올바른 경로를 사용해야합니다.

sudo rsync -a /var/www/my_drupal/  /var/www/my_drupal_$(date +%F)

 

 

데이터베이스를 백업하려면 표준 mysqldump 명령을 사용할 수 있습니다.

mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql

 

 

또는 drush sql-dump :

cd /var/www/my_drupal
vendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql

 

 

이제 백업을 만들었으므로 다음 명령을 실행하여 모든 Drupal 코어 파일을 계속하고 업데이트 할 수 있습니다.

sudo -u nginx /usr/local/bin/composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies

 

반응형