Debian 11에서 Composer를 설치하고 사용하는 방법


소개

라라벨.

이 가이드에서는 Debian 11 서버에 Composer를 설치하고 사용합니다.

전제 조건

이 자습서를 따르려면 루트가 아닌 sudo 사용 사용자 및 방화벽 사용을 포함하여 하나의 Debian 11 서버 설정이 필요합니다. Debian 11 초기 서버 설정 가이드에 따라 이 작업을 수행할 수 있습니다.

1단계 - 종속성 설치

Debian 11 시스템에 이미 포함되어 있을 수 있는 종속성 외에도 Composer는 명령줄에서 PHP 스크립트를 실행하기 위해 php-cli가 필요하고 압축된 아카이브를 추출하기 위해 unzip이 필요합니다.

패키지 관리자 캐시를 업데이트하여 시작하십시오.

  1. sudo apt update

다음으로 종속성을 설치합니다. Composer를 다운로드하려면 curl이 필요하고 설치 및 실행을 위해서는 php-cli가 필요합니다. 이 튜토리얼에서 사용할 라이브러리에 대한 기능을 제공하려면 php-mbstring 패키지가 필요합니다. git은 Composer에서 프로젝트 종속성을 다운로드하는 데 사용하고 unzip은 압축된 패키지를 추출하는 데 사용합니다. 다음 명령으로 모든 것을 설치할 수 있습니다.

  1. sudo apt install curl php-cli php-mbstring git unzip

모든 종속성이 설치되었으므로 이제 Composer를 설치할 수 있습니다.

2단계 - Composer 다운로드 및 설치

Composer는 PHP로 작성된 설치 프로그램을 제공합니다. 다운로드하고 손상되지 않았는지 확인한 다음 이를 사용하여 Composer를 설치합니다.

먼저 홈 디렉토리에 있는지 확인하십시오.

  1. cd ~

그런 다음 curl을 사용하여 설치 프로그램을 검색합니다.

  1. curl -sS https://getcomposer.org/installer -o composer-setup.php

다음으로 설치 프로그램이 Composer Public Keys/Signatures 페이지에 있는 최신 설치 프로그램의 SHA-384 해시와 일치하는지 확인합니다. 확인 단계를 용이하게 하기 위해 다음 명령을 사용하여 작성기 페이지에서 프로그래밍 방식으로 최신 해시를 가져와 셸 변수에 저장할 수 있습니다.

  1. HASH=`curl -sS https://composer.github.io/installer.sig`

얻은 값을 출력하려면 다음을 실행하십시오.

  1. echo $HASH
Output
55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae

이제 Composer 다운로드 페이지에 제공된 대로 다음 PHP 코드를 실행하여 설치 스크립트를 안전하게 실행할 수 있는지 확인합니다.

  1. php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

결과는 다음과 같습니다.

Output
Installer verified

설치 프로그램이 손상됨이라는 메시지가 표시되면 설치 스크립트를 다시 다운로드하고 올바른 해시를 사용하고 있는지 확인해야 합니다. 그런 다음 명령을 실행하여 설치 프로그램을 다시 확인하십시오. 확인된 설치 프로그램이 있으면 계속할 수 있습니다.

composer를 전체적으로 설치하려면 다음 명령을 사용하여 /usr/local/bin 아래에 composer라는 시스템 전체 명령으로 Composer를 다운로드하고 설치합니다. :

  1. sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer

결과는 다음과 같습니다.

Output
All settings correct for using Composer Downloading... Composer (version 2.3.10) successfully installed to: /usr/local/bin/composer Use it: php /usr/local/bin/composer

다음 명령을 실행하여 설치를 테스트하십시오.

  1. composer

그러면 출력에 다음과 같이 Composer의 버전과 인수가 표시됩니다.

Output
______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ Composer version 2.3.10 2022-07-13 15:48:23 Usage: command [options] [arguments] Options: -h, --help Display help for the given command. When no command is given display help for the list command -q, --quiet Do not output any message -V, --version Display this application version --ansi|--no-ansi Force (or disable --no-ansi) ANSI output -n, --no-interaction Do not ask any interactive question --profile Display timing and memory usage information --no-plugins Whether to disable plugins. --no-scripts Skips the execution of all scripts defined in composer.json file. -d, --working-dir=WORKING-DIR If specified, use the given directory as working directory. --no-cache Prevent use of the cache -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug . . .

이것은 Composer가 시스템에 성공적으로 설치되었고 시스템 전체에서 사용 가능한지 확인합니다.

참고: 이 서버에서 호스팅하는 각 프로젝트에 대해 별도의 Composer 실행 파일을 갖고 싶다면 프로젝트별로 로컬로 설치할 수 있습니다. NPM 사용자는 이 접근 방식에 익숙할 것입니다. 이 방법은 시스템 사용자에게 시스템 전체에 소프트웨어를 설치할 수 있는 권한이 없는 경우에도 유용합니다.

이렇게 하려면 php composer-setup.php 명령을 사용하십시오. 이렇게 하면 현재 디렉토리에 ./composer.phar command로 실행할 수 있는 composer.phar 파일이 생성됩니다.

이제 Composer를 설치했으므로 다음 단계에서는 Composer를 사용하여 PHP 종속성을 관리하는 방법을 배웁니다.

3단계 - PHP 프로젝트에서 Composer 사용

PHP 프로젝트는 종종 외부 라이브러리에 의존하며 이러한 종속성과 해당 버전을 관리하는 것은 까다로울 수 있습니다. Composer는 종속성을 추적하고 다른 사람들이 쉽게 설치할 수 있도록 하여 이 문제를 해결합니다.

프로젝트에서 Composer를 사용하려면 composer.json 파일이 필요합니다. composer.json 파일은 Composer에게 프로젝트에 대해 다운로드해야 하는 종속성과 설치가 허용된 각 패키지의 버전을 알려줍니다. 이는 프로젝트의 일관성을 유지하고 잠재적으로 이전 버전과의 호환성 문제를 일으킬 수 있는 불안정한 버전의 설치를 피하는 데 매우 중요합니다.

이 파일을 수동으로 만들면 오류가 발생하기 쉽고 구문 오류가 발생할 수 있으므로 수동으로 만들 필요가 없습니다. Composer는 composer require 명령을 사용하여 프로젝트에 종속성을 추가할 때 composer.json 파일을 자동으로 생성합니다. 이 파일을 수동으로 편집할 필요 없이 동일한 방식으로 추가 종속성을 추가할 수 있습니다.

Composer를 사용하여 패키지를 프로젝트의 종속성으로 설치하는 프로세스에는 다음 단계가 포함됩니다.

  • 애플리케이션에 필요한 라이브러리 종류를 식별합니다.
  • Composer의 공식 패키지 저장소인 Packagist.org에서 적합한 오픈 소스 라이브러리를 조사합니다.
  • 의존하려는 패키지를 선택하십시오.
  • composer require를 실행하여 composer.json 파일에 종속성을 포함하고 패키지를 설치합니다.

데모 애플리케이션으로 이를 테스트할 수 있습니다.

이 애플리케이션의 목표는 주어진 문장을 슬러그라는 URL 친화적인 문자열로 변환하는 것입니다. 슬러그는 일반적으로 페이지 제목을 이 자습서의 URL 마지막 부분과 같은 URL 경로로 변환하는 데 사용됩니다.

홈 디렉토리로 이동하여 시작하십시오.

  1. cd ~

그런 다음 디렉토리를 만듭니다. slugify라고 부르세요.

  1. mkdir slugify

생성을 완료한 후 다음 디렉터리로 변경합니다.

  1. cd slugify

이제 Packagist.org에서 슬러그 생성에 도움이 되는 패키지를 검색할 차례입니다. Packagist에서 "slug\라는 용어를 검색하면 다음과 유사한 결과가 표시됩니다.

목록의 각 패키지 오른쪽에는 두 개의 숫자가 있습니다. 아래쪽을 가리키는 화살표가 있는 아이콘 옆의 숫자는 패키지가 설치된 횟수를 나타내고 별 아이콘이 있는 숫자는 패키지가 GitHub에서 별표 표시된 횟수를 나타냅니다. 이러한 숫자를 기준으로 검색 결과를 재정렬할 수도 있습니다. 일반적으로 더 많은 설치와 더 많은 별이 있는 패키지는 더 많은 사람들이 사용하기 때문에 더 안정적인 경향이 있습니다. 필요한 패키지인지 확인하기 위해 관련성에 대한 패키지 설명을 확인하는 것도 중요합니다.

이 자습서에서는 문자열-슬러그 변환기가 필요합니다. 검색 결과에서 패키지 cocur/slugify는 적당한 양의 설치와 별표로 잘 일치합니다.

Packagist의 패키지에는 공급업체 이름과 패키지 이름이 있습니다. 각 패키지에는 GitHub가 리포지토리에 사용하는 것과 동일한 형식인 vendor/package 형식의 고유 식별자(네임스페이스)가 있습니다. 설치하려는 라이브러리는 네임스페이스 cocur/slugify를 사용합니다. 프로젝트에서 패키지를 요구하려면 네임스페이스가 필요합니다.

이제 설치하려는 패키지를 알았으므로 composer require를 실행하여 종속성으로 포함하고 프로젝트에 대한 composer.json 파일도 생성합니다.

  1. composer require cocur/slugify

Composer가 종속성을 다운로드하면 출력은 다음을 반환합니다.

Output
Using version ^4.1 for cocur/slugify ./composer.json has been created Running composer update cocur/slugify Loading composer repositories with package information Updating dependencies Lock file operations: 1 install, 0 updates, 0 removals - Locking cocur/slugify (v4.1.0) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Downloading cocur/slugify (v4.1.0) - Installing cocur/slugify (v4.1.0): Extracting archive Generating autoload files

이 출력에서 알 수 있듯이 Composer는 사용할 패키지 버전을 자동으로 결정합니다. 지금 프로젝트의 디렉토리를 확인하면 composer.jsoncomposer.lockvendor 디렉토리라는 두 개의 새 파일이 포함됩니다.

  1. ls -l
Output
total 12 -rw-r--r-- 1 sammy sammy 59 Aug 2 22:19 composer.json -rw-r--r-- 1 sammy sammy 3462 Aug 2 22:19 composer.lock drwxr-xr-x 4 sammy sammy 4096 Aug 2 22:19 vendor

composer.lock 파일은 설치된 각 패키지의 버전에 대한 정보를 저장하는 데 사용됩니다. 또한 다른 사람이 프로젝트를 복제하고 해당 종속 항목을 설치하는 경우 동일한 버전이 사용되도록 합니다. vendor 디렉토리는 프로젝트 종속성이 있는 위치입니다. vendor 폴더는 버전 제어에 커밋할 필요가 없으며 composer.jsoncomposer.lock 파일만 포함하면 됩니다.

이미 composer.json 파일이 포함된 프로젝트를 설치할 때 composer install을 실행하여 프로젝트의 종속성을 다운로드합니다.

다음으로 버전 제약 조건을 검토합니다. composer.json 파일의 내용을 확인하면 다음과 같은 내용이 표시됩니다.

  1. cat composer.json
Output
{ "require": { "cocur/slugify": "^4.1" } }

composer.json의 버전 번호 앞에 특수 문자 ^가 있는 것을 볼 수 있습니다. Composer는 유연성을 제공하는 동시에 프로젝트를 안정적으로 유지하기 위해 필요한 패키지 버전을 정의하기 위한 여러 가지 제약 조건과 형식을 지원합니다. 자동 생성된 composer.json 파일에서 사용하는 캐럿(^) 연산자는 시맨틱 버전 관리에 따라 최대 상호 운용성을 위해 권장되는 연산자입니다. 이 경우 4.1을 최소 호환 버전으로 정의하고 5.0 미만의 향후 버전에 대한 업데이트를 허용합니다.

일반적으로 composer.json 파일의 버전 제약을 변경할 필요가 없습니다. 그러나 일부 상황에서는 구속조건을 수동으로 편집해야 할 수 있습니다. 예를 들어 필요한 라이브러리의 주요 새 버전이 릴리스되어 업그레이드하려는 경우 또는 사용하려는 라이브러리가 시맨틱 버전 관리를 따르지 않는 경우입니다.

다음은 Composer 버전 제약 조건의 작동 방식을 더 잘 이해할 수 있는 몇 가지 예입니다.

Constraint Meaning Example Versions Allowed
^1.0 >= 1.0 < 2.0 1.0, 1.2.3, 1.9.9
^1.1.0 >= 1.1.0 < 2.0 1.1.0, 1.5.6, 1.9.9
~1.0 >= 1.0 < 2.0.0 1.0, 1.4.1, 1.9.9
~1.0.0 >= 1.0.0 < 1.1 1.0.0, 1.0.4, 1.0.9
1.2.1 1.2.1 1.2.1
1.* >= 1.0 < 2.0 1.0.0, 1.4.5, 1.9.9
1.2.* >= 1.2 < 1.3 1.2.0, 1.2.3, 1.2.9

Composer 버전 제약에 대한 자세한 내용은 공식 문서를 검토하세요.

다음으로 Composer를 사용하여 종속성을 자동으로 로드하는 방법을 배웁니다.

4단계 - 자동 로드 스크립트 포함

PHP 자체는 클래스를 자동으로 로드하지 않기 때문에 Composer는 자동 로드가 작동하도록 프로젝트에 포함할 수 있는 자동 로드 스크립트를 제공합니다. 이는 종속 항목으로 작업할 때 도움이 됩니다.

클래스 인스턴스화 전에 PHP 스크립트에 vendor/autoload.php 파일을 포함하기만 하면 됩니다. 이 파일은 첫 번째 종속성을 추가할 때 Composer에서 자동으로 생성됩니다.

응용 프로그램에서 테스트할 수 있습니다. test.php 파일을 만들고 원하는 텍스트 편집기에서 엽니다. 여기서는 nano가 사용됩니다.

  1. nano test.php

다음 코드를 추가하여 vendor/autoload.php 파일을 가져오고, cocur/slugify 종속성을 로드하고, 슬러그를 만듭니다.

<?php
require __DIR__ . '/vendor/autoload.php'; 
use Cocur\Slugify\Slugify;

$slugify = new Slugify();

echo $slugify->slugify('Hello World, this is a long sentence and I need to make a slug from it!');

파일을 저장하고 편집기를 종료하십시오. nano를 사용하는 경우 CTRL + X를 누른 다음 YENTER를 눌러 이 작업을 수행할 수 있습니다.

이제 스크립트를 실행합니다.

  1. php test.php

그러면 다음과 같은 출력이 생성됩니다.

Output
hello-world-this-is-a-long-sentence-and-i-need-to-make-a-slug-from-it

종속성은 새 버전이 나올 때 업데이트가 필요하므로 마지막 단계에서 이를 처리하는 방법을 배웁니다.

5단계 - 프로젝트 종속성 업데이트

프로젝트 종속성을 최신 버전으로 업데이트하고 싶을 때마다 update 명령을 실행하세요.

  1. composer update

이렇게 하면 프로젝트에 요구 사항으로 추가한 최신 버전의 라이브러리가 있는지 확인합니다. 최신 버전이 발견되고 composer.json 파일에 정의된 버전 제약 조건과 호환되는 경우 Composer는 설치된 이전 버전을 대체합니다. composer.lock 파일은 이러한 변경 사항을 반영하도록 업데이트됩니다.

다음과 같이 지정하여 하나 이상의 특정 라이브러리를 업데이트할 수도 있습니다.

  1. composer update vendor/package vendor2/package2

종속성을 업데이트한 후 composer.jsoncomposer.lock 파일에 대한 변경 사항을 커밋하여 프로젝트에서 작업하는 모든 사람이 동일한 패키지 버전에 액세스할 수 있도록 하십시오. .

결론

Composer는 모든 PHP 개발자의 유틸리티 벨트에 있어야 하는 강력한 도구입니다. 이 튜토리얼에서는 Debian 11에 Composer를 설치하고 프로젝트에서 사용했습니다. 이제 종속성을 설치하고 업데이트하는 방법을 알게 되었습니다.

Composer는 프로젝트 종속성을 관리하는 신뢰할 수 있는 방법을 제공하는 것 외에도 커뮤니티에서 만든 PHP 패키지를 공유하고 검색하기 위한 새로운 표준을 설정합니다.