Aktualizacja do wersji 11 (lub wyższej)
Wstępne wprowadzenie
Pomiędzy wersją 10 a wersjami kolejnymi zachodzą istotne zmiany technologiczne. Chociaż ten artykuł jest napisany dla wersji 11, jego kroki dotyczą również aktualizacji między wersją 10 -> v13 lub v14. W przypadku aktualizacji do wyższych wersji pamiętaj o przygotowaniu pliku niezbędne wymagania dla Twojej wersji.
Wprowadzenie
Ten przewodnik jest przeznaczony dla: serwer administratorzy. Chmura użytkownicy mogą się zrelaksować, podnieść nogi i pozostawić nam wszystkie te operacje.
Wersja 11 to znaczący skok technologiczny w porównaniu z poprzednimi wersjami. Aktualizacja do tej wersji wymaga nieco więcej przygotowań niż zwykła aktualizacja, aby uniknąć problemów. Potraktuj ten przewodnik jako listę kontrolną dla płynnego przejścia.
Najważniejsze zmiany w stosie technologicznym wyjaśniono w Informacje o wersji. Zawiera również ważne zmiany funkcjonalne i informacje o wtyczkach. Jeśli jeszcze tego nie zrobiłeś, najpierw je przeczytaj.
Proste maszyny wirtualne na ratunek!
Niektóre z poniższych punktów mogą dotyczyć Ciebie, a połączony wysiłek może wydawać się większy, niż jesteś w stanie znieść. W takim przypadku zawsze istnieje prosta opcja włączenia w pełni zainstalowanej aplikacji VMware/VirtualBox obraz (format .ova). Zapytaj naszego wsparcia, kto wygeneruje dla Ciebie maszynę wirtualną, a może nawet zorganizuje migrację danych z Twojego istniejącego systemu. W nagrodę za taką decyzję nie musisz czytać reszty tego artykułu :)
Przydatne zasoby
Instrukcje dotyczące większości kroków są już opublikowane na naszych stronach internetowych i/lub w bazie wiedzy. Nie będziemy kopiować ich wszystkich do tego jednego artykułu. Raczej dodamy tutaj niezbędny kontekst i udostępnimy linki do szczegółowych instrukcji dotyczących tych konkretnych operacji.
Historia aktualizacji modelu
Zanim szczegółowo omówimy każdy komponent, pokażemy modelowy przykład uaktualnienia, pozostając na tym samym serwerze.
Istniejący serwer
- Łatwa maszyna wirtualna z Easy Redmine w wersji 10.10.1
- rubin -v = 2.5.3
- mysql --wersja = 5.7.31
- redis-server --wersja = 5.0.3
- lista klejnotów | grep bundler = 1.16.6
- węzeł -v (nie istnieje)
- serwer aplikacji puma
- serwer WWW nginx
Ponieważ jest to maszyna wirtualna dostarczana przez Easy, duże środowisko (system operacyjny, baza danych) umożliwia aktualizację na tym samym serwerze. Niektóre komponenty są w porządku (mysql, redis-server, puma, nginx), niektóre wymagają aktualizacji (ruby, bundler), jednego z nich całkowicie brakuje (Node.js).
Cel
0) Pobierz i zainstaluj najnowszą wersję LTS (10.14.x) - aktualizacja jest możliwa tylko z LTS.
1) Zacznijmy od aktualizacji rubinowej
rvm install ruby 2.6.7 --patch railsexpress
(poczekaj, aż nowy ruby zostanie zainstalowany, może poprosić o hasło sudo)
rvm use ruby-2.6.7 --default
2) Zalecamy odinstalowanie poprzedniej wersji ruby, aby uniknąć możliwych kolizji
rvm remove ruby-2.5.3
To polecenie odinstaluje ruby ze wszystkimi klejnotami i innymi plikami. To lepsze niż używanie rvm uninstall
dowództwo.
3) Teraz musimy ponownie zainstalować wszystkie potrzebne klejnoty do aplikacji. Zaczynamy od bundlera
gem install bundler
Sprawdźmy, który bundler został zainstalowany
gem list | grep bundler
Powinien zwrócić linię jak
bundler (2.1.4, 2.1.2)
Upewnij się, że istnieje wersja wyższa niż 2.2.16
4) Teraz przejdź do /home/easy/your.vm.name
cd /home/easy/your.vm.name
5) Zainstaluj nodejs
sudo apt update
sudo apt upgrade
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install nodejs
I sprawdź, czy ma poprawną wersję
node -v
Powinno zwrócić coś takiego
v14.16.0
Upewnij się, że Twoja wersja to 14.16 lub nowsza.
6) Pobierz pakiet v11 ze strefy klienta, skopiuj go na swoją maszynę wirtualną.
7) Zatrzymaj serwer pumy
sudo systemctl stop puma@your.domain.name
Od tego momentu możesz wybrać, czy chcesz kontynuować automatyczną procedurę, czy ręczną aktualizację.
a) Automatyczna aktualizacja (Zalecana)
8a) Uruchom aktualizację za pomocą instalatora redmine
redmine upgrade name_of_package
9a) Postępuj zgodnie z instrukcjami kreatora.
b) Aktualizacja ręczna
8b) Zmień nazwę swojego ostatniego bieżącego/folderu
mv current/ current_old/
9b) Odtwórz bieżący folder
mkdir current
10b) Przejdź do bieżącego folderu
cd current/
11b) Rozpakuj paczkę tutaj
unzip /path/to/downloaded/package.zip
12b) Zainstaluj klejnoty
bundle install
13b) Uruchom migracje
bundle exec rake easyproject:install RAILS_ENV=production
14b) Jeśli wszystko jest w porządku, uruchom pumę z powrotem
sudo systemctl start puma@your.domain.name
Lista kontrolna specyfikacji
System operacyjny
Od wersji 11 jedynym obsługiwanym systemem operacyjnym (w którym aplikacja działa bezpośrednio) jest Debian, zwłaszcza 10 (Buster) i 11 (Bullseye).
Jeśli korzystasz z Easy Redmine na naszych dostarczonych maszynach wirtualnych, najprawdopodobniej masz już pokryte to wymaganie. Jeśli masz nieobsługiwany system operacyjny, musisz przeprowadzić migrację na nowy serwer (najlepiej naszą maszynę wirtualną). Ponowna instalacja lub aktualizacja systemu operacyjnego w aplikacji produkcyjnej zdecydowanie nie leży w Twoim najlepszym interesie.
Serwer bazy danych
Będziesz musiał użyć Percona/MySQL 5.7+. Istnieją mniej więcej trzy przypadki:
- Masz starszą wersję Percony -> uaktualnij za pomocą oficjalnych instrukcji, takich jak
https://www.percona.com/doc/percona-server/5.7/upgrading_guide_56_57.html - Masz inną dystrybucję MySQL (np. MariaDB) -> zalecamy migrację na nowy serwer (najlepiej naszą VM).
- Masz PostgreSQL -> zalecamy migrację na nowy serwer (najlepiej naszą VM). Przed samą migracją baza danych musi zostać przekonwertowana. Przetestowaliśmy różne narzędzia do konwersji i podał instrukcje dla najbardziej odpowiednich. Jesteśmy również gotowi wykonać dla Ciebie konwersję.
Rubin
Język aplikacji musi być aktualizowany, np. język, którym ludzie się komunikują. Opisano aktualizację Rubiego tutaj. Jeśli twój istniejący Ruby nie jest bardzo stary, możesz kontynuować na tym samym serwerze.
Pakowacz
Praktycznie klejnot do zarządzania klejnotami. Ponieważ Easy Redmine używa ponad 200 z nich, bundler jest kluczowym elementem.
Aby zainstalować
gem install bundler
Aby zweryfikować wersję
gem list | grep bundler
Wersja 2.2.x powinna zostać zainstalowana automatycznie. Jeśli tak się nie stanie, postępuj zgodnie z oficjalna dokumentacja.
Redis
Aby usprawnić niektóre nowe funkcje i ulepszenia wydajności w wersji 11, używamy Sidekiq z redis-serverem. Łatwe maszyny wirtualne już zawierają te komponenty. Uważaj na wersję, ER11 wymaga serwera redis 5+.
Oto fragment głównego przewodnika instalacji znajdującego się w twoim Pakiet v11 dla dokument/INSTALL_DEBIAN
- Konfiguracja redis i sidekiq
Przełącz się na łatwe dla użytkownika.
vim /home/easy/current/config/additional_environment.rb
czy Rails.env.production? config.active_job.queue_adapter = :sidekiq
redis_namespace = Rails.root.join("..").basename.to_s redis_url = "redis://#{ENV["REDIS_HOST"] || "127.0.0.1"}:#{ENV["REDIS_PORT"] || 6379}/1" Sidekiq.configure_server do |config| config.redis = { url: redis_url, przestrzeń nazw: redis_namespace }
zakończenia
Sidekiq.configure_client do |config| config.redis = { url: redis_url, przestrzeń nazw: redis_namespace }
koniec koniec
vim /home/easy/current/config/sidekiq.rb
:verbose: false :pidfile: ../sidekiq.pid :logfile: ./log/sidekiq.log :concurrency: <%= ENV["SIDEKIQ_WORKERS"] || 2 %> :kolejki:
- krytyczny
- domyślnym
- przelicz_niestandardowe_pola
- łatwy_git
- łatwe_działania
- łatwe_kampanie_mailowe
- łatwe_integracje
- koperty
- łatwe_rake_zadania
- Niska
node.js
Wreszcie ostatni ważny wymóg. Instalacja jest dość prosta
sudo apt update
sudo apt upgrade
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install nodejs
Upewnij się, że masz wersję 14.16. Dostępna oficjalna dokumentacja tutaj.
WebSockets
Chociaż nie jest to ścisły wymóg, który blokuje działanie aplikacji, dwie funkcje korzystają z tej technologii (pokazywanie stanu online/offline na żywo w awatarach użytkownika; powiadomienie w aplikacji o zakończeniu eksportu). W przyszłości zostanie rozbudowany.
Kabel akcji musi być włączony. Jest zależny od Redisa. Jeśli chcesz korzystać z tych funkcji, ale nie znasz konfiguracji Redis/ActionCable, zalecamy migrację do nowej maszyny wirtualnej, w której są one wstępnie skonfigurowane.
Wymuszony protokół HTTPS
Wersja 11 wymusza protokół HTTPS adresu URL aplikacji. Sprawdź konfigurację serwera WWW (nginx), aby upewnić się, że Twoja aplikacja będzie dostępna przez https://[easyredmine_url] z przeglądarki internetowej lub z dowolnej integracji, która łączy się z Easy Redmine. Adresy URL http://[easyredmine_url] nie będą działać w wersji 11!
Koniec sub-uri
Ponieważ front-end otrzymuje zaawansowane ulepszenia, dalsze wspieranie nie jest już możliwe konfiguracja sub-uri. Ten rodzaj konfiguracji jest wrażliwy na komponenty Javascript i często powoduje nieprawidłowe działanie. Zmień konfigurację serwera na zwykłą domenę.
Po aktualizacji
Migracja tekstów tekstylnych/przecenowych
Jak napisano w Informacje o wydaniu zrezygnowaliśmy ze wsparcia różnych edytorów tekstu. Jeśli wcześniej korzystałeś z edycji tekstów tekstylnych lub przecenowych, konieczne będzie przeprowadzenie migracji sformatowanych tekstów do formatu HTML.
Użyj tego polecenia, aby przekonwertować zmapowane wpisy bazy danych z nieobsługiwanego formatowania na HTML (wersja 13.8.2 i nowsze):
bundle exec rails easy:convert_wiki_formatting source_formatting=markdown
source_formatting=
env zmienna może być textile
, markdown
or common_mark
. textile
jest domyślny.
Narzędzie sprawdzi bazę danych i poinformuje Cię, jeśli zidentyfikuje już jakąś treść HTML.
Przekształcone podmioty
- "Komentarz" => [:content]
- "Dokument" => [:opis]
- „Problem” => [:description]
- "Dziennik" => [:notatki]
- „Wiadomość” => [:content]
- "Aktualności" => [:description]
- "Projekt" => [:description]
- „WikiContent” => %i[tekst komentarza]
- "WikiContentVersion" => [:text]
- "EasyAttendance" => [:description]
- "EasyContact" => [:description]
- "EasyCrmCase" => [:description]