Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Michal Švarc

Stran: [1] 2 3 ... 6
1
Server / Na co nezapomenout při přeinstalaci serveru s Ubuntu?
« kdy: 23. 10. 2026, 13:10:27 »
Mám na serveru poměrně starou verzi ubuntu (20.04) s novějším php než má distribuce (a určitě je tam víc takových programů, ne že bych si všechny pamatoval).
Mám za to že nemá smysl zkoušet upgrade 20 > 22 > 24 > 26 bez ohledu na to kolik mezistupňů by tam nakonec bylo.
Takže jsem se rozhodl pro výmaz aktuálního serveru a čistou instalaci nejnovějšího Ubuntu s LTS, tedy 26.04.1 LTS.

Server je na hukotu, a ten sice umožňuje vytvořit zálohu serveru, ale taková záloha nejde stáhnout mimo infrastrukturu poskytovatele.
Takže ji sice udělám ale bude mi pouze k tomu, abych mohl věci vrátit do původního stavu, pokud se upgrade nepodaří.

Před výmazem serveru pochopitelně zazálohuju všechny vhosty včetně jejich databází. (zajímalo by mne zda stačí záloha krz web, resp. phpmyadmin), ale stejnak mám v plánu udělat i zálohu na serveru pomocí mariadb dump.

Také bych měl zálohovat konfiguraci serveru.
Používám minimálně web, mail, ssl, certifikáty (certbot), php, ufw, Vím že půjde určitě o soubory
Kód: [Vybrat]
*.conf
*.ini
adresáře
Kód: [Vybrat]
*.d
možná i soubory jako je
Kód: [Vybrat]
*.defs
*.pem
Nevím jestli to je možné, ale rád bych, kdyby ta nová instalace šla nastavit tak, abych nemusel měnit DNS záznamy, ve kterých jsou krome A a AAA záznamů minimálně dkim, dmarc, spf a google-site-verification.

Předem děkuji všem za připomínky, které si tu sklidím ;)

2
Server / Dvě instalace php-imagick ze zdroje
« kdy: 14. 06. 2024, 16:53:54 »
Nedávno jsem upgradoval PHP na části serveru.
Mám dvě verze php které jedou zároveň php8.1, php8.3 a asi i díky tomu také dvě verze phpize: phpize8.1, phpize8.3
Pro instalaci imagicku jsem použil lehce upravený postup z Githubu:
Kód: [Vybrat]
cd /usr/share
git clone https://github.com/Imagick/imagick
mv imagick php-imagick8.1
git clone https://github.com/Imagick/imagick
mv imagick php-imagick8.3
cd php-imagick8.1
phpize8.1 && ./configure
make
make install
cd ../php-imagick8.3
phpize8.3 && ./configure
make
make install

Postup se zdá být ok, do chvíle kdy make install vypíše
Kód: [Vybrat]
Installing shared extensions:     /usr/lib/php/20230831/
Installing header files:          /usr/include/php/20230831/

Vypsal jsem si co to přesně dělá
Kód: [Vybrat]
make install --dry-run
/bin/bash /usr/share/php-imagick8.3/libtool --tag=CC --mode=install cp ./imagick.la /usr/share/php-imagick8.3/modules
test -d modules && \
/usr/share/php-imagick8.3/build/shtool mkdir -p /usr/lib/php/20230831
echo "Installing shared extensions:     /usr/lib/php/20230831/"
rm -f modules/*.la >/dev/null 2>&1
/usr/share/php-imagick8.3/build/shtool install -c modules/* /usr/lib/php/20230831
if test "ext/imagick/php_imagick_shared.h"; then \
for i in `echo ext/imagick/php_imagick_shared.h`; do \
i=`/usr/share/php-imagick8.3/build/shtool path -d $i`; \
paths="$paths /usr/include/php/20230831/$i"; \
done; \
/usr/share/php-imagick8.3/build/shtool mkdir -p $paths && \
echo "Installing header files:          /usr/include/php/20230831/" && \
for i in `echo ext/imagick/php_imagick_shared.h`; do \
if test "imagick"; then \
src=`echo $i | /usr/bin/sed -e "s#ext/imagick/##g"`; \
else \
src=$i; \
fi; \
if test -f "/usr/share/php-imagick8.3/$src"; then \
/usr/share/php-imagick8.3/build/shtool install -c -m 644 /usr/share/php-imagick8.3/$src /usr/include/php/20230831/$i; \
elif test -f "/usr/share/php-imagick8.3/$src"; then \
/usr/share/php-imagick8.3/build/shtool install -c -m 644 /usr/share/php-imagick8.3/$src /usr/include/php/20230831/$i; \
else \
(cd /usr/share/php-imagick8.3/$src && /usr/share/php-imagick8.3/build/shtool install -c -m 644 *.h /usr/include/php/20230831/$i; \
cd /usr/share/php-imagick8.3/$src && /usr/share/php-imagick8.3/build/shtool install -c -m 644 *.h /usr/include/php/20230831/$i) 2>/dev/null || true; \
fi \
done; \
fi

V této situaci by mne zajímalo pár věcí:
1) Nejsem si tak úplně jistý, jestli mohu použít více příkazů `make instal za sebou` - to co mi dělá `make instal` jsem si uvědomil až po spuštění na tom druhém adresáři a tahle otázka směřuje k tomu, zda je lepší oba adresáře smazat a zkusit to celé s drobnými úpravami znovu, nebo mohu na tom co už mám znovu spustit `make install` a udělá to to samé
2) Koukal jsem co je v adresáři `/usr/lib/php`, kam se 'instaluje' imagick, a jsou tam mimo jiné adresáře 8.1, 8.3.
Myslíte, že by bylo v pořádku tu nainstalovanou cestu vylepšit tímto adresářem?
Kód: [Vybrat]
cd /usr/lib/php/
mv 20230831 8.1/20230831
to samé by pak třeba šlo udělat i v adresáři
`/usr/include/php/`, kde takové adresáře zatím nejsou

3
Server / Re:Jak přeinstalovat ImageMagick Easy Install?
« kdy: 30. 04. 2024, 07:14:06 »
Povedlo se, ale stejnak bych byl radši, kdyby existovala nějaká lepší metoda na odinstalaci věcí, co se instalují pomocí sady příkazů jako je
Kód: [Vybrat]
configure
make
make install

4
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 30. 04. 2024, 07:08:54 »
Pochybuji, že to někomu pomůže, ale uzavřel bych to tím, že můj problém spočíval v první fázi v použití balíků pro ubuntu, kde je tak či tak zastaralá verze ImageMagicku6 a v druhé, při řešení problému, v používání tak staré verze IMEI (otázka na od/re/instalaci: https://forum.root.cz/index.php?sid-forum=5lq6jkksk09odhrse0pj5nkl16&topic=28974.0), že bylo skoro s podivem, že se to nerozbilo dříve. Po jejím odebrání a instalaci krz nejnovější verzi instalátoru, mi převody do avifu již fungují.

Mým největším problémem byl neexistující update částí, co nejsou součástí balíčkovacího systému apt (tedy instalace jako: configure, make, make install).

5
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 26. 04. 2024, 09:25:09 »
A co přesně je myšleno tímhle?
Kód: [Vybrat]
To jsem si (evidentně chybně), pokusil odpovědět na jednu z vlastních otázek.
Samozřejmě nejsem na stejným systemu jako ty...
po kompilaci
Kód: [Vybrat]
php -i | grep ImageMagick
...
i ten tvů exec chyby nehází,..

máš nainstalovaný libheif? Mají tam nějaky devel prostředí v dockeru koukni na `docker/developing/Dockerfile` a zřejmě místo libavif používají libheif jako dekoder. Já mám oboje v systemu,..

Kód: [Vybrat]
libavif 1.0.4-2 [installed] Library for encoding and decoding .avif files
libheif 1.17.6-5 [installed] An HEIF and AVIF file format decoder and encoder
Kód: [Vybrat]
libavif mám akorát tuhle https://github.com/AOMediaCodec/libavif (1.0.4), buď nemám nějaký potřebný repositář, nebo Ubuntu 20.04 aktuálně liavif z balíčkovacího systému nenabízí
Kód: [Vybrat]
libheif1/focal,now 1.6.1-1build1 amd64 [installed,automatic]
Kód: [Vybrat]
php -i | grep ImageMagicku mě nezobrazí vůbec nic

6
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 24. 04. 2024, 10:40:57 »
Takže mám za to, že bez imagicku pro php to nejde, ale není třeba ho instalovat z balíčkovacího systému.
Vrátil jsem to vše do původního stavu, odinstaloval php8.1-imagick se všemi přidruženými balíčky pomocí příkazu uvedeného u IMEI
Kód: [Vybrat]
apt remove "*imagemagick*" --purge -y && apt autoremove --purge -yPak jsem nainstaloval imagick pomocí
Kód: [Vybrat]
git clone https://github.com/Imagick/imagick
cd imagick
phpize && ./configure
make
make test
make install
pak jsem v adresáři
Kód: [Vybrat]
/etc/php/8.1/mods-available  vytvořil soubor imagick.ini
a vložil do něj cestu k imagick.so, který se mi vytvořil
Kód: [Vybrat]
extension=/usr/lib/php/20210902/imagick.sov adresáři
Kód: [Vybrat]
/etc/php/8.1/fpm/conf.dvytvořil link na ten soubor
Kód: [Vybrat]
ln -s /etc/php/8.1/mods-available/imagick.ini 20-imagick.ininačež jsem restartoval apače a pro jistotu i php
Kód: [Vybrat]
systemctl reload apache2
systemctl reload php8.1-fpm
a phpinfo se tváří že avif podporuje, což předtím nedělalo, nicméně imagemagick7.1.1-31, ze kterého tu informaci bere stále avif nerad.

Přestože v `magick identify -list format` se ten formát vyskytuje
Kód: [Vybrat]
echo shell_exec("mogrify -quality 60 -resize 200x200 -format avif /var/www/webovyserver.xz/web/data/**/*.jpeg 2>&1");
echo shell_exec('mogrify -quality 50 -resize 30x30 -path /var/www/webovyserver.xz/web/data/min/0 /var/www/webovyserver.xz/web/data/0/*O.avif 2>&1');
se tváří takhle:
Kód: [Vybrat]
mogrify: unable to open image 'avif:': No such file or directory @ error/blob.c/OpenBlob/3571.
mogrify: unrecognized image format `avif' @ error/mogrify.c/MogrifyImageCommand/4952.
mogrify: no decode delegate for this image format `AVIF' @ error/constitute.c/ReadImage/746.
Vzhledem k tomu že imagick pro php byl generován na základě tohohle imagemagicku, nepředpokládám že by šel.

7
Server / Re:Zprovoznění podpory image/avif v PHP 8.1
« kdy: 24. 04. 2024, 08:37:33 »
Citace
magick identify -list format
vypíše avif?
Ano, vypíše.
Kód: [Vybrat]
AVIF  HEIC      rw+   AV1 Image File Format (1.17.6)

8
Server / Jak přeinstalovat ImageMagick Easy Install?
« kdy: 23. 04. 2024, 10:32:23 »
Kód: [Vybrat]
https://github.com/SoftCreatR/imeiStačí smazat adresář se starou verzí, případně script z cronu a nainstalovat novou?

9
Server / Zprovoznění podpory image/avif v PHP 8.1
« kdy: 23. 04. 2024, 06:02:28 »
Linux: Ubuntu 20.04

Nedávno, před pár týdny, jsem měl podobný problém, imagemagick prostě přestal převádět obrázky na avif. Tehdy jsem zjistil, že se nějak ztratila knihovna libavif, a nakonec jsem zkusil nainstalovat avif podporu pomocí https://github.com/AOMediaCodec/libavif , respektive https://github.com/AOMediaCodec/libavif#build-everything-from-scratch verzi, protože v balíčkovacím systému nic jako libavif již není a přestože jsem nepřišel na to proč, pár týdnů to fungovalo. Teď už zas ne, takže hledám, co by se dalo dělat.

Pro začátek, je potřeba mít na to knihovnu php8.1-imagick, nebo to jde i bez ní?

php8.1-imagick má u nás na serveru závislost na imagemagick-6-common libmagickcore-6.q16-6 libmagickwand-6.q16-6
a s tím ni aktuálně avif nefunguje

při php8.1-imagick nainstalovaném, jsem našel soubor /etc/php/8.1/fpm/conf.d/20-imagick.ini kde se dá změnit cesta, pomocí
Kód: [Vybrat]
extension=/usr/local/lib/ImageMagick-7.1.1/modules-Q16HDRI/coders/magick.so a adresář
/var/lib/php/modules/8.1/fpm/enabled_by_maint/ s prázdným souborem imagick

po odinstalaci zmíněných imagemagick-6* a tím i php8.1-imagick, které se jich drží jako klíště, byl soubor /etc/php/8.1/fpm/conf.d/20-imagick.ini smazán a prázdný soubor imagick se přesunul do /var/lib/php/modules/8.1/fpm/disabled_by_maint/

tak jsem si ten soubor vytvořil znovu a pro jistotu přesunul zpět i ten prázdný soubor

nevím, ale doufám, že by mi to mohlo v php8.1fpm pomoci používat tu verzi z imei, v phpinfo jsem nicméně nezaregistroval žádnou změnu

10
Používám převážně webový prohlížeč Librewolf, a když něco nejde (jako třeba přidávání příspěvků sem do fóra) zkusím nejdříve Firefox.

Librewolf 123.0-1 mi z nějakého důvodu zobrazuje doménové jméno v adresním řádku https://はじめよう.みんな/ jako https://xn--p8j9a0d9c9a.xn--q9jyb4c/
Firefox 123.0-1 a Opera One 107.0.5045.21 to zobrazují správně.

Zajímalo by mě jakým způsobem vlastně tohle zobrazování funguje a jelikož to librewolf evidentně blokuje, skrývá se v tom nějaké bezpečnostní riziko?

Zkoušel jsem to zobrazit i ve starších webových prohlížečích, a zdá se mi že ty toto zobrazování nepodporují (ale zase, zkoušel jsem jen eolie a midori)

11
Software / Re:Je šance na zápis ze tří vstupů zároveň?
« kdy: 07. 11. 2023, 04:31:50 »
děkuji za tipy

k vysvětlení keydef jsem našel https://unix.stackexchange.com/questions/546081/keydef-of-sort-man-page

zatím jsem skončil u
Kód: [Vybrat]
apt search php8.[1-3] | sort -k1.7 | tr -s "\n"což je pro mé účely (porovnání verzí instalovaných a neinstalovaných knihoven php), dostačující

12
Software / Je šance na zápis ze tří vstupů zároveň?
« kdy: 07. 11. 2023, 02:28:29 »
Je jedno zda do souboru, nebo na výstup.

Rád bych výpisy těchto tří příkazů
Kód: [Vybrat]
apt search php8.3
apt search php8.2
apt search php8.1

setřídil tak, že se nevypíše první příkaz, druhý příkaz a třetí příkaz za sebou, ale vypíše se první řádek prvního, první řádek druhého, první řádek třetího, druhý řádek prvního, atd.

asi by šlo ty výstupy načíst ve scriptu do polí o číslech řádků a pak to vypsat cyklem, ale zajímalo by mě, jestli neexistuje lepší/snažší přístup

navíc, úplně nejlepší by bylo, seřadit to podle toho, co je za těmi šesti znaky ve výpisu (php8.x)

13
Vývoj / Re:Dokáže Bash spustit příkaz z proměnné?
« kdy: 21. 10. 2023, 17:54:44 »
Daj:
Kód: [Vybrat]
ps2=`echo $prikaz1|sh`
Děkuji.

Funguje to (ať už se závorkou nebo se zpětným apostrofem).

14
Vývoj / Re:Dokáže Bash spustit příkaz z proměnné?
« kdy: 12. 09. 2023, 15:14:26 »
Tady trochu vysvětlujou, proč to nefunguje: https://unix.stackexchange.com/a/506859
Tady je něco, co se tváří jako řešení, ale nezkoušel jsem: https://stackoverflow.com/questions/43752854/bash-pipe-character-in-variable-for-command-substitution

Každopádně pro googlení jsou důležitý výrazy "bash", "command substitution" a "pipe"
Díky za tipy.
Skrytí do funkce jsem zatím nezkoušel. protože důvod proč jsem to původně dával do proměnné, spočívá v tom, proměnnou složit na základě vstupů a posléze spustit

Pořád jsem v tom moc nepokročil, ale díky nastavení set -x na které se mi povedlo úplně zapomenout už vím, proč to vlastně vyhazuje chybu
Kód: [Vybrat]
prikaz1cast1="ps -Al U michal"
prikaz1cast2="grep vidsave"
prikaz1="$prikaz1cast1 | $prikaz1cast2"
echo ${prikaz1}
ps=$($prikaz1)                       # nefunkční
#ps=`$prikaz1`                       # kdo by to řekl?, chová se stejně jako předchozí
echo je v pohodě a vytiskne ps -Al U michal | grep vidsave
při pokusu o spuštění se to nicméně přeloží pro bash jako
ps -Al U michal '|' grep vidsave
což celkem pochopitelně skončí chybou
zkusil jsem jen tak, co to udělá přidat středníky...
Kód: [Vybrat]
prikaz1="$prikaz1cast1; | $prikaz1cast2;"výsledkem pokusu o spuštění byl příkaz, dá li se tomu tak říci ps -Al U 'michal;' '|' grep 'vidsave;'

15
Vývoj / Re:Dokáže Bash spustit příkaz z proměnné?
« kdy: 12. 09. 2023, 05:50:10 »
Zkusil jsem si to přepsat ještě jednou:
Kód: [Vybrat]
prikaz1cast1="ps -Al U michal"
        prikaz1cast2="grep vidsave"
        prikaz1="$prikaz1cast1 | $prikaz1cast2"

        prikaz2cast1="ps -Al U michal"
        prikaz2cast2="grep yt-dlp"
        prikaz2="$prikaz2cast1 | $prikaz2cast2"
       
        echo -en " ${barvaTextBila}${prikaz1}${barvaTextZrusit}\n"
        #ps=$(ps -Al U michal | grep vidsave) # funkční
        ps=$($prikaz1cast1 | $prikaz1cast2)   # funkční
        #ps=$($prikaz1)                       # nefunkční
       
        ps+="\n\n"
        echo -en " ${barvaTextBila}${prikaz2}${barvaTextZrusit}\n"
        #ps+=$(ps -Al U michal | grep yt-dlp) # funkční
        ps=$($prikaz2cast1 | $prikaz2cast2)   # funkční
        #ps+=$($prikaz2)                      # nefunkční
        echo -en " ${barvaTextZluta}${ps}${barvaTextZrusit}"
Dle mého názoru vadí svislítko uložené do proměnné, jen by mě zajímalo proč vlastně a velmi pochybuji o tom, že by mi při hledání důvodu pomohlo něco jako ps --help

Stran: [1] 2 3 ... 6