Dodavanje Composera postojećem sajtu
Pojednostavljeno u Drupal 8.8.0
Napomena: ako ste započeli svoj projekat koristeći Drupal verziju 8.8.0 ili noviju, vaš sajt već koristi ispravnu strukturu fajlova i spreman je za konverziju u Composer.
Ova stranica predstavlja korak-po-korak vodič za ručno dodavanje podrške za Composer na postojeći sajt koji je prethodno instaliran bez Composera. Ovaj vodič je za vas ako ste instalirali Drupal 8 ručno iz arhive ili koristili zastareli Composer šablon kao što je drupal/drupal.
Za sajtove kreirane na Drupal 8.8.0 ili novijem
Čak i ako ste instalirali Drupal 8.8.0 iz arhive, Composer je već unapred instaliran. Dakle, trebalo bi da možete da upravljate svojim sajtom pomoću Composera bez dodatnih koraka konverzije.
Za sajtove kreirane pre Drupal 8.8.0
Fajl composer.json koji dolazi sa arhivama preuzetim sa https://www.drupal.org/download pre Drupal 8.8.0 nije dizajniran za sajtove kojima upravlja Composer.
Ako želite da pređete sa ručnog upravljanja na Composer za instalaciju i ažuriranje Drupal jezgra i dodatnih modula, prvo morate da prilagodite composer.json fajl vašeg sajta.
Tipične greške Composera koje ukazuju na neispravan composer.json fajl:
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.
Ponekad se problemi sa Composer šablonima mogu rešiti brisanjem composer.lock fajla i vendor/ direktorijuma pre pokretanja Composer ažuriranja, ali konverzija postojećeg Drupal 8 sajta u projekat koji koristi Composer šablon iz Drupal 8 Uputstva za instalaciju (3.5. Korišćenje Composera za preuzimanje i ažuriranje fajlova) predstavlja dugoročno stabilnije rešenje problema ažuriranja Drupala.
Alati kao što su gocomposer i composerize drupal pokušavaju automatizovati proces konverzije starih sajtova u Composer projekte, ali ručna konverzija je relativno jednostavna čak i za veće sajtove i ne traje dugo.
Na kraju procesa vaš projekat će imati preporučenu strukturu direktorijuma. Composer konfiguracija (composer.json, composer.lock itd.), Drush i vendor direktorijum biće smešteni van webroot-a. Vaš originalni webroot će sadržati novi folder web/ gde se nalazi pravi sajt. Ako vaš projekat trenutno koristi drugačiju strukturu direktorijuma, moraćete da prilagodite konfiguraciju web servera da pokazuje na novi web/ direktorijum. Vratićemo se na to kasnije.
TL; DR?
- Instalirajte novi Drupal sajt koristeći aktuelni Composer šablon u novi direktorijum.
- Kopirajte sve prilagođene teme, module, fajlove i podešavanja u novi projekat. (Proverite dvaput strukturu direktorijuma.)
- Prebacite podešavanja u novi projekat.
- Dodajte sve dodatne module u novi composer.json fajl i pokrenite composer install.
- Ažurirajte bazu podataka i očistite keš (drush updb; drush cr)
- Ažurirajte konfiguraciju web servera.
CELA PRIČA
Ovaj vodič pretpostavlja da je vaš postojeći web sajt u direktorijumu /var/www/sites/html/ i da ćete kreirati novi sajt u /var/www/sites/new_html/. Prilagodite putanje vašim stvarnim direktorijumima.
Pre nego što počnete
Ako ćete „skomponovati“ stari sajt Drupal, jezgro i contrib moduli verovatno nisu u svojim najnovijim dostupnim verzijama. Sledeći koraci će ažurirati jezgro i sve module na najnovije verzije. To je verovatno ono što želite, ali razmislite o konfiguraciji sajta — da li postoji razlog da neke module ili jezgro ne ažurirate? Možda imate instalaciju koja zavisi od starije verzije neke biblioteke ili modula i ne treba je ažurirati.
Ako želite da ažurirate sve na najnoviju verziju, jednostavno sledite ovaj vodič i rešavajte probleme koji se pojave posle ažuriranja. Verovatno ćete videti neke greške ili barem upozorenja vezana za novije verzije modula. Jednostavno potražite te poruke na internetu i proverite postoje li popravke za te probleme.
Ako više volite da ostanete na svim postojećim verzijama i kasnije izvršite ažuriranje pomoću Composera, morate se postarati da koristite iste verzije jezgra i modula kao i na starom sajtu. Pogledajte vodiče za composer create-project o tome kako instalirati specifičnu verziju jezgra ili specifičnu verziju contrib modula. Na kraju, navedite verzije prilikom pokretanja composer create-project ili composer require (npr. composer require vendor/package:version).
1. Instalirajte novi Drupal sajt
Kreirajte novi Drupal projekat koristeći drupal/recommended-project šablon:
cd /var/www/sites composer create-project drupal/recommended-project:~8.8.0 new_html --stability dev --no-interaction
Ovo će kreirati direktorijum new_html/ u trenutnom direktorijumu sa vendor i web (= webroot) direktorijumima i vašim composer.json fajlom, konfiguracijama itd. Ako vaš stari projekat nije koristio ovu strukturu, naviknite se da pokrećete drush i composer direktno iz ovog direktorijuma, a ne iz root-a.
Ranije je u ovim uputstvima korišćen drupal-composer/drupal-project, koji je sada zastareo u korist zvanično podržanog šablona: drupal/recommended-project.
2. Kopirajte fajlove u novi Composer projekat
Napomena. Sledeće uputstvo je potrebno samo za sajtove kreirane pre Drupal 8.8.0.
Ako je vaš projekat kreiran pre Drupal 8.8.0, morate kopirati prilagođene module, teme i biblioteke iz starog projekta u novi. Pazite da ih postavite u prave direktorijume jer struktura može biti različita.
Prave putanje su definisane u „installer-paths“ delu composer.json fajla:
"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": { ... } }
Na vašem starom sajtu moduli su verovatno u /var/www/sites/html/modules/. Na novom mestu treba da budu u direktorijumu navedenom u „installer-paths“: /var/www/sites/new_html/web/modules/.
- Prilagođene teme u /var/www/sites/new_html/web/themes/custom/
- Prilagođeni moduli u /var/www/sites/new_html/web/modules/custom/
- Biblioteke u /var/www/sites/new_html/web/libraries/
- Vaši učitani fajlovi i slike u /var/www/sites/new_html/web/sites/default/files/
Proverite da li web server ima prava za pisanje u direktorijum sa fajlovima, kao što to radite kod nove Drupal instalacije. Više o pravima pročitajte u Zaštita prava pristupa i vlasništvo nad fajlovima.
Pretpostavimo da je korisnik web servera www-data, a FTP korisnik vftp. Izvršite sledeće komande u terminalu da podesite prava na fajlove i direktorijume:
# Podesi grupu foldera fajlova na web server korisnika sudo chown -R vftp:www-data /var/www/sites/new_html/web/sites/default/files # Dozvoli grupi web servera da uređuje i pristupa folderima u files direktorijumu sudo find /var/www/sites/new_html/web/sites/default/files -type d -exec chmod u=rwx,g=rwx,o= '{}' \; # Dozvoli grupi web servera da uređuje sve fajlove u files direktorijumu sudo find /var/www/sites/new_html/web/sites/default/files -type f -exec chmod u=rw,g=rw,o= '{}' \;
Vaš files folder sadrži sve fajlove koje su korisnici otpremili na stari sajt, kao i neke privremene foldere sa keširanim CSS i JS fajlovima ili šablonima.
Ako ste kopirali ove privremene foldere iz starog sajta u novi files direktorijum, obavezno ih ručno obrišite. To su obično foldere php/, js/, styles/ i css/ u novom /var/www/sites/new_html/web/sites/default/files direktorijumu. Ovi fajlovi će se automatski ponovo generisati posle čišćenja keša (drush cr) i posete sajtu u pregledaču, tako da ne brinite zbog njihovog brisanja. Ipak, kao i uvek, napravite rezervnu kopiju pre nego što ih obrišete ;-).
3. Prebacite settings.php u novi projekat
Kopirajte podatke za konekciju na bazu podataka i ostale važne postavke iz starog settings.php u novi projekat. To su uglavnom nizovi $databases['default']['default'], $settings['hash_salt'], $settings['trusted_host_patterns'] i moguće neke prilagođene postavke. Uporedite oba fajla settings.php da biste znali šta treba da kopirate.
Takođe proverite da li $config_directories['sync'] pokazuje na postojeći direktorijum. Verovatno treba da bude van webroot-a gde se nalazi composer.json. Ako ste Drupal instalirali drugačije, može pokazivati na neki fajl u sites/default/files/. Proverite da li putanja u $config_directories['sync'] stvarno postoji i da je dostupna za pisanje korisniku web servera.
Nemojte zaboraviti da prekopirate i razvojne fajlove kao što su settings.local.php i development.services.yml u novi projekat.
4. Dodajte dodatne module u novi Composer konfiguracioni fajl
Sada treba da dodate sve module vašeg projekta u novi composer.json u vašem novom webroot-u.
Možete ručno da dodate module u composer.json ili koristiti composer require da dodate najnovije verzije modula.
4.1 Kako dobiti spisak modula sa sajta
Ako ranije niste koristili Composer za upravljanje ovim sajtom, vaš stari composer.json neće sadržati listu modula u 'require' sekciji. U tom slučaju morate ručno sastaviti spisak svih dodatih (ne prilagođenih) modula.
To možete uraditi tako što ćete napraviti spisak foldera u modules/contrib/ ili modules/ direktorijumu na starom sajtu. U composer.json samo dodajte prefiks drupal/ ispred imena foldera modula. Na primer, modules/contrib/devel postaje drupal/devel.
Budite sigurni da razvojne pakete kao drupal/devel ili drupal/kint stavljate u require-dev sekciju, gde je već verovatno prisutan webflo/drupal-core-require-dev.
4.2 Ručno dodavanje modula u composer.json
Izmenite composer.json u root direktorijumu novog projekta (npr. /var/www/sites/new_html) i prekopirajte listu paketa iz starih composer.json „require“ i „require-dev“ sekcija u novi composer.json. Pri ručnom pristupu vodite računa o tačnim verzijama modula.
4.3 Dodavanje modula korišćenjem composer require
Umesto ručnog dodavanja imena i verzija modula u composer.json, možete koristiti komandu composer require drupal/<ime_modula> za svaki modul koji vam treba. Možete dodati više modula odjednom, npr. composer require drupal/modul1 drupal/modul2 drupal/modul3. Da biste modul dodali u require-dev sekciju, koristite composer require --dev drupal/<ime_modula>.
4.4 Završetak instalacije Composera
Pokrenite composer install iz direktorijuma projekta (npr. /var/www/sites/new_html/). To će preuzeti sve module koje ste dodali u composer.json. Ako naiđete na probleme, obrišite composer.lock i vendor direktorijum i pokušajte ponovo.
Ne morate da uključujete sve module ručno, jer ćete ili koristiti bazu podataka starog sajta ili planirate da je uvezete u novi sajt.
5. Ažurirajte bazu podataka i očistite keš
Obavezno primenite sva dostupna ažuriranja baze podataka pokretanjem drush updb.
Zatim očistite Drupal keš pokretanjem drush cr iz direktorijuma projekta (/var/www/sites/new_html).
Ako vidite grešku Missing $settings['hash_salt'] in settings.php pri pokretanju drush updb, pogledajte odeljak „Otklanjanje problema“ ispod. Verovatno ste zaboravili da kopirate vrednost iz starog settings.php fajla.
6. Ažurirajte konfiguraciju web servera
Ažurirajte konfiguraciju vašeg web servera da pokazuje na novi webroot. U našem primeru to je /var/www/sites/new_html/web/. Ako koristite php-fpm, takođe ažurirajte njegove konfiguracije (npr. /etc/php/7.2/fpm/pool.d/yoursite.conf) da koriste novi webroot. Ne zaboravite da restartujete servise nakon izmene konfiguracije.
7. Otklanjanje problema
7.1 Upozorenja ili greške na stranici izveštaja
Proverite izveštaje sajta da vidite da li ima upozorenja ili grešaka. Ako sledite ovaj vodič bez prethodnog ažuriranja starog sajta na najnoviju Drupal verziju, verovatno ćete ažurirati jezgro i module na najnovije verzije, što može izazvati greške ili upozorenja koja ranije nisu postojala. Jednostavno ih rešite kao i kod „normalnog“ Drupal ažuriranja.
7.2 Nedostaje Hash Salt
Ako vidite grešku Missing $settings['hash_salt'] in settings.php prilikom pokretanja drush updb ili drush cr, verovatno ste zaboravili da kopirate vrednost $settings['hash_salt'] iz starog settings.php fajla. U tom slučaju ili kopirajte postojeću hash_salt vrednost ili generišite novu pomoću sledeće komande u root direktorijumu sajta:
drush php-eval 'echo \Drupal\Component\Utility\Crypt::randomBytesBase64(55) . "\n"'
Komanda će ispisati novi hash koji možete kopirati u novi settings.php fajl.
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.