Ubuntu 18.04에 Drupal 설치 방법

Ubuntu 18.04에 Drupal 설치 방법

2022-05-17 last update

28 minutes reading cms mariadb mysql nginx composer ubuntu
Drupal은 전 세계에서 가장 유행하는 오픈소스 CMS 플랫폼 중의 하나다.PHP가 작성한 것으로 소규모 개인 블로그부터 대형 기업, 정치, 정부 사이트까지 다양한 유형의 사이트를 구축할 수 있다.이 자습서에서는 Ubuntu 18.04 기기에 Drupal 8.6을 설치하는 방법을 보여 드리겠습니다.Drupal을 설치하는 방법에는 여러 가지가 있습니다.이 자습서는 Drupal 프로젝트의 composer 템플릿을 사용하여 Drupal 8.6을 설치하는 데 필요한 절차를 설명합니다. 이 템플릿의 이름은 Drupal 프로젝트입니다.우리는 Nginx를 웹 서버로 사용하고 최신 PHP7.2와 MySQL/MariadB를 데이터베이스 서버로 사용할 것입니다.

선결 조건

이 강좌를 계속하기 전에 다음과 같은 선결 조건을 만족하는지 확인하십시오.
  • 공공 서버 IP를 가리키는 도메인 이름이 있습니다.우리는 사용할 것이다example.com.
  • Nginxthese instructions를 다음과 같이 설치했습니다.
  • 도메인에 SSL 인증서를 설치했습니다.다음과 같은 방법으로 무료 Let's Encrypt SSL 인증서these instructions를 설치할 수 있습니다.
  • 네가 시작하기 전에

    패키지 인덱스 및 시스템 패키지를 최신 버전으로 업데이트:
    sudo apt update && sudo apt upgrade

    1. MySQL 데이터베이스 만들기

    (있는 경우)MySQL
    또는 MariaDB
    서버에 설치하면 이 단계를 건너뛸 수 있습니다. 만약 그렇지 않다면,
    sudo apt install mysql-server
    를 입력하여 Ubuntu의 기본 저장소에서 MySQL 5.7 패키지를 설치할 수 있습니다. 새 MySQL 설치에 대해서는 mysql_secure_installation 명령을 실행하여 MySQL 서버의 안전성을 높이는 것을 권장합니다.현재 우리는 MySQL 케이스에 로그인하여 새로운 데이터베이스와 사용자 계정을 만들고 사용자에게 적당한 권한을 부여해야 한다.MySQL 셸에 로그인하려면 다음 명령을 입력하고 프롬프트가 나타날 때 암호를 입력합니다.
    mysql -u root -p
    부터 create a database
    이름 지정drupal, 사용자 이름drupaluser 및 받는 사람grant the necessary permissions to the user
    다음 명령 실행:
    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';

    2. PHP 설치

    PHP 7.2
    기본값PHP version
    Ubuntu에서 Drupal 8.6은 18.04를 완전히 지원하고 추천합니다.Nginx를 웹 서버로 사용하기 때문에 PHP-FPM도 설치합니다.필요한 모든 PHP 모듈을 설치하려면 다음 명령을 실행하십시오.
    sudo apt install php7.2-cli php7.2-fpm php7.2-mysql php7.2-json php7.2-opcache php7.2-mbstring php7.2-xml php7.2-gd php7.2-curl
    설치 프로세스가 완료되면 PHP-FPM 서비스가 자동으로 시작되며 인쇄 서비스 상태를 통해 확인할 수 있습니다.
    systemctl status php7.2-fpm
    출력은 FPM 서비스가 활성 상태이고 실행 중임을 나타냅니다.
    ● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager
       Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
       Active: active (running) since Sat 2018-05-19 19:54:13 UTC; 9h ago
         Docs: man:php-fpm7.2(8)
     Main PID: 17781 (php-fpm7.2)
       Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
        Tasks: 3 (limit: 507)
       CGroup: /system.slice/php7.2-fpm.service
               ├─17781 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf)
               ├─17796 php-fpm: pool www
               └─17797 php-fpm: pool www
    

    3. Composer 설치

    Composer는 PHP의 의존항 관리자입니다. Drupal 템플릿을 다운로드하고 필요한 Drupal 구성 요소를 설치합니다.~ install composer
    curl 를 사용하여 전 세계적으로 Composer 설치 프로그램 다운로드
    그리고 파일을 /usr/local/bin 디렉터리로 이동:
    curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
    인쇄composer 버전을 통해 설치 검증:
    composer --version
    출력은 이렇습니다.
    Composer version 1.6.5 2018-05-04 11:44:59
    

    4. Drupal 설치

    현재 우리는 composer를 설치했습니다. 우리는 계속 composertemplate를 사용하여 새로운 Drupal 프로젝트를 창설할 수 있습니다./var/www/my_drupal 디렉터리에서:
    sudo composer create-project drupal-composer/drupal-project:8.x-dev /var/www/my_drupal --stability dev --no-interaction
    위의 명령은 템플릿을 다운로드하고 필요한 php 패키지를 가져오며 프로젝트를 설치하기 위해 스크립트를 실행합니다.이 과정은 몇 분 걸릴 수 있습니다. 만약 성공한다면 출력의 끝은 다음과 같습니다. (adsbyGoogle=window.adsbyGoogle | | [])추진({});
    Create a sites/default/settings.php file with chmod 0666
    Create a sites/default/files directory with chmod 0777
    
    다음 단계는 Drush를 사용하여 Drupal을 설치하는 것입니다.다음 명령에서 1단계에서 만든 MySQL 데이터베이스와 사용자 정보를 전달합니다.
    cd /var/www/my_drupalsudo vendor/bin/drush site-install --db-url=mysql://drupaluser:[email protected]/drupal
    설치 프로그램은 다음 메시지를 알려 줍니다. enter 키를 누르면 계속됩니다.
    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. Consider using the --notify global option.
    [success] Installation complete.  User name: admin  User password: XRkC9Q5WN9
    
    마지막으로 웹 서버가 사이트의 파일과 디렉터리에 완전히 접근할 수 있도록 정확한 권한을 설정해야 한다.Nginx와 PHP는 모두 www-data 사용자와 www-data 그룹으로 실행되기 때문에 다음과 같은 명령을 보내야 합니다.
    sudo chown -R www-data: /var/www/my_drupal

    5. Nginx 구성

    지금까지 시스템에 SSL 인증서가 있는 Nginx가 설치되어 있을 것입니다. 이 강좌의 선결 조항을 검사하지 않으면 검사하십시오.새 Drupal 프로젝트에 대한 새 서버 블록을 만들기 위해 Nginxrecipe를 사용합니다.
    Nginx 공식 웹 사이트에서 다운로드하십시오.텍스트 편집기를 열고 다음 파일을 만듭니다:
    sudo nano /etc/nginx/sites-available/example.com
    /etc/nginx/sites available/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/php7.2-fpm.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;
        }
    
    }
    
    교체 예시를 잊지 마세요.com은 Drupal 도메인에 연결하고 SSL 인증서 파일의 올바른 경로를 설정합니다.모두HTTP requests will be redirected to HTTPS
    . 이 구성에 사용된 코드 세그먼트는 this guide에 생성됩니다.
    . sites-enabled 디렉토리에 대한 기호 링크를 만들어 서버 블록을 활성화합니다.
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    Nginx 서비스를 다시 시작하기 전에 구문 오류가 없는지 테스트합니다.
    sudo nginx -t
    오류가 없으면 출력은 다음과 같습니다.
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
    마지막restart the Nginx service
    sudo systemctl restart nginx

    6. 설치 테스트

    를 입력하여 브라우저를 열고 도메인을 입력하고 설치가 성공했다고 가정하면 다음과 같은 내용의 화면이 나타납니다. 관리자로 로그인하여 새로운 Drupal 설치를 맞춤형으로 시작할 수 있습니다.

    7. Drupal 모듈과 테마 설치

    현재 Drupal 프로젝트가 설치되어 있습니다. 모듈과 테마를 설치해야 합니다.Drupal 모듈과 테마는 맞춤형composer 저장소에 위탁되어 있으며 Drupal 프로젝트는 기존의 설정을 제공합니다.모듈이나 테마를 설치하려면 cd를 프로젝트 디렉터리로 이동하고 composer require drupal/module_or_theme_name를 입력하십시오.예를 들어, 설치하고 싶은 경우Pathauto
    모듈, 다음 명령을 실행해야 합니다.
    cd /var/www/my_drupalsudo -u www-data composer require drupal/pathauto
    사전 종료 sudo -u www-data
    사용자 www-data
    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는 모든 패키지 의존 항목을 설치했습니다.

    8. Drupal core 업데이트

    업그레이드하기 전에 파일과 데이터베이스를 백업하는 것이 좋습니다.사용 가능Backup and Migrate
    모듈 또는 데이터베이스와 파일을 수동으로 백업합니다.설치 파일을 백업하려면 다음 명령을 사용하십시오 rsync command
    , 물론 설치 디렉터리의 정확한 경로를 사용해야 합니다.
    sudo rsync -a /var/www/my_drupal/  /var/www/my_drupal_$(date +%F)
    데이터베이스를 백업하려면 표준 mysqldump command을 사용할 수 있습니다.
    mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql
    또는 drush sql-dump:
    cd /var/www/my_drupalvendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql
    현재 백업을 만들었습니다. 다음 명령을 실행하여 모든 Drupal 핵심 파일을 계속 업데이트할 수 있습니다.
    sudo -u www-data composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies

    결론

    축하합니다. composer를 사용하여 Drupal 8을 성공적으로 설치했고 모듈과 테마를 설치하는 방법을 배웠습니다.너는 지금 너의 사이트를 맞춤형으로 제작하기 시작할 수 있다.전화 번호Drupal 8 User Guide
    Drupal 설치를 관리하는 방법에 대한 이해의 시작입니다.방문해야 합니다Drupal Composer.
    Github의 템플릿 항목입니다.