Zmiany pomiędzy wersją 1 and wersją 2 dla AdminGuide/UpgradeDebian9to10

Pokaż
Ignoruj:
Data i czas:
08/16/19 12:34:45 (5 years temu)
Autor:
jpo (IP: 83.144.106.170)
Komentarz:

--

Legend:

Bez zmian
Dodane
Usunięte
Zmienione
  • AdminGuide/UpgradeDebian9to10

    v1 v2  
    1 W trakcie przygotowania 
     1= Aktualizacja systemy Debian 8 Jessie do Debian 9 Stretch = 
     2 
     3|| || || Debian 8 (Jessie) || Debian 9 (Stretch) || 
     4||Domyślne || PostgreSQL || 9.6 || 10 || 
     5|| || PHP || 5.6 || 7.0 || 
     6||Opcjonalne || PostgreSQL || 10 || 11 || 
     7|| || PHP || 5.6 || downgrade 5.6/ upgrade 7.2 || 
     8 
     9''Support dla Debian oraz PHP''[[BR]] 
     10Support dla Debian 8 
     11[https://wiki.debian.org/LTS/ https://wiki.debian.org/LTS/][[BR]] 
     12Support dla PHP 
     13[http://php.net/supported-versions.php http://php.net/supported-versions.php][[BR]] 
     14[[BR]] 
     15 
     16 
     17 
     18Poniższa instrukcja przedstawia sposób aktualizacji systemu operacyjnego Linux. Aktualizacja systemu jest przeprowadzana w celu podniesienia wersji PHP do wersji 7.2, jest także możliwość pozostania przy wersji PHP 5.6 (PHP 5.6 przestaje być wspierany w grudniu 2018r). 
     19 
     20Jeśli aktualizujemy system z wersji 7 Debian zalecamy zapoznanie się z instrukcją [http://support.edokumenty.eu/trac/wiki/AdminGuide/UpgradeDebian7to8 Aktualizacja systemy Debian 7 Wheezy do Debian 8 Jessie], która zawiera wszelkie uwagi dotyczące zmian w Apache gdzie aktualizowany jest z wersji 2.2 do 2.4. 
     21 
     22 
     23'''Przed przystąpieniem do prac BEZWZGLĘDNIE należy pamiętać o wykonaniu KOPI BEZPIECZEŃSTWA, 
     24całego systemu, bazy danych, katalogu /home/edokumenty.''' 
     25 
     26'''1. Aktualizacja systemy w gałęzi Jessie, Debian 8'''  
     27 
     28Zaczynamy od aktualizacji systemu w ramach gałęzi, której aktualnie się znajduje (tj. Jessie, Debian 8): 
     29{{{ 
     30#apt-get update 
     31#apt-get upgrade 
     32}}} 
     33Jeśli system nie był długo aktualizowany pewnie trzeba będzie uruchomić system ponownie ze względu na nowszą wersję jądra systemu. 
     34{{{ 
     35#reboot 
     36}}} 
     37Przed aktualizacją dystrybucji wykonujemy kopię klików konfiguracyjnych 
     38{{{ 
     39tar -pczf etc.tar.gz /etc  
     40}}} 
     41 
     42'''2. Aktualizacja dystrybucji z Jessie na Stretch, Debian 8 na Debian 9'''  
     43 
     44Po aktualizacji systemu edytujemy plik /etc/apt/sources.list, zmieniamy dotychczasowe wpisy dla Jessie na Stretch  
     45{{{ 
     46deb http://httpredir.debian.org/debian stretch main 
     47deb http://httpredir.debian.org/debian stretch-updates main 
     48deb http://security.debian.org stretch/updates main 
     49}}} 
     50 
     51Możemy również skorzystać z polecenia, który wykona zmiany 
     52{{{ 
     53sed -i 's/jessie/stretch/g' /etc/apt/sources.list 
     54}}} 
     55 
     56Następnym krokiem jest zaktualizowanie pakietów 
     57{{{ 
     58apt-get update 
     59}}} 
     60oraz aktualizacja dystrybucji 
     61{{{ 
     62apt-get dist-upgrade 
     63}}} 
     64 
     65W niektórych przypadkach aktualizacji dystrybucji systemu mogą pojawić się problemy z aktualizacją komponentów PHP. W tym przypadku należy usunąć link symboliczny do php.ini z /etc/php5/cli i przeniesienie php.ini z /etc/php5/apache2/. Po zakończonej aktualizacji i restarcie systemu ponownie tworzymy link symboliczny do php.ini. 
     66Wznowienie aktualizacji wykonujemy poleceniem  
     67{{{ 
     68apt-get -f install 
     69}}} 
     70 
     71Po zakończonej aktualizacji wykonujemy restart systemu 
     72{{{ 
     73reboot 
     74}}} 
     75 
     76'''3. Downgrade do PHP 5.6 lub aktualizacja do PHP 7.2'''  
     77 
     78Ten punkt zostanie podzielony na dwa oddzielne w zależności od tego jaką ścieżkę wybierzemy przechodzimy do podpunktu a) Downgrade do PHP 5.6 lub podpunktu b) Aktualizacja do PHP 7.2 
     79 
     80 
     81'''3a. Downgrade do PHP 5.6''' 
     82 
     83Po aktualizacji systemu do Linux Debian 9, Stretch, na naszym serwerze dostępna będzie wersja PHP 7.0: 
     84{{{ 
     85php -v 
     86}}} 
     87Aktualizacja nie odinstaluje poprzedniej wersji czyli PHP 5.6 z której będziemy mogli nadal korzystać wystarczy tylko wykonać poniższe polecenie które odinstaluje PHP 7.0: 
     88{{{ 
     89sudo apt-get remove php7.0* 
     90}}} 
     91Po tej czynności nadal będziemy mogli korzystać z eDokumentów działających na PHP w wersji 5.6 
     92Odtworzenie linku symbolicznego do php.ini 
     93{{{ 
     94ln -s /etc/php5/apache2/php.ini /etc/php5/cli/ 
     95}}} 
     96 
     97Przy pozostaniu na wersji php 5.6 - eDokumenty będą działać tak jak do tej pory. 
     98 
     99'''3b. Aktualizacja do PHP 7.2'''  
     100 
     101W tym podpunkcie zajmiemy się aktualizacją PHP do wersji 7.2 a także zmianą ZendLoadera na IONCubeLoadera. 
     102 
     103Przed instalacją nowych pakietów musimy posprzątać nie potrzebne elementy w tym PHP oraz ZendLoadrera. Jeśli korzystaliśmy z PHP 5.6 wykonujemy poniższe polecenie: 
     104{{{ 
     105apt-get purge php5 php5-common php5-dev php5-imap php5-ldap php5-odbc php5-readline php5-sybase php5-cli php5-curl php5-gd php5-json php5-memcached php5-pgsql php5-sqlite php5-xsl 
     106}}} 
     107Jeśli świeżo aktualizowaliśmy do Debian 9 Stretch możemy również usunąć pakiety PHP 7.0 poniższym poleceniem. 
     108{{{ 
     109sudo apt-get remove php7.0* 
     110}}} 
     111 
     112Usuńmy również ręczenie pliki ZendLoadera nie będą nam już potrzebne. Pliki powinny znajdować się w lokalizacji: 
     113{{{ 
     114/usr/lib/php/ZendGuardLoader.so 
     115/usr/lib/php/opcache.so 
     116}}} 
     117 
     118Przystępujemy do instalacja PHP 7.2 w środowisku Debian 9. Dodajemy repozytoria dla PHP 7.2 
     119{{{ 
     120sudo apt install ca-certificates apt-transport-https  
     121wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - 
     122echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list 
     123}}} 
     124{{{ 
     125apt-get update 
     126}}} 
     127Przystępujemy do instalacji pakietów PHP 7.2: 
     128{{{ 
     129apt install php7.2-fpm php7.2-cli php7.2-common php7.2-curl php7.2-mbstring php7.2-mysql php7.2-xml php7.2-gd php7.2-pgsql php7.2-bcmath php7.2-sqlite3 php7.2-imap php7.2-xsl php7.2-ldap php7.2-odbc php7.2-json php7.2-sybase php7.2-readline php7.2-soap 
     130}}} 
     131 
     132{{{ 
     133apt-get install php7.2-zip 
     134}}} 
     135Modułu do Apache2 dla FCGI 
     136{{{ 
     137apt install apache2 libapache2-mod-fcgid 
     138}}} 
     139 
     140Dla FCGI instalujemy REDIS zamiast memcached 
     141{{{ 
     142apt-get install redis-server 
     143apt-get install php7.2-redis 
     144}}} 
     145 
     146Konfiguracja dla Redis, którą wprowadzamy w pliku '''/etc/redis/redis.cont''' 
     147{{{ 
     148save 1200 1 
     149save 600 10 
     150save 120 10000 
     151}}} 
     152 
     153Włączamy obsługę modułu FCGI w Apache 
     154{{{ 
     155sudo a2enmod actions fcgid alias proxy_fcgi 
     156}}} 
     157 
     158Dodajemy IonCubeLoadera, plik znajduje się w paczce konfiguracyjnej [http://support.edokumenty.eu/download/installation/linux-os/php72_fcgi_apache_conf.zip tutaj]. Po umieszczeniu go na serwerze np 
     159{{{ 
     160/usr/lib/php/ 
     161}}} 
     162 
     163Dodajemy w pierwszej linii pliku php.ini w lokalizacjach 
     164{{{ 
     165/etc/php/7.2/fmp/php.ini 
     166/etc/php/7.2/cli/php.ini 
     167}}} 
     168następujący wpis: 
     169{{{ 
     170zend_extension=/usr/lib/php/ioncube_loader_lin_7.2.so 
     171}}} 
     172W plikach php.ini dodajemy również 
     173{{{ 
     174session.save_handler = redis 
     175session.save_path = "tcp://127.0.0.1:6379" 
     176}}} 
     177oraz modyfikujemy wartości dla: 
     178{{{ 
     179memory_limit = 512M 
     180upload_max_filesize = 32M 
     181post_max_size = 64M 
     182expose_php = Off 
     183}}} 
     184 
     185Kolejnym krokiem jest modyfikacja pliku www.conf 
     186{{{ 
     187vim /etc/php/7.2/fpm/pool.d/www.conf 
     188}}} 
     189modyfikujemy wpis 
     190{{{ 
     191security.limit_extensions = .php engine 
     192pm.max_children = 8 
     193}}} 
     194 
     195Ostatnim elementem jest zmiana handlera w Apache w pliku default.conf oraz default-ssl.conf, obecny wpis: 
     196{{{ 
     197<FilesMatch "(.+[.]inc$|.+[.]php$|engine)"> 
     198     SetHandler application/x-httpd-php 
     199</FilesMatch> 
     200}}} 
     201modyfikujemy następująco 
     202{{{ 
     203<FilesMatch "(.+[.]inc$|.+[.]php$|engine$)"> 
     204    SetHandler "proxy:unix:/var/run/php/php7.2-fpm.sock|fcgi://localhost/" 
     205</FilesMatch>  
     206}}} 
     207 
     208W plikach konfiguracyjnych default.conf oraz default-ssl.conf Apache dodajemy również, na potrzeby autoryzacji WebDAV oraz CalDAV: 
     209{{{ 
     210SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 
     211}}}  
     212 
     213Z poziomu konsoli wykonujemy polecenie: 
     214{{{ 
     215a2enmod headers 
     216}}} 
     217 
     218W plikach konfiguracyjnych '''conf-enabled/security.conf''' w Apache wprowadzamy następujące zmiany: 
     219{{{ 
     220ServerSignature Off 
     221Header set X-Content-Type-Options: "nosniff" 
     222Header set X-Frame-Options: "sameorigin" 
     223Header always set Referrer-Policy "same-origin" 
     224}}} 
     225 
     226Uruchomienie moduł tłumaczącego dla Ready_™. 
     227Dodajemy moduł do php 7.2 - bsedt.so w lokalizacji  
     228{{{ 
     229/usr/lib/php/20170718 
     230}}} 
     231Następnie tworzymy pliki bsedt.ini w folderach php: 
     232{{{ 
     233/etc/php/7.2/mods-available/bsedt.ini 
     234}}} 
     235Zawartość pliki bsedt.ini 
     236{{{ 
     237extension=bsedt.so 
     238}}} 
     239Tworzymy symlinki do pliku bsedt.ini 
     240{{{ 
     241ln -s /etc/php/7.2/mods-available/bsedt.ini /etc/php/7.2/cli/conf.d/bsedt.ini 
     242ln -s /etc/php/7.2/mods-available/bsedt.ini /etc/php/7.2/fpm/conf.d/bsedt.ini 
     243}}} 
     244W pliku '''php.ini''' dla '''/etc/php/7.2/cli/''' oraz '''/etc/php/7.2/cli/''' dodajemy wpis: 
     245{{{ 
     246[bsedt] 
     247bsedt.lang_path="/home/edokumenty/public_html/apps/edokumenty/share/lang" 
     248bsedt.lang=en_UK 
     249}}} 
     250 
     251Wyłączamy moduł opcache poprzez zakomentowanie w '''/etc/php/7.2/mods-available/opcache.ini''' 
     252 
     253 
     254Po zakończeniu konfiguracji restartujemy usługi Apache oraz FPM 
     255{{{ 
     256service php7.2-fpm restart 
     257/etc/init.d/apache2 restart 
     258}}} 
     259 
     260Gotowe pliki konfiguracyjne można pobrać z [http://support.edokumenty.eu/download/installation/linux-os/php72_fcgi_apache_conf.zip poniższej lokalizacji]. Po wgraniu plików wystarczy tylko restart usług Apache oraz PHP-FPM 
     261 
     262Po zmianie PHP na 7.2 konieczna jest aktualizacja kodu system Ready_™ do kompilacji dla php 7.2. Aktualizacja kodu na nowszą wersję może wymagać wykonania patchy. Aktualizację wykonujemy w taki sam sposób jak dla systemu eDokumenty. Pomocny może być w tym przypadku ten [http://support.edokumenty.eu/trac/wiki/DeployerGuide/Upgrade link.] 
     263 
     264 
     265'''4. Aktualizacja PostgreSQLa do wersji 10/11'''  
     266 
     267Przystępujemy do aktualizacji PostgreSQLa do wersji 10/11. Po zainstalowaniu PostgreSQLa będą dostępne dwa klastry dla wersji 9.6 oraz wersji 10/11, odpowiednio na portach 5432 i 5433. Instalację przeprowadzamy za pomocą polecenia 
     268 
     269Aktualizujemy dotyczący pakietów dla nowej wersji Debiana obecnie jest to stretch 
     270{{{ 
     271deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main 
     272apt-get update 
     273}}} 
     274 
     275{{{ 
     276apt-get install postgresql-10 
     277}}}  
     278lub  
     279{{{ 
     280apt-get install postgresql-11 
     281}}} 
     282 
     283Po zainstalowaniu PostgreSQL a przed odtworzeniem bazy należy pamiętać aby wgrać pliki tssearch_data dla wyszukiwarki. 
     284{{{ 
     285wget http://support.edokumenty.eu/download/deployment/components/tsearch_data_polish_20120730.zip 
     286unzip tsearch_data_polish_20120730.zip 
     287cp tsearch_data_polish/* /usr/share/postgresql/[WERSJA_POSTGRESQL]/tsearch_data/ 
     288}}} 
     289Po tych czynnościach możemy przystąpić do odtworzenia bazy danych 
     290 
     291Możemy wykonać zrzut bazy z PostgreSQL na porcie 5432. 
     292{{{ 
     293#su - postgres 
     294$pg_dump -U edokumenty -f edokumenty_upgrade.sql edokumenty (polecenie zakłada że eDokumenty działają na bazie edokumenty i właścicielem bazy jest użytkownik edokumenty) 
     295}}} 
     296 
     297W nowym klastrze trzeba utworzyć użytkownika oraz bazę:  
     298{{{ 
     299$createuser -p 5433   --no-superuser --no-createdb --no-createrole http 
     300$createuser -p 5433   --no-superuser --no-createdb --no-createrole edokumenty 
     301$createdb -p 5433 -E UTF8 edokumenty -O edokumenty 
     302}}} 
     303 
     304Następnie wrzucamy do serwera psql zrzut wykonany chwilę wcześniej:  
     305{{{ 
     306$psql -p 5433 -U edokumenty -f edokumenty_upgrade.sql edokumenty 
     307}}} 
     308 
     309Następnym krokiem jest zatrzymanie PostgreSQL 
     310 
     311{{{ 
     312/etc/init.d/postgresql stop 
     313}}} 
     314 
     315W pliku konfiguracyjnym zmieniamy porty dla PostgreSQL aby nowy działał na domyślnym porcie 5432 
     316Starego PostgreSQL zmieniamy na 5433 
     317{{{ 
     318vim /etc/postgresql/9.6/main/postgresql.conf  
     319port=5433 
     320}}} 
     321 
     322W konfiguracji nowego PostgreSQL zmieniamy na 5432 
     323{{{ 
     324vim /etc/postgresql/10/main/postgresql.conf  
     325port=5432 
     326}}} 
     327 
     328W pliku konfiguracyjnym pg_hba.conf dla aktualnej wersji PostgreSQL dodajemy wpisy, 
     329{{{ 
     330vim /etc/postgresql/10/main/pg_hba.conf 
     331 
     332local edokumenty edokumenty md5 
     333local edokumenty http       md5 
     334}}} 
     335 
     336Następnym krokiem jest uruchomienie PostgreSQL 
     337{{{ 
     338/etc/init.d/postgresql start 
     339}}} 
     340 
     341Możemy również wykonać aktualizację clustra za pomocą poleceń opisanych w artykule [http://support.edokumenty.eu/trac/wiki/AdminGuide/PgUpgrade Upgrade PostgreSQL]  
     342 
     343W przypadku aktualizacji z Linux Debian 8 większość elementów została już wykonana przy okazji aktualizacji do tej wersji systemu. 
     344W Debian 8 powinniśmy już posiadać zaktualizowany repozytoria SVN opisane w poniższym artykule [http://support.edokumenty.eu/trac/wiki/AdminGuide/UpgradeDebian7to8 Aktualizacja systemy Debian 7 Wheezy do Debian 8 Jessie], a także podmieniony Zend Loader dla PHP 5.6, poprawnie prawnie skonfigurowanego Apache a także PostgreSQLa w wersji 9.6