Drupal GitPod 컨테이너 3: 설정 및 구성

6046 단어 drupalgitpod
이 게시물mini-series에서는 GitPod와 함께 작동하는 일반 Drupal 친화적인 컨테이너를 만든 방법을 설명합니다. The code is available in my GitHub .

처음 두 게시물은 두 개의 큰 파일인 GitPod.Dockerfile 및 .gitpod.yml을 다루었습니다. 이 마지막 게시물은 내가 다른 구성 파일에 적용해야 했던 몇 가지 사소한 변경 사항을 다룰 것입니다.

아파치 회의



기본 Apache 구성 파일에서 한 가지만 변경하면 됩니다. 실제 웹 사이트 콘텐츠에 대해/var/www/html 대신/web을 보도록 지시하는 것입니다. Drupal 프로젝트에는 일반적으로 공개 사이트의 콘텐츠가 있는 폴더 외부에 composer.json 파일, 개인 파일 및 구성 동기화 파일과 같은 사이트의 여러 필수 부분을 포함하는 최상위 수준이 있기 때문입니다.

문서 루트를 "${GITPOD_REPO_ROOT}"에서 "${GITPOD_REPO_ROOT}/web"로 변경하면 파일의 관련 섹션이 다음과 같이 표시됩니다.

# Directory and files to be served
DirectoryIndex index.html index.htm index.php
DocumentRoot "${GITPOD_REPO_ROOT}/web"

RewriteCond  %{REQUEST_FILENAME} !^/$
RewriteCond  %{REQUEST_FILENAME} !^/(files|misc|uploads)(/.*)?
RewriteCond  %{REQUEST_FILENAME} !\.(php|ico|png|jpg|gif|css|js|html?)(\W.*)?
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]

<Directory "${GITPOD_REPO_ROOT}/web">
    AllowOverride all
    Require all granted
</Directory>


이 conf 파일을 사용하기 위해 전체 파일을 .gitpod 디렉토리에 저장한 다음 GitPod.Dockerfile이 해당 파일을 제자리에 복사하도록 했습니다.

COPY .gitpod/apache2.conf /etc/apache2/apache2.conf


PHP.ini



PHP.ini는 유사하게 기본 우분투에 가깝지만 완전하지는 않습니다. 최소한 몇 가지 확장에 대한 지원을 추가해야 합니다. 이를 수행하는 몇 가지 방법이 있습니다. 한 가지 접근 방식은 다른 것을 건드리지 않고 스크립트가 확장을 활성화하는 줄을 추가하도록 하는 것입니다. 이것의 장점은 다른 모든 것을 기본값으로 유지하는 것인데, 시간이 지남에 따라 GitPod 기본 이미지가 변경되므로 중요할 수 있습니다. 다음과 같이 표시됩니다.

echo "extension=uploadprogress" >> /etc/php/8.0/apache2/php.ini


여기서 수행한 다른 대안은 php.ini 파일을 내 파일로 완전히 덮어쓰는 것입니다. 이 접근 방식의 장점은 메모리 제한과 같은 다른 모든 변수도 제어할 수 있다는 것입니다. 기본값에서 변경하려는 항목이 많을수록 개별 줄을 추가하는 것보다 이 접근 방식이 더 적합합니다. 따라서 이 경우 파일은 .gitpod.yml에서 다음 줄을 사용하여 복사됩니다.

sudo cp /workspace/Drupal-GitPod/.gitpod/conf/php.ini /etc/php/8.0/apache2/php.ini


sed를 사용하여 파일의 줄을 제자리에 교체할 ​​수도 있습니다. 이는 완벽하게 구조화된 파일을 기본값으로 교체하려는 경우 좋습니다. 예를 들어 max_execution_time을 30초에서 300초로 변경하려면 다음과 같이 할 수 있습니다.

RUN sed -i "s/max_execution_time = 30/max_execution_time = 300/g" /etc/php/8.0/apache2/php.ini


드루팔 설정



대부분의 Drupal 설정은 기본값과 유사합니다. 가장 큰 변경 사항은 모든 Drupal 개발자에게 친숙한 데이터베이스 자격 증명 설정입니다. 이것은 정기적으로 즉석에서 생성되고 파괴되는 GitPod 컨테이너이므로 비밀번호 없이 루트 사용자를 사용하여 간단하게 했습니다. 프로덕션 서버에는 다른 사용자와 좋은 암호가 있습니다.

$databases['default']['default'] = array (
  'database' => 'drupal',
  'username' => 'root',
  'password' => '',
  'prefix' => '',
  'host' => '127.0.0.1',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);


그 외에도 GitPod 도메인이 변경된다는 사실과 관련된 몇 가지 조정이 있습니다.

먼저 trusted_host_patterns를 설정합니다. 이 사이트를 검색할 수 있는 유효한 도메인은 gitpod.io의 일부 하위 도메인이거나 localhost입니다.

$settings['trusted_host_patterns'] = [
  '^.+\.gitpod\.io$',
  '^localhost$'
];


나는 또한 모든 것을 허용하기 위해 cookie_domain을 열었습니다. 이것은 GitPod 하위 도메인의 사이트에 먼저 로그인한 다음 새 컨테이너를 회전시키고 해당 컨테이너로 로그인을 시도하는 것을 반대하지 않기 위한 것입니다.

 /**
  * Used to track what domains you're logged into
  * Set to * to accept any GitPod domain
  */
$cookie_domain = '*';


그게 다야! 지금까지 기능적인 Drupal 친화적인 GitPod 컨테이너에 대해 다루었습니다.

좋은 웹페이지 즐겨찾기