Composer-ի ավելացում գոյություն ունեցող կայքին
Դյուրացվել է Drupal 8.8.0-ում
Ուշադրություն: Եթե դուք ձեր նախագիծը սկսել եք Drupal 8.8.0 կամ ավելի ուշ տարբերակից, ապա ձեր կայքը արդեն օգտագործում է ճիշտ ֆայլային կառուցվածքը և պատրաստ է Composer-ին անցման համար։
Այս էջը ներկայացնում է քայլ առ քայլ ուղեցույց՝ ինչպես ձեռքով ավելացնել Composer-ի աջակցությունը գոյություն ունեցող կայքին, որը նախկինում տեղադրվել է առանց Composer-ի։ Այս ուղեցույցը ձեզ համար է, եթե դուք ձեռքով տեղադրել եք Drupal 8-ը արխիվից կամ օգտագործել եք Composer-ի հնացած տեմպլեյթ, օրինակ՝ drupal/drupal։
Drupal 8.8.0 և ավելի նոր կայքերի համար
Թեև դուք կարող եք տեղադրել Drupal 8.8.0 արխիվից, Composer-ը նախապես տեղադրված է եղել։ Ահա թե ինչու դուք պետք է կարողանաք կառավարել ձեր կայքը Composer-ով առանց լրացուցիչ քայլերի կայքի կոնվերտացման համար։
Drupal 8.8.0-ից առաջ ստեղծված կայքերի համար
Composer.json ֆայլը, որը տրամադրվում է https://www.drupal.org/download կայքից ներբեռնված արխիվներում Drupal 8.8.0-ից առաջ, նախատեսված չէր Composer-ով կառավարվող կայքի համար։
Եթե ցանկանում եք ձեռքով կառավարմամբ անցում կատարել Composer օգտագործմանը Drupal-ի և լրացուցիչ մոդուլների տեղադրման և թարմացման համար, նախ պետք է փոխեք ձեր կայքի composer.json ֆայլը։
Հաճախ հանդիպող Composer-ի սխալներ, որոնք ցույց են տալիս composer.json ֆայլի սխալ լինելը՝
Nothing to install or update (even though updates exist) Installation request for drupal/drupal No version set (parsed as 1.0.0) -> satisfiable by drupal/drupal[No version set (parsed as 1.0.0)]. don't install drupal/core 8.x.x | remove drupal/drupal No version set (parsed as 1.0.0) Your requirements could not be resolved to an installable set of packages.
Երբեմն Composer-ի տեմպլեյթների խնդիրները կարելի է լուծել՝ ջնջելով composer.lock ֆայլը և vendors թղթապանակը (composer.lock և vendor/) նախքան Composer-ի թարմացումը, սակայն Drupal 8-ի գոյություն ունեցող կայքը ձեռքով անցկացնելով Drupal-ի պաշտոնական տեմպլեյթով կառավարվող պրոյեկտի կդառնա ավելի կայուն լուծում։ Այդ մասին կարող եք կարդալ 3.5. Использование Composer для загрузки и обновления файлов բաժնում։
gocomposer (հղում) և composerize drupal (հղում) գործիքները փորձում են ավտոմատացնել հին կայքերի անցումը Composer-ի պրոյեկտների, բայց ձեռքով անցումը բավականին պարզ է նույնիսկ մեծ կայքերի համար և շատ ժամանակ չի պահանջում։
Վերջին փուլում ձեր նախագիծը կունենա առաջարկվող թղթապանակների կառուցվածքը։ Composer-ի կոնֆիգուրացիան (composer.json, composer.lock և այլն), Drush և vendors թղթապանակը կլինեն ձեր webroot-ից դուրս։ Ձեր հին webroot-ը կպարունակի նոր web/ թղթապանակը, որտեղ է գտնվում իրական կայքը։ Եթե ձեր նախագիծը ներկայումս օգտագործում է այլ թղթապանակների կառուցվածք, ստիպված եք լինի թարմացնել ձեր վեբ սերվերի կոնֆիգուրացիան՝ ցուցադրելու նոր web/ թղթապանակը։ Այս մասին կվերադառնանք հետո։
TL; DR?
- Տեղադրեք նոր Drupal կայք՝ օգտագործելով Composer-ի ներկայիս տեմպլեյթը նոր թղթապանակում։
- Պատճենեք ձեր բոլոր անհատականացված թեմաները, մոդուլները, ֆայլերը և կարգավորումները նոր պրոյեկտում։ (Կրկնակի ստուգեք թղթապանակների կառուցվածքը)
- Տեղափոխեք կարգավորումները նոր պրոյեկտում։
- Ավելացրեք բոլոր հավելվածները նոր composer.json ֆայլում և գործարկեք composer install։
- Թարմացրեք տվյալների բազան և մաքրեք քեշը (drush updb; drush cr)
- Թարմացրեք ձեր վեբ սերվերի կոնֆիգուրացիան։
ԼՐԱՑՈՒՑԻԿ ՆԱԽԱԳԻԾ
Այս ուղեցույցում ենթադրվում է, որ ձեր հին կայքը գտնվում է /var/www/sites/html/ թղթապանակում, և դուք նոր կայք կստեղծեք /var/www/sites/new_html/ հասցեում։ Խնդրում ենք հարմարեցնել ուղիները ձեր իրական թղթապանակների համար։
Նախքան սկսելը
Եթե դուք նախատեսում եք «կոմպոզ անել» ձեր հին Drupal կայքը, ապա նրա կ núcleo-ն և contrib մոդուլները հավանաբար չեն լինի վերջին տարբերակները։ Եթե կույրորեն հետևեք այս ուղեցույցին, Drupal-ի կենտրոնը և բոլոր մոդուլները թարմացվելու են վերջին տարբերակներին։ Դա լավ է, եթե ցանկանում եք դա, բայց հաշվի առեք ձեր կայքի կոնֆիգուրացիան՝ արդյոք կա պատճառ չթարմացնելու որոշ մոդուլներ կամ կենտրոնը, օրինակ՝ կախվածություն հին գրադարանի կամ մոդուլի վրա։
Եթե ցանկանում եք թարմացնել ամեն ինչ վերջին տարբերակին, պարզապես հետևեք այս ուղեցույցին և լուծեք խնդիրները թարմացումից հետո։ Թարմացումից հետո հավանական է, որ կտեսնեք որոշ սխալներ կամ զգուշացումներ նոր մոդուլների տարբերակների հետ կապված։ Ահա՛ որոնեք դրանց մասին առցանց և տեսեք արդյոք կան ուղղումներ։
Եթե նախընտրում եք պահել ձեր առաջնային տարբերակները և ավելի ուշ թարմացնել Composer-ով, պետք է համոզվեք, որ տեղադրում եք նույն կենտրոնական և մոդուլային տարբերակները, որոնք օգտագործվել են հին կայքում։ Տեսեք composer create-project ուղեցույցը՝ ինչպես տեղադրել որոշակի Drupal տարբերակ կամ որոշակի մոդուլային տարբերակներ։ Վերջապես համոզվեք, որ նշում եք այդ տարբերակները նախքան composer create-project կամ composer require հրամանները գործարկելը։
1. Տեղադրեք նոր Drupal կայք
Ստեղծեք նոր Drupal պրոյեկտ drupal/recommended-project տեմպլեյթից՝
cd /var/www/sites composer create-project drupal/recommended-project:~8.8.0 new_html --stability dev --no-interaction
Սա կստեղծի new_html/ թղթապանակը ընթացիկ թղթապանակում, որը կունենա vendors և web (webroot) թղթապանակները և ձեր composer.json-ը, ֆայլերը և այլն։ Եթե ձեր հին նախագիծը չի օգտագործել այս թղթապանակների կառուցվածքը, կարող եք սովորել՝ ինչպես գործարկել drush և composer հենց այս թղթապանակից, ոչ միայն ձեր արմատից։
Այն ուղեցույցում նախկինում առաջարկվել էր օգտագործել drupal-composer/drupal-project, որը այժմ հնացած է և փոխարինվել է պաշտոնապես համարվող drupal/recommended-project տեմպլեյթով։
2. Պատճենեք ֆայլերը նոր Composer պրոյեկտում
Նշում. Այս քայլերը անհրաժեշտ են միայն Drupal 8.8.0-ից ավելի հին կայքերի համար։
Եթե ձեր նախագիծը ստեղծվել է մինչև Drupal 8.8.0-ը, ապա այժմ պետք է պատճենեք ձեր անհատականացված մոդուլները, թեմաները և գրադարանները հին նախագծից նոր պրոյեկտ։ Համոզվեք, որ ֆայլերը դնում եք ճիշտ տեղերում, քանի որ ձեր հին թղթապանակների կառուցվածքը կարող է տարբերվել։
Ճիշտ ուղիները կարող եք գտնել ձեր composer.json ֆայլի «installer-paths» բաժնում՝
"extra": { "composer-exit-on-patch-failure": ... "patchLevel": { ... }, "installer-paths": { "web/core": ["type:drupal-core"], "web/libraries/{$name}": ["type:drupal-library"], "web/modules/contrib/{$name}": ["type:drupal-module"], "web/profiles/contrib/{$name}": ["type:drupal-profile"], "web/themes/contrib/{$name}": ["type:drupal-theme"], "drush/Commands/{$name}": ["type:drupal-drush"] }, "drupal-scaffold": { ... } }
Հին կայքում մոդուլները սովորաբար գտնվել են /var/www/sites/html/modules/ թղթապանակում։ Նոր կայքում դրանք պետք է տեղադրվեն ըստ «installer-paths»-ի՝ /var/www/sites/new_html/web/modules/ թղթապանակում։
- Անհատականացված թեմաները գտնվում են /var/www/sites/new_html/web/themes/custom/
- Անհատականացված մոդուլները գտնվում են /var/www/sites/new_html/web/modules/custom/
- Գրադարանները գտնվում են /var/www/sites/new_html/web/libraries/
- Ձեր բեռնված ֆայլերն ու պատկերները գտնվում են /var/www/sites/new_html/web/sites/default/files/
Կրկնակի ստուգեք, որ վեբ սերվերը գրանցման իրավունքներ ունի ֆայլերի թղթապանակում, ինչպես դա անում եք նոր Drupal կայք տեղադրելիս։ Կարդացեք Ֆայլերի իրավունքների և սեփականության պաշտպանություն բաժինը, եթե ցանկանում եք ավելին իմանալ։
Գտնելով, որ ձեր վեբ սերվերի օգտատերը `www-data` է, իսկ FTP սերվերի օգտատերը՝ `vftp`, աշխատեք նման հետևյալ հրամանների վրա՝
# Կարգավորեք ֆայլերի թղթապանակի խմբի օգտագործողը՝ վեբ սերվերի օգտատերը sudo chown -R vftp:www-data /var/www/sites/new_html/web/sites/default/files # Թույլ տվեք վեբ սերվերի խմբին գրառումներ անել և մուտք ունենալ ֆայլերի թղթապանակում sudo find /var/www/sites/new_html/web/sites/default/files -type d -exec chmod u=rwx,g=rwx,o= '{}' \; # Թույլ տվեք վեբ սերվերի խմբին խմբագրել բոլոր ֆայլերը ֆայլերի թղթապանակում sudo find /var/www/sites/new_html/web/sites/default/files -type f -exec chmod u=rw,g=rw,o= '{}' \;
Ձեր files թղթապանակը պարունակում է բոլոր այն ֆայլերը, որոնք ձեր հին կայքի օգտատերերը բեռնել են, ինչպես նաև որոշ ժամանակավոր ֆայլերի թղթապանակներ, օրինակ՝ կոդավորված ոճաթղթեր կամ քեշավորված բրաուզերի ֆայլեր։
Եթե պատճենել եք այդ ժամանակավոր ֆայլերի թղթապանակները հին կայքից նոր ֆայլերի թղթապանակ, համոզվեք, որ ձեռնքով ջնջեք դրանք։ Այս թղթապանակները սովորաբար են՝ php/, js/, styles/ և css/ նոր /var/www/sites/new_html/web/sites/default/files թղթապանակում։ Այս ֆայլերը սովորաբար ինքնաբերաբար գեներացվում են քեշը մաքրելուց (drush cr) և կայքը բրաուզերով այցելելուց հետո, դրա համար չարժե անհանգստանալ դրանց ջնջման մասին։ Բայց ինչպես միշտ, համոզվեք, որ ունեք դրանց կրկնօրինակը նախքան ջնջելը ;-)
3. settings.php ֆայլի տեղափոխումը նոր պրոյեկտ
Պատճենեք տվյալների բազայի միացման տեղեկատվությունը և այլն հին settings.php-ից նոր պրոյեկտ։ Սա հիմնականում կլինի $databases['default']['default'] զանգվածը, $settings['hash_salt'], $settings['trusted_host_patterns'] և հնարավոր է ձեր որոշ հատուկ կարգավորումները։ Պարզապես համեմատեք երկու settings.php ֆայլերը, որպեսզի պարզեք, թե ինչ պետք է պատճենեք։
Հետազոտեք նաև $config_directories['sync'], որպեսզի համոզվեք, որ այն ցույց է տալիս գոյություն ունեցող թղթապանակի։ Սա հավանաբար կլինի ձեր webroot-ից դուրս, որտեղ գտնվում է composer.json ֆայլը։ Եթե Drupal-ը տեղադրվել է այլ կերպ, ապա հնարավոր է դա ցույց տա մի ֆայլի ձեր sites/default/files թղթապանակում։ Կրկնակի ստուգեք, որ $config_directories['sync']-ի ճանապարհը գոյություն ունի և վեբ սերվերի օգտատերի կողմից գրասենյակ է։
Մի մոռացեք նաև settings.local.php և development.services.yml ֆայլերը պատճենել նոր պրոյեկտ։
4. Ավելացրեք բոլոր մոդուլները նոր composer.json
Այժմ դուք պետք է ավելացնեք ձեր պրոյեկտի բոլոր մոդուլները նոր composer.json ֆայլում՝ ձեր նոր webroot-ում։
Դուք կարող եք մոդուլները ավելացնել ձեռքով կամ օգտագործել composer require՝ բոլոր մոդուլների վերջին տարբերակները տեղադրելու համար։
4.1 Ձեր կայքի մոդուլների ցանկը ստանալը
Եթե դուք մինչ այժմ չեք օգտագործել Composer ձեր կայքի կառավարմամբ, ձեր հին composer.json ֆայլը չի ներառում մոդուլների ցանկը require հատվածում։ Այս դեպքում ստիպված կլինեք ձեռքով հավաքել բոլոր ավելացված (ոչ օգտատերերի) մոդուլների ցանկը։
Դրա համար ստացեք հին կայքի modules/contrib/ կամ modules/ թղթապանակների պարունակությունը (կախված ձեր կոնֆիգուրացիայից), ապա composer.json-ում մոդուլի անունների առաջ ավելացրեք drupal/։ Օրինակ՝ modules/contrib/devel/ դառնում է drupal/devel։
Հիշեք, որ development packages (օրինակ՝ drupal/devel կամ drupal/kint) պետք է լինեն require-dev բաժնում, որտեղ դուք արդեն պետք է ունենաք webflo/drupal-core-require-dev։
4.2 Մոդուլների ձեռքով ավելացում composer.json-ում
Խմբագրեք composer.json ֆայլը նոր պրոյեկտի արմատում (օրինակ՝ /var/www/sites/new_html) և պատճենեք ձեր հին composer.json-ի require և require-dev բաժինները նոր composer.json-ում։ Ձեռնքով այդպես անում եք, պետք է հետևեք ճիշտ մոդուլային տարբերակներին։
4.3 Մոդուլների տեղադրում composer require հրամանով
Դժվարության փոխարեն, որ մոդուլների անուններն ու տարբերակները ձեռքով ավելացնել composer.json-ում, կարող եք օգտագործել composer require drupal/<module_name> հրամանը անհրաժեշտ մոդուլների համար։ Կարող եք միանգամից ավելացնել բոլոր մոդուլները՝ օգտագործելով composer require drupal/module-name-1 drupal/module-name-2 ...։ Օգտագործեք composer require --dev drupal/<module_name>՝ մոդուլը տեղադրելու համար require-dev բաժնում։
4.4 Composer տեղադրումը ավարտել
Կատարեք composer install հրամանը ձեր պրոյեկտի թղթապանակում (օրինակ՝ /var/www/sites/new_html/)։ Սա կբեռնի բոլոր մոդուլները, որոնք դուք ավելացրել եք composer.json-ում։ Եթե խնդիրներ կան, ջնջեք composer.lock և vendors թղթապանակը և փորձեք կրկին։
Ձեզ չի անհրաժեշտ բոլոր մոդուլները ձեռքով ակտիվացնել, քանի որ դուք կամ օգտագործում եք հին կայքի տվյալների բազան, կամ պատրաստվում եք ներմուծել հին կայքի բազան։
5. Թարմացրեք տվյալների բազան և մաքրեք քեշը
Պահանջվող բոլոր տվյալների բազայի թարմացումները կիրառեք drush updb հրամանով։
Հետո մաքրեք Drupal-ի քեշը՝ drush cr հրամանով ձեր պրոյեկտի թղթապանակում (/var/www/sites/new_html)։
Եթե drush updb կամ drush cr հրամանը վերադարձնում է «Missing $settings['hash_salt'] in settings.php» սխալ, տեսեք ստորև «Խնդիրների լուծում» բաժինը։ Ամենայն հավանականությամբ մոռացել եք հին settings.php-ից այդ արժեքը պատճենել։
6. Թարմացրեք վեբ սերվերի կոնֆիգուրացիան
Թարմացրեք ձեր վեբ սերվերի կոնֆիգուրացիան՝ ցույց տալու նոր webroot-ը, օրինակ՝ /var/www/sites/new_html/web/։ Եթե օգտագործում եք php-fpm, թարմացրեք նաև php-fpm-ի կոնֆիգը (օրինակ՝ /etc/php/7.2/fpm/pool.d/yoursite.conf)՝ ցույց տալու նոր webroot։ Կատարեք սերվերի վերագործարկում կամ վերաթողարկում կոնֆիգն թարմացնելուց հետո։
7. Խնդիրների լուծում
7.1. Զգուշացումներ կամ սխալներ հաշվետվության էջում
Ստուգեք ձեր կայքի հաշվետվությունները՝ համոզվելու համար, որ զգուշացումներ կամ սխալներ չկան։ Եթե չթարմացնեք ձեր հին կայքը մինչև վերջին տարբերակը նախքան այս քայլերը, ապա հնարավոր է, որ թարմացման արդյունքում հայտնվեն նոր սխալներ կամ զգուշացումներ։ Դրանք լուծեք նույն կերպ, ինչպես սովորական Drupal թարմացման դեպքում։
7.2. Գործողության բացակայություն՝ Hash Salt-ի բացակայություն
Եթե drush updb կամ drush cr հրամանների ժամանակ տեսնում եք «Missing $settings['hash_salt'] in settings.php» սխալ, հավանական է, որ մոռացել եք հին կայքի settings.php-ից այդ արժեքը պատճենել։
Այդ դեպքում պատճենեք hash_salt-ը հին settings.php-ից, կամ ստեղծեք նոր, այս հրամանն օգտագործելով ձեր կայքի արմատային թղթապանակում՝
drush php-eval 'echo \Drupal\Component\Utility\Crypt::randomBytesBase64(55) . "\n"'
Հրամանը վերադարձնում է նոր hash արժեք, որը պարզապես պատճենեք ձեր նոր settings.php ֆայլի մեջ։
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.