OpenBSD에서 Composer가 포함된 Drupal 9

요약



SymfonyPHP 웹 프레임워크 중 하나이며 내가 가장 좋아하는 프레임워크는 명확하게 분류되고 기능적이며 보안을 염두에 두고 설계되었으며 MakeBundle과 같은 유용한 도우미와 함께 제공되며 훌륭한 공식documentation도 제공합니다. . Drupal 컨텐츠 관리 시스템 중 하나인 CMS는 Symfony를 기반으로 합니다.
웹 서비스를 구축하려고 할 때 일반적으로 좋은 후보입니다. Symfony는 유연한 데이터 구조와 사용자 인터페이스를 생성할 수 있는 원시적인 가능성을 제공합니다. 반대로 Drupal은 인증, 사용자 역할 및 기능 필드를 포함하는 서비스를 구축하기 위한 강력한 구성 요소를 제공합니다.
이번 포스팅은 제가 체험판으로 최신 안정버전인 Drupal 9 서버를 구축한 방법을 소개합니다.
게다가, Drupal Association"Why We Use Symfony"에 대해 썼습니다.

환경


  • OS: OpenBSD 6.9
  • 앱: PHP 7.4
  • 패키지 관리자: Composer 2.0
  • 데이터베이스: MariaDB 10.5
  • CMS: 드루팔 9

  • 지도 시간


    데이터 베이스



    데이터베이스 서버에 연결합니다.

    $ mysql -u root -p
    

    데이터베이스와 사용자를 만듭니다.

    CREATE DATABASE <database> \
        CHARACTER SET utf8mb4 \
        COLLATE utf8mb4_unicode_ci;
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES \
        ON <database>.* TO \
        <dbuser>@'localhost' \
        IDENTIFIED BY '<dbpassword>';
    FLUSH PRIVILEGES;
    


    환경 준비



    Ports 컬렉션에서 PHP를 가져옵니다.

    $ doas pkg_add php
    $ # choose php-7.4
    

    또한 PHP 확장이 필요합니다.

    $ doas pkg_add php-curl php-gd php-intl php-zip php-mysqli php-pdo_mysql # + php-[...] if necessary
    $ # choose those of php-7.4
    

    그런 다음 필요한 경우 다른 패키지를 설치하십시오.

    $ # install other packages if necessary
    $ doas pkg_add unzip composer git
    

    작곡가 작업



    먼저 작곡가가 대상 버전인 php 7.4에 바인딩되어 있는지 확인합니다.

    $ composer -vvv about
    Failed to initialize global composer: Composer could not find the config file: /.../.composer/composer.json
    To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
    Running 2.0.12 (2021-04-01 10:14:59) with PHP 7.4.19 on OpenBSD / 6.9
    Failed to initialize global composer: Composer could not find the config file: /.../.composer/composer.json
    To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
    Composer - Dependency Manager for PHP
    Composer is a dependency manager tracking local dependencies of your projects and libraries.
    See https://getcomposer.org/ for more information.
    

    확인. 출력은 "OpenBSD/6.9에서 PHP 7.4.19로 2.0.12(2021-04-01 10:14:59) 실행 중"입니다.
    그런 다음 composer를 실행하여 Drupal 프로젝트를 생성합니다.

    $ composer create-project drupal/recommended-project <drupal-dir>
    

    게다가 composer가 php-7.4에 바인딩되지 않은 경우 composer.phar를 사용할 수 있습니다.

    $ # alternatively
    $ #php-7.4 /usr/local/libexec/composer.phar create-project drupal/recommended-project <drupal-dir>
    

    결과는 다음과 같습니다(일부 생략).

    Creating a "drupal/recommended-project" project at "./drupal"
    Installing drupal/recommended-project (9.1.8)
      - Downloading drupal/recommended-project (9.1.8)
      - Installing drupal/recommended-project (9.1.8): Extracting archive
    Created project in /var/www/.../<drupal-dir>
    Installing dependencies from lock file (including require-dev)
    Verifying lock file contents can be installed on current platform.
    Package operations: 61 installs, 0 updates, 0 removals
      - Downloading composer/installers (v1.11.0)
      - Downloading symfony/...
      ...
      - Downloading pear/archive_tar (1.4.13)
      - Downloading drupal/core (9.1.8)
      - Installing composer/installers (v1.11.0): Extracting archive
      - Installing drupal/core-composer-scaffold (9.1.8): Extracting archive
      - Installing drupal/core-project-message (9.1.8): Extracting archive
      - Installing typo3/phar-stream-wrapper (v3.1.6): Extracting archive
      - Installing symfony/polyfill-mbstring (v1.20.0): Extracting archive
      - Installing symfony/polyfill-ctype (v1.20.0): Extracting archive
      - Installing twig/twig (v2.14.1): Extracting archive
      ...
      - Installing psr/http-message (1.0.1): Extracting archive
      ...
      - Installing doctrine/annotations (1.11.1): Extracting archive
      - Installing doctrine/reflection (1.2.2): Extracting archive
      - Installing composer/semver (3.2.2): Extracting archive
      - Installing asm89/stack-cors (1.3.0): Extracting archive
      - Installing drupal/core (9.1.8): Extracting archive
      - Installing drupal/core-recommended (9.1.8)
    Package doctrine/reflection is abandoned, you should avoid using it. Use roave/better-reflection instead.
    Generating autoload files
    38 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
    Scaffolding files for drupal/core:
      - Copy [project-root]/.editorconfig from assets/scaffold/files/editorconfig
      - Copy [project-root]/.gitattributes from assets/scaffold/files/gitattributes
      - Copy [web-root]/.csslintrc from assets/scaffold/files/csslintrc
      - Copy [web-root]/.eslintignore from assets/scaffold/files/eslintignore
      - Copy [web-root]/.eslintrc.json from assets/scaffold/files/eslintrc.json
      - Copy [web-root]/.ht.router.php from assets/scaffold/files/ht.router.php
      - Copy [web-root]/.htaccess from assets/scaffold/files/htaccess
      - Copy [web-root]/example.gitignore from assets/scaffold/files/example.gitignore
      - Copy [web-root]/index.php from assets/scaffold/files/index.php
      - Copy [web-root]/INSTALL.txt from assets/scaffold/files/drupal.INSTALL.txt
      - Copy [web-root]/README.txt from assets/scaffold/files/drupal.README.txt
      - Copy [web-root]/robots.txt from assets/scaffold/files/robots.txt
      - Copy [web-root]/update.php from assets/scaffold/files/update.php
      - Copy [web-root]/web.config from assets/scaffold/files/web.config
      - Copy [web-root]/sites/README.txt from assets/scaffold/files/sites.README.txt
      - Copy [web-root]/sites/development.services.yml from assets/scaffold/files/development.services.yml
      - Copy [web-root]/sites/example.settings.local.php from assets/scaffold/files/example.settings.local.php
      - Copy [web-root]/sites/example.sites.php from assets/scaffold/files/example.sites.php
      - Copy [web-root]/sites/default/default.services.yml from assets/scaffold/files/default.services.yml
      - Copy [web-root]/sites/default/default.settings.php from assets/scaffold/files/default.settings.php
      - Copy [web-root]/modules/README.txt from assets/scaffold/files/modules.README.txt
      - Copy [web-root]/profiles/README.txt from assets/scaffold/files/profiles.README.txt
      - Copy [web-root]/themes/README.txt from assets/scaffold/files/themes.README.txt
      * Homepage: https://www.drupal.org/project/drupal
      * Support:
        * docs: https://www.drupal.org/docs/user_guide/en/index.html
        * chat: https://www.drupal.org/node/314178
    
      Congratulations, you’ve installed the Drupal codebase  
      from the drupal/recommended-project template!          
    
    
    Next steps:
      * Install the site: https://www.drupal.org/docs/8/install
      * Read the user guide: https://www.drupal.org/docs/user_guide/en/index.html
      * Get support: https://www.drupal.org/support
      * Get involved with the Drupal community:
          https://www.drupal.org/getting-involved
      * Remove the plugin that prints this message:
          composer remove drupal/core-project-message
      * Homepage: https://www.drupal.org/project/drupal
      * Support:
        * docs: https://www.drupal.org/docs/user_guide/en/index.html
        * chat: https://www.drupal.org/node/314178
    

    디렉터리 및 권한 추가 구성



    명령줄에서 조금 더 작업합니다.

    $ cd <drupal-dir>
    
    $ doas chown -R www: ./web/{sites/default, modules, themes}
    
    $ mkdir ./config
    $ doas chown -R www: ./config
    

    PHP-FPM


    php74_fpm 데몬이 실행 중입니까? 그렇지 않은 경우 rcctl enable/start php74_fpm를 사용하십시오. 내 과거 게시물:





    편물



    흐름을 활성화하도록 웹 서버를 설정합니다.

    Client --(request)--> Web (httpd) --> Gateway (PHP-FPM) --> App = Drupal
    


    OpenBSDhttpd의 구성 파일은 /etc/httpd.conf입니다.

    $ doas nvim /etc/httpd.conf
    


    아래 정의를 추가합니다(필요에 따라 추가).

    server "<fqdn>" {
            listen on $ext_addr tls port 443
            tls {
                    certificate     "/etc/ssl/<fqdn>.pem"
                    key             "/etc/ssl/private/<fqdn>.key"
            }
            log {
                    access  "<fqdn>-access.log"
                    error   "<fqdn>-error.log"
            }
    
            root "/<drupal-dir>/web" # (with chroot)
            directory index index.php
    
            location "/*.php" { 
                    fastcgi socket "/run/php-fpm.sock"
            }
            location "/*.php[/?]*" { 
                    fastcgi socket "/run/php-fpm.sock"
            } 
            location match "/[^\.]+/?$" {
                    fastcgi socket "/run/php-fpm.sock"
                    request rewrite "/index.php/%1"
            }
    }
    

    root/web로 끝나야 합니다.
    설정을 로드합니다.

    $ doas rcctl restart httpd
    


    웹 설치 프로그램



    웹 브라우저를 사용하여 https://에 연결하면 https:///core/install.php로 리디렉션됩니다.
    아래와 같이 메시지를 따르십시오.

    언어





    설치 프로필





    데이터베이스 구성






    사이트 구성







    완전한





    그 이후로 사이트를 관리하기 위해 시도했습니다. Drupal 9과 잘 어울린다고 생각합니다. 따라서 지금까지는 너무 좋습니다🙂

    좋은 웹페이지 즐겨찾기