Composer를 사용하여 WordPress를 설치하는 방법: 단계별 설치 가이드

게시 됨: 2023-02-28

소개: Composer가 WordPress를 기반으로 하는 이유는 무엇입니까?

다른 애플리케이션과 마찬가지로 WordPress 사이트는 코드 및 해당 종속성에 대해 반복 가능한 빌드 및 커밋 가능한 업데이트를 보장할 수 있을 때 가장 안전합니다. 인프라는 사용할 PHP 및 MariaDB 버전을 지정하는 일련의 구성 파일을 통해 커밋됩니다. 이것은 새로운 기능을 개발할 때 프로젝트를 재현 가능한 상태로 유지하는 가장 좋은 방법입니다.

워드프레스 코어와 테마 및 플러그인은 이상적으로는 동일한 방식으로 작동해야 하지만 그렇지 않은 경우가 많습니다. WordPress 관리 패널은 이러한 구성 요소가 오래되었거나 런타임에 구성을 변경하기 위해 파일 시스템에 대한 쓰기 액세스가 필요할 때 이러한 모든 구성 요소를 업데이트할 수 있는 원클릭 버튼을 제공합니다. 그러나 이러한 방식으로 개발하면 그에 따른 결과가 따릅니다.

첫째, 런타임에 항상 파일 시스템에 대한 쓰기 액세스 권한이 있는 것은 아닙니다. 따라서 업데이트 및 구성 변경에 대한 이 메커니즘에 따라 많은 호스팅 솔루션에서 완전히 제한됩니다. 반면에 현재 호스팅하고 있는 런타임에 쓰기 액세스 권한이 있는 경우 새 모듈이나 테마를 설치하면 사소한 보안 위험이 발생합니다(소스를 알 수 없는 경우).

그러나 아마도 가장 중요한 것은 런타임에 WordPress를 업데이트하면 저장소의 코드에서 사이트의 상태를 분리한다는 것입니다. 프로젝트의 로컬 복제본에서 새 기능을 작업하는 동료는 라이브 사이트 뒤에 정식 버전이 될 수 있습니다. 이 워크플로의 결과 알 수 없는(그리고 테스트되지 않은) 결과가 있는 버그가 발생할 수 있습니다.

Composer 사용의 이점

위의 사실을 감안할 때 Composer로 WordPress 사이트를 관리하면 분명한 이점이 있습니다. 첫째, 커밋된 파일(composer.lock)에서 종속성을 명시적으로 정의할 수 있습니다. 이 잠금 파일은 종속성이 설치될 때 종속성 제약 조건(composer.json)의 보다 설명적인 목록에서 생성되며 프로젝트 커밋 기록의 일부가 됩니다. 그때부터 모든 새 분기는 동일한 종속성 컬렉션에서 정확한 커밋 해시까지 작동합니다. 이 시점에서 프로젝트에 기여하는 사람이나 프로젝트가 배포되는 위치는 중요하지 않습니다. 모든 사람에게 동일한 코드가 적용됩니다.

Composer는 또한 리포지토리에 많은 외부 코드를 커밋할 필요가 없습니다. WordPress의 경우 Composer를 사용하지 않으면 일반적으로 테마에 대한 모든 코드, 심지어 WordPress 코어 및 플러그인 자체에 대한 모든 코드를 자신의 프로젝트에 커밋해야 합니다. 리포지토리를 불필요하게 크고 복제 속도를 느리게 만드는 것 외에도 이러한 복사본을 업데이트하면 아무도 처리할 필요가 없는 저글링 작업이 됩니다.

Composer를 사용하면 프로젝트에 종속성을 추가 및 업데이트한 다음 각각의 새 분기가 동일한 업데이트를 받도록 정확한 버전을 잠글 수 있습니다. 런타임에 배포된 사이트에서 업데이트를 수행했다면 먼저 git pull을 기억해야 합니다.

Composer로 WordPress 코어 설치

같은 방식으로 Composer를 사용하면 WordPress를 종속 항목으로 추가할 수 있으므로 모든 WordPress를 리포지토리에 커밋할 필요가 없습니다. 구성 및 프로젝트 구조에 대해 얼마나 많은 가정을 하고 싶은지에 따라 여러 가지 방법(Bedrock과 같은)이 있습니다. 가장 간단한 방법은 John Bloch Composer 포크를 사용하여 WordPress용 빌드에 설치 프로그램을 추가하는 것입니다.

 $ 작성기에는 johnpbloch/wordpress-core-installer가 필요합니다.
$ 작성기에는 johnpbloch/wordpress-core가 필요합니다.

위 명령은 composer.json 파일을 생성하고 WordPress 디렉토리에 WordPress core를 설치합니다. composer.json은 다음과 같습니다.

 {
    "필요하다": {
        "johnpbloch/wordpress-core-installer": "^2.0",
        "johnpbloch/wordpress-core": "^6.1"
    },
    "구성": {
        "허용 플러그인": {
            "johnpbloch/wordpress-core-installer": 참
        }
    }
}

WordPress 폴더에 WordPress 코어가 있습니다. 그러나 웹 서버가 루트 디렉토리를 가리킬 수 있도록 WordPress 디렉토리 외부에 index.php를 복사해야 합니다.

Composer로 WordPress를 완전히 관리 하려면 wp-content에 기본 디렉토리인 WordPress/wp-content 대신 다른 디렉토리를 사용해야 합니다.

wp-content라는 프로젝트의 루트에 새 디렉토리를 만들어 봅시다.

일단 WordPress 폴더에서 index.php를 복사하십시오. WordPress 디렉토리가 있는 wp-blog-header.php 파일의 위치를 ​​변경해야 합니다.

변경 후 index.php는 다음과 같습니다.

 <?php 
정의('WP_USE_THEMES', true);
require( dirname( __FILE__ ) . '/wordpress/wp-blog-header.php' );

다음 내용으로 루트 디렉토리에 .htaccess 파일을 생성해야 합니다.

 # 워드프레스 시작
<IfModule mod_rewrite.c>
RewriteEngine 켜기
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# 워드프레스 종료

계속해서 샘플 wp-config.php 파일을 복사하고 다음 코드를 추가해 보겠습니다.

 $도메인 = 'mydomain.com;
define('WP_SITEURL', "https://{$domain}/wordpress");
정의('WP_HOME',"https://{$domain}");
$httpHost = isset($_SERVER['HTTPS_HOST']) ? $_SERVER['HTTPS_HOST'] : $도메인;
정의( 'WP_CONTENT_DIR', dirname( __FILE__ ) . '/wp-content' );
정의( 'WP_CONTENT_URL', 'https://' . $httpHost . '/wp-content' );
/** WordPress 디렉토리의 절대 경로입니다. */
if ( !define('ABSPATH') ) {
    define('ABSPATH', dirname(__FILE__) . '/wordpress');
}

WordPress 코어가 /WordPress에 있으므로 ABSPATH에 WordPress를 추가했습니다.
wp-config.php 파일에는 민감한 데이터가 포함되어 있기 때문에; .gitignore 파일을 생성하여 저장소에 커밋하지 않습니다.

 /wp-config.php
/워드프레스/
/wp-콘텐츠/
/공급업체/

WordPress, wp-content 및 vendor 디렉토리도 무시해야 .gitignore 파일에도 추가할 수 있습니다.

참고: wp-content에 대해 다른 명명 규칙을 추가하려는 경우 wp-content 디렉토리를 변경해야 합니다.

프로젝트 루트 디렉토리는 다음과 같아야 합니다.

 .git
.gitignore
작곡가.잠금
작곡가.json
공급업체
wp-config.php
index.php
워드프레스

wp-config.php에서 데이터베이스를 생성하고 세부 정보를 변경해야 합니다. WordPress 웹사이트는 "mydomain.com"에서 호출되며 WordPress 백엔드는 mydomain.com/wordpress/wp-admin에서 액세스할 수 있습니다.

WordPress 저장소에서 플러그인 및 테마 추가

기본적으로 Composer는 packagist.org 저장소만 확인합니다. 그러나 WordPress 플러그인 및 테마는 포함되어 있지 않습니다.

WordPress 플러그인 및 테마를 가져올 수 있으려면 wpackagist.org 저장소에서 Composer를 가리켜야 합니다. 이 구성 청크를 composer.json 파일에 추가하면 됩니다.

 "저장소": [
  {
    "유형": "작곡가",
    "url": "https://wpackagist.org",
    "오직": [
      "wpackagist-플러그인/*",
      "wpackagist-테마/*"
    ]
  }
],

우리는 또한 Composer에게 플러그인과 테마를 넣을 위치를 알려줘야 합니다. 여기에는 composer.json에 구성을 조금 더 추가하는 작업이 포함됩니다.

 "추가의": {
        "설치 프로그램 경로": {
            "wp-content/mu-plugins/{$name}/": [
                "유형:워드프레스-muplugin"
            ],
           "wp-content/plugins/{$name}/": [
                "유형:워드프레스-플러그인"
            ],
           "wp-content/themes/{$name}/": [
                "유형:워드프레스-테마"
            ]
        }
    }

이제 WordPress를 설치할 때와 마찬가지로 composer require 명령을 사용하여 공식 리포지토리에서 플러그인이나 테마를 설치할 수 있습니다.

# 플러그인을 설치하려면 다음 형식을 사용하십시오.

 작성기는 "wpackagist-plugin/:"이 필요합니다.

# 테마를 설치하려면 다음 형식을 사용하십시오.

 작성기는 "wpackagist-theme/:"가 필요합니다.

버전 제약 조건은 복잡하지만 기억해야 할 가장 간단한 형식은 * 와일드카드를 사용하는 것입니다. 버전 2.x를 사용하여 WP Migrate 플러그인의 무료 버전을 설치하려면 다음을 실행합니다.

composer require "wpackagist-plugin/wp-migrate-db:2.*"

항상 업데이트를 통해 최신 버전을 얻으려면 *를 버전 제약 조건으로 사용할 수 있습니다.

composer require "wpackagist-plugin/wp-migrate-db:*"

이와 같은 명령을 처음 실행하면 "코드를 실행하기 위해 "composer/installers"를 신뢰"할지 묻는 메시지가 표시될 수 있습니다. 이렇게 해도 안전하지만 이렇게 하면 Composer가 컴퓨터에서 코드를 실행할 수 있습니다.

모두 정상이면 플러그인을 설치해야 합니다(활성화하지는 않음). 또한 이 시점에서 변경 사항을 Git에 커밋하는 것이 좋습니다.

사용자 지정 또는 타사 플러그인 및 테마 추가

저장소에서 플러그인과 테마를 원하는 경우 이 모든 것이 좋습니다. 하지만 wordpress.org 리포지토리에 없는 타사 플러그인이나 사용자 지정 코드를 추가하려면 어떻게 해야 할까요? WordPress 디렉토리는 Git에 없으므로 자신의 항목을 어떻게 버전 관리합니까?

일부 테마 및 플러그인 작성자는 해당 플러그인에 대한 사용자 정의 리포지토리를 지원합니다.

그리고 일부 테마 및 플러그인은 유료 플러그인과 같은 플러그인에 대한 리포지토리를 사용할 수 없습니다.

그러나 이것이 적용되지 않는 경우 여기서 트릭은 .gitignore 파일을 사용하여 특정 디렉토리를 선택적으로 무시 해제하고 해당 사용자 지정 플러그인과 테마를 composer.json에 추가하는 것입니다.

또한 이러한 플러그인을 다른 디렉토리에 넣어 composer.json에서 설치할 수도 있습니다.

.gitignore에서 플러그인 폴더를 무시하므로 dist라는 다른 폴더를 만들어야 합니다.

dist에는 유료 및 사용자 정의 플러그인이 있을 수 있으며 Composer에서 설치할 수 있습니다.

  • 거리/
    • 플러그인/
    • 테마/
    • mu-플러그인/

사용자 지정 플러그인과 테마를 적절한 폴더에 복사해야 합니다.

그리고 dist/plugins에 추가된 각 플러그인에 대해 composer.json을 생성해야 합니다.

현재 유료인 고급 사용자 정의 필드 프로가 있습니다. 또한 원 클릭 설치 및 배포 자동화를 위해 작성기를 통해 해당 플러그인을 추가하려고 합니다.

작성자 웹 사이트 포털에서 해당 플러그인을 다운로드하고 dist/plugins/advanced-custom-fields-pro 폴더에서 해당 플러그인을 추출해야 합니다. 그리고 같은 폴더에 다음 내용으로 composer.json을 생성합니다.

 {
   "이름": "custom-plugins/acf-pro",

   "description": "고급 사용자 정의 필드 PRO",

   "버전": "5.12.2",

   "유형": "워드프레스 플러그인",

   "필요하다": {

       "작곡가/설치자": "^1.0",
       "johnpbloch/wordpress-core": ">=5.4"
   }


}

여기에 사용자 지정 접두사를 사용하여 버전과 이름을 추가할 수 있습니다. 그리고 루트 composer.json 파일에 코드를 추가하여 설치하는 동안 이 플러그인을 호출합니다.

"repositories": 섹션에서 마지막에 다음 코드를 추가합니다.

 "저장소": [
{
     "유형": "경로",

     "url": "dist/플러그인/*",

     "옵션": {

       "심볼릭 링크": 거짓

     }

저장소 섹션에도 다른 항목이 있습니다. 이 플러그인을 설치하려면 두 가지 방법이 있습니다. 먼저 플러그인 이름을 버전과 함께

 "필요하다": {
     "custom-plugins/acf-pro": ">=5.12.2"
}

또는 다음 명령을 실행하면 플러그인이 설치되고 위 항목이 composer.json에 추가됩니다.

 $ 작성기에는 custom-plugins/acf-pro가 필요합니다.

같은 방법으로 테마와 mu 플러그인을 설치할 수 있습니다.

테마의 경우 테마 폴더 위치를 추가해야 합니다.

 "저장소": [
{
     "유형": "경로",

     "url": "dist/themes/*",

     "옵션": {

       "심볼릭 링크": 거짓

     }

이름 및 버전 세부 정보와 함께 사용자 정의 테마에 composer.json을 추가해야 합니다. 해당 이름을 사용하여 composer require 명령을 사용하여 테마를 설치할 수 있습니다.

결론적으로

Composer를 사용하는 것은 WordPress를 안전하고 최신 상태로 유지하며 재현 가능하도록 하는 가장 효과적인 방법입니다. Composer를 사용하면 개발자가 프로젝트에서 종속성을 쉽게 추가 및 업데이트하고 정확한 버전을 잠가 각각의 새 분기가 동일한 코드로 작동하도록 할 수 있습니다.

이러한 이점을 갖춘 Composer는 WordPress 프로젝트를 관리하고 반복 가능한 빌드와 커밋 가능한 업데이트를 보장하는 탁월한 선택입니다.

Composer를 시작하는 것이 다소 어려울 수 있음을 이해합니다. 궁금한 점이 있으면 주저하지 말고 문의해 주세요. WordPress 경험을 최대한 활용할 수 있도록 도와드리겠습니다.

참조:

    • https://docs.platform.sh/guides/wordpress/composer.html
    • https://deliciousbrains.com/storing-wordpress-in-git/
    • https://time2hack.com/composer-wordpress-deployment/