Heroku의 Drupal 9 가이드.
우리가 왜 Heroku에서 Drupal 9을 사용하는지에 대한 배경 지식
After a decade of using a utility knife of a CMS that was Drupal 5, 6 and 7 to create solutions for hundreds of different use cases, I really thought I had created my last Drupal site after DrupalCon Nashville back in 2018. At the time I managed a development team responsible for more than ~1000 Drupal 7 for the University of Colorado, but I couldn’t get excited about a complete rewrite of the Web Express install profile and all the custom modules and configuration that made offering Drupal as a Service cost effectively. I begged someone to change my views on Drupal 8 in Nashville이지만 나시빌은 누가 Drupal인지 실망하고 실망했다.나는 나의 첫 번째 목표에 계속 도전하지 않고 콜로라도 대학(University of Colorado)에서 새로운 직위로 전근하여 CRM/Salesforce 솔루션에 전념할 기회를 잡았다.저와 새로운 팀의 새로운 역할에서, 저는 이 팀이 Drupal 7 Commerce 솔루션에 있어서의 합리적인 발전 길은 Heroku의 Salesforce와 밀접하게 통합된 작은 응용 프로그램을 위탁 관리하는 것입니다. Drupal 7 Commerce 솔루션은 매년 수백만 명의 기부금을 처리하는 데 사용됩니다.Heroku는 비싸겠지만 미리 설정된buildpacks와 devops 구축, 테스트, 심사 도구의 좋은 조합을 제공하여 전문 시스템 관리자나 devops팀이 없는 소형 개발팀에 적합하다.
많은 사람들이 이미 짐작한 바와 같이, 비록 Heroko와 현대javascript 전단은 자유를 제공했지만, 대부분의 프로젝트는 여전히 기본적인 CMS 기능을 필요로 한다.Drupal이 제공하는 모든 것은 필요하지 않지만, 비기술적인 중소기업이 내용을 편집하고 미디어 자산을 관리할 수 있기를 바랍니다.우리는 일부 프로젝트에서 Contentful과 Cloudinary의 통합을 사용했다.Contentful은 신속한 모델링 내용에 매우 유용하지만 복잡한 상하문 형식을 구축할 때 제한에 부딪혔다.여러 응용 프로그램에서 내용을 편집하는 직원은 한 응용 프로그램에서 다른 응용 프로그램으로 넘어가는 과정이 번거롭고 곤혹스럽다는 것을 발견했다.Contentful은 Ron Popeil 스타일의 위대한 솔루션으로 간단한 응용 프로그램에 사용되지만 Contentful을 결합 백엔드로 사용하여 여러 응용 프로그램에 일치하는 사용자 체험 백엔드를 구축하는 데 필요한 작업은 소스 CMS 솔루션을 백엔드로 사용하는 작업과 유사하다.Strapi와 같은 결합 해소를 위해 설계된 비교적 새로운 CMS 솔루션을 평가한 후에 우리는 다시 Drupal에 관심을 가지게 되었다. 나는 우리가 이렇게 해서 매우 기쁘다.Drupal 9은 Drupal 8에서 직면한 많은 문제를 해결하고 Heroku와 같은 기업 위탁 관리 환경에서 더욱 쉽게 사용할 수 있습니다.
Heroku에서 다른 응용 프로그램을 호스팅했기 때문에 최소한 Heroku에서 현재 버전의 Drupal 9을 실행해야 한다고 생각합니다.소수의 예외를 제외하고는 그것의 효과가 매우 좋다.Federico Martínez’s posts on getting Drupal 8 running on Heroku는 확실히 도움이 되지만 버전 8과 9 사이에 중요한 변화가 있다.저는 Federico의 방법을 한층 더 소개하고 Drupal 개발자에게 더욱 익숙한 로컬 배치 경험을 제공했습니다.
나에게 이 글을 쓰도록 격려하다.
크리스틴 폴
@ 크리스틴 폴
9 호스트 공급업체는 그들의 게임을 강화해야 한다.OOTB 옵션으로 9이 없습니다.보아하니 내가 실험을 해 보았을 때 그것은 끊어진 것 같다.등록 후 흰색 화면으로 이동합니다.우리는 믿을 만한 도구가 필요하기 때문에 사람들은 Drupal을 선택하기를 희망한다!
20:2020년 9월 17일 오후 6시
십이
48
면책 성명: Heroku에서 다른 프로그램을 실행하지 않았다면, 이것은 Drupal을 관리하는 가장 좋거나 비용 효율적인 해결 방안이 될 수 없습니다.크리스틴은 플랫폼에서 문제를 만났다.개인적으로 Drupal과 다른 현대 PHP 프로그램을 실행하고 있다면 가장 좋은 선택이라고 생각합니다.만약 당신이 Drupal만 실행한다면, 나는 만신전이 Drupal 9.1에서 무엇을 제공했는지 기다리고 있을 것이다.
새 Drupal 9 프로젝트를 만들고 패치 준비
If you aren’t familiar with using Composer for package management, it’s similar to npm. Assuming you have Composer installed, typing these commands into your terminal will quickly copy these projects and all their dependencies to you local machine.
composer create-project drupal/recommended-project drupal-on-heroku
cd drupal-on-heroku
composer require drush/drush
composer require drupal/core-composer-scaffold
composer require cweagans/composer-patches
At this point we’ve told Composer what code we want to include in the project. Including cweagans/composer-patches gives use the ability to patch core and contrib which we will need to get Flysystem and Cloudinary working in Drupal 9.
Lando에서 PostgreSQL 로컬로 Drupal 설치
In Federico’s example, he used php -S 127.0.0.1:8888 -t web
to spin up a local PHP server and install Drupal using the UI. We’re going to install Drupal using Lando and Drush instead.
lando config
? From where should we get your app's codebase? current working directory
? What recipe do you want to use? drupal9
? Where is your webroot relative to the init destination? web
? What do you want to call this app? drupal-on-heroku
Lando를 시작하기 전에 에서 변경해야 합니다.난도yml 및 기본값을 만듭니다.우리는 env를 사용하여 Heroku의 설정 변수를 시뮬레이션할 것입니다.열다난도yml과 선택한 편집.만약 당신이 제시를 정확하게 따랐다면, 비슷한 내용을 볼 수 있을 것입니다.
name: d9-test
recipe: drupal9
config:
webroot: web
다음 구성으로 대체합니다.name: d9
recipe: drupal9
config:
webroot: web
php: 7.4
xdebug: true
services:
postgres:
type: postgres:12
portforward: true
creds:
database: drupal9
events:
post-start:
# Sleep for a few seconds since Drush load appears to be a race condition.
- sleep 5
- drush status
# Turn on dev modules excluded from config export.
- drush en config dblog devel devel_generate update webprofiler --debug
- drush cr
excludes:
- vendor
- web/core
- web/private
env_file:
- defaults.env
기본값을 만듭니다.env는 항목 루트 디렉터리에서 선택한 편집기를 사용합니다.다음 변수를 추가합니다.DATABASE_URL=postgres://postgres:@postgres:5432/postgres
만들거나 수정합니다.gitignore 기본값을 추가합니다.환경이 단계는 중요하지 않지만 Cloudinary나 S3 설정을 기본값에 추가하면 나중에 이 설정을 밝히지 마십시오.환경우리는 마침내 운행할 준비가 되었다
lando start
.이 오류가 발생할 수 있습니다.
[Symfony\Component\Console\Exception\CommandNotFoundException]
Command pm:enable was not found. Drush was unable to query the database. As a result, many commands are unavailable. Re-run your command with --debug to see relevant log messages.
기본 Postgres 포트가 로컬 구성에 사용되었는지 확인하려면 lando info
을 실행합니다.현재 실행 중
Run drush si –db-url=pgsql://postgres:@postgres:5432/drupal
.설치가 끝난 후에 우리는 설정을 업데이트해야 한다.php는 환경 변수에서 나온 데이터베이스 값을 분석합니다.많은 호스트와 마찬가지로, Heroku는 필요에 따라 데이터베이스 실례 사이에서 응용 프로그램을 교환할 수 있다.이 경우 구성 변수의 데이터베이스 자격 증명이 자동으로 업데이트됩니다.각 Review App,staging,production 실례의 데이터베이스 연결 증빙서류도 다르다.따라서 설정에서 이 값을 하드코딩합니다.php 파일(또는 Drupal을 설치하여 이를 실현하는 것)에 문제가 생길 수 있습니다.
웹/사이트/default/settings를 엽니다.선택한 편집기에서 php를 사용하고 설치 과정에서 사용한 데이터베이스 인증서를 업데이트합니다.
// Add database credentials from parsed environmental variable.
// This also works for Lando since it uses the same DATABASE_URL variable.
$parsed_creds = parse_url(getenv('DATABASE_URL'));
// Need to correct scheme based on Drupal naming conventions.
$scheme = $parsed_creds['scheme'] == 'postgres' ? 'pgsql' : $parsed_creds['scheme'];
$databases['default']['default'] = [
'database' => explode('/', $parsed_creds['path'])[1],
'username' => $parsed_creds['user'],
'password' => $parsed_creds['pass'],
'prefix' => '',
'host' => $parsed_creds['host'],
'port' => $parsed_creds['port'],
'namespace' => 'Drupal\\Core\\Database\\Driver\\' . $scheme,
'driver' => $scheme,
];
축하현재 Drupal 9의 로컬 복사본이 있습니다. 이 복사본은 Heroku에 배치할 수 있는 Heroku 친선 설정으로 실행됩니다.다음 부분에서 Heroku의 플러그인을 사용하여 이 서비스에 Fly 시스템과 Cloudinary를 설정하는 방법을 소개할 것입니다.
Reference
이 문제에 관하여(Heroku의 Drupal 9 가이드.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kreynen/guide-to-drupal-9-on-heroku-2f11텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)