Michal Čihař - Archive for Jan. 1, 2007

Aktualizace phpMyAdmina

Aktualizace aplikace na novou verzi v produkčním prostředí občas může způsobit značné problémy. Jaká úskalí vás mohou potkat při aktualizaci phpMyAdmina?

Přechod na novou verzi

phpMyAdmin již mnoho verzí počítá se snadnou možností aktualizace a tak jediná věc, která je obvykle potřeba je překopírování konfiguračního souboru config.inc.php do nové verze. Pokud jste však z nějakých důvodů používali prehistorickou verzi phpMyAdmin 2.3.0, budete muset konfigurační soubor převést do nového formátu (skript scripts/convertcfg.pl vám v tom bude nápomocen). Nyní můžete novou verzi vyzkoušet a vše by mělo fungovat.

Změny nastavení mezi verzemi

Jak již bylo řečeno, není potřeba při aktualizaci phpMyAdmina měnit jeho nastavení. Nicméně přesto může být zásah do konfiguračního souboru config.inc.php užitečný, protože nové verze přidávají nové vlastnosti, které třeba budete chtít využít. Tyto paramtery jsou popsané v  dokumentaci a jejich výchozí hodnoty naleznete v souboru libraries/config.default.php . Tento soubor nepoužívejte jako config.inc.php , jeho použití může mít za následek nefunkčnost při přechodu na další verzi. Pokud vám výchozí hodnoty vyhovují, není potřeba nic měnit, automaticky se použijí, jinak vložte tuto konfigurační volbu do svého konfiguračního souboru.

Témata

Vaše stará témata nemusí být kompatibilní s novou verzí. I když se phpMyAdmin v současné době snaží být kompatibilní i se staršími verzemi témat, někdy jsou změny v rozhraní příliš velké a stará témata prostě nebudou vypadat dobře. V tomto případě vám nezbyde než čekat na vydání nové verze tématu nebo provést potřebné změny pro docílení dobrého vzhledu vlastními silami.

Nastavení přístupu k MySQL serverům

phpMyAdmin není omezen jen na použití s jediným MySQL serverem. Základní nastavení pro jeden server již bylo popsáno dříve, teď je na čase postoupit k nastavení pro složitější konfigurace a podrobněji popsat možnosti, které phpMyAdmin nabízí.

Typ přihlášení

Základní možnosti přihlašování byly stručně popsány dříve , ale jejich výhody a nevýhody si teď ještě probereme podrobněji. Volba typu přihlášení se do konfiguračního souboru píše následovně:

 
  $cfg['Servers'][$i]['auth_type'] = 'typ';
 

config

Připojení je nadefinované v konfiguračním souboru, omezení přístupu by mělo být zajištěno jiným způsobem. Pokud používáme phpMyAdmina jen na lokálním počítači, může se jednat o nejpohodlnější variantu.

cookie

Přihlašování pomocí koláčků, kdy se uživatel přihlašuje stejným uživatelským jménem a heslem jako do MySQL. Autentizace tedy necháváme na MySQL serveru se všemi výhodami a nevýhodami, které z toho plynou. Pozor například na zpřístupnění všech účtů vzdáleně, tedy i těch, které jsou v MySQL povoleny jen z lokálního počítače.

Heslo se do koláčků ukládá šifrované klíčem uloženém na serveru ( $cfg['blowfish_secret'] ), čímž se poněkud snižuje riziko útoku v případě ukradení koláčku (ale není mu zabráněno úplně, takže dodržovat nějaké bezpečnostní zvyklosti je pořád potřeba).

Jedná se asi o nejpoužívanější volbu a kromě pevně definovaného MySQL serveru umožňuje také uživateli zadat libovolný MySQL server po nastavení:

 
  $cfg['AllowArbitraryServer'] = TRUE;
 

Pozor však pokud phpMyAdmin běží na web serveru za firewallem, v tomto případě může uživatel získat při povolení zadání libovolného serveru i přístup k interním MySQL serverům, ke kterým by jinak přístup neměl.

http

HTTP přihlašování je dost podobné přihlašování pomoci koláčků, platí pro ni téměř to samé. Jen není možné provést plnohodnotné odhlášení (HTTP autentizace toto neumožňuje) a heslo na straně klienta není ukládáno šifrovaně.

signon

Tato metoda je určena pro integraci phpMyAdmina do jiných systémů, kdy se uživatel přihlašuje heslem do jiného systému a ten phpMyAdminovi při vstupu do něj předá přístupové údaje do MySQL. Podrobněji se implementaci tohoto typu budu věnovat v některém s dalších článků, takže vás zatím jen odkážu na anglický popis na wiki .

Parametry připojení

Většina parametrů připojení asi není potřeba moc popisovat a jejich názvy celkem vypovídají co asi daná volba dělá:

 
  $cfg['Servers'][$i]['host'] = 'mysql.example.net';
$cfg['Servers'][$i]['port'] = '4242';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['ssl'] = false;
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['extension'] = 'mysql';
 

V případě, že MySQL provozujete na standardním portu (nebo soketu v případě lokálního počítače), jediné co opravdu potřebujete nastavit je $cfg['Servers'][$i]['host'] . V případě novějšího PHP je také vhodné nastavit používané rozšíření PHP na mysqli :

 
  $cfg['Servers'][$i]['extension'] = 'mysqli';
 

Více serverů

Více serverů není pro phpMyAdmina žádným problémem. Jistě jste si všimli $i zadávaného ve všech konfiguračních parametrech. Touto proměnou je možné nadefinovat libovolné množství serverů, ze kterých si uživatel bude moci vybra. Proměnná se používá místo přímého udání čísla pro snadnější případný přesun serverů nebo kopírování parametrů. Konfigurace pro více serverů pak v podstatě jen spočívá v kopírování a upravování parametrů pro jednotlivé servery. Například tedy může vypadat takto:

 
  /* Servers configuration */
$i = 0;

/* Server localhost (config:root) [1] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'mysql';

/* Server localhost (config:franta) [2] */
$i++;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'franta';
$cfg['Servers'][$i]['password'] = 'heslo';
 

Ve výchozím nastavení se phpMyAdmin automaticky pokusí připojit k prvnímu serveru. Pokud chceme, aby se připojoval k jinému, zadáme jeho pořadové číslo do proměnné $cfg['ServerDefault'] , pokud chceme aby si uživatel nejdříve vybral server, zadáme nulu:

 
  $cfg['ServerDefault'] = 0;
 

Time for Christmas

Today is last day when I'll be more or less online, so if you wanted something to me this year, it's probably already too late :-). I will somehow follow emails, but do not expect much.

Tomorrow I'll spend by traveling back to Czechia (NGO - FRA - PRG), then I will just enjoy time being home and not being pushed to deliver tons of papers to somebody.

This is also most likely last blog post this year, so I can not skip the merry Christmas and happy new year phrases ;-).

Gammu stable version 1.17.0

I wanted to make 1.16.0 last release this year, but unfortunately one bug preventing reading of all SMS messages from some AT phones sneaked in, so I decided to make another quick release. Changelog is really short:

  • Fixed reading of messages from AT phones using CMGL.

Other change is that I started to produce additional binary build for Windows - it does not use any external libraries (so no MySQL, PostgreSQL or Gettext support) and links statically. So you can just copy single binary and it should work anywhere.

You can download from usual place: http://cihar.com/gammu/

Vytváření binárek pro Windows bez použití Windows

Jakmile jsem jednou vydal Wammu pro Windows, upletl jsem si na sebe bič. Chyby se opravují v nových verzích a shánět nějaké Windows na to, abych mohl vydat novou verzi mě už opravdu nebaví, takže binárka pro Windows je za aktuálním stavem docela daleko. Ale od čeho máme Wine? S tím by to přece mohlo jít nějak udělat…

Na celou myšlenku kompletní automatizace mě vlastně přivedl patch pro aktualizaci intrukcí pro vytvoření verze pro Windows . Sice tento návod měl spoustu nevyřešených problémů, ale nasměroval mě směrem, který se dal použít - vše udělat pomocí Pythonu pro Windows nainstalovaného ve Wine. Doposud jsem používal o něco obskurnější cestu s ručním linkováním proti rozbalenému Pythonu a občas věci prostě nefungovaly tak jak by měly.

Po úspěšném zkompilování python-gammu přišlo na řadu vytvoření instalačního balíčku z Wammu, protože většina uživatelů na Windows prostě není schopná (nebo ochotná) instalovat Python a jednotlivé moduly ručně. Bohužel Py2Exe , který pro tyto účely používám, trpí nějakou drobnou chybou, která po znásobení nenaimplementovanou funkcí ve Wine, způsobí, že to prostě nefunguje . Naštěstí je ve zmiňovaném bugu návod, jak to pomocí PE Tools opravit (je jen chybný nějaký údaj v PE hlavičce).

Po vytvoření binárky už jen stačí vytvořit instalátor. Naštěstí má Inno Setup i kompilátor pro příkazovou řádku, takže to už bylo bez jakýchkoliv komplikací.

Bohužel testování ve Wine však nezaručí, že program půjde spustit i na Windows (třeba výše zmiňovaná chyba v PE hlavičce Wine vůbec nevadí), ale snad se časem podaří verzi pro Windows odladit do rozumného stavu. Pokud se snad někdo chce zapojit do testování a má Windows, stahovat může dočasně tady .

Jak vypadají výsledné skripty pro kompilaci se můžete podívat v SVN pro Gammu , python-gammu a Wammu .

Looking for Windows testers of Wammu

After half day of playing with Wine, MinGW and friends, I managed to be able to automatically build Windows versions of both python-gammu and Wammu. However I do not have environment to actually test these versions (except for Wine), so I would really welcome if some Windows users could do some testing. I expect some strange crashes at beginning, but hopefully we will be able fix it to produce working Wammu version for Windows in future.

You can get the installer here: http://tmp.cihar.com/wammu-0.26-setup.exe

It's NOT final or stable version, but as the only changes which happened since last release were either minor or related to cross compilation, it should be equal to combination of Gammu 1.16.0, python-gammu 0.24 and Wammu 0.25, so don't be confused by versions.

PS: Okay, when application works in Wine, it does not mean it will work in Windows, see bug report for details.

Důležité je množství a ne kvalita

Když jsem před čtyřmi měsíci odjížděl do Japonska, myslel jsem, že tu budeme dělat na nějakém smysluplném projektu. Když už si někdo zaplatí 10 lidí z Evropy, tak snad jen tak nevyhodí peníze. Bohužel opak se ukázal pravdou.

Dnes jsme odevzdávali větší část našeho projektu. Včera bylo připraveno něco přes 2000 stránek textu a večer přišel tento mail:

WE NEED YOUR HELP!!!
We are facing critical situation. We must deliver to ******* tomorrow morning our time.
However ******* is asking us to provide more documentation.
They mentioned volume was important. Their management will see only volume.
Therefore we are asked additional 1,000 pages documentation.
VOLUME IS MATTER!!

Vytvořit 1000 stránek během noci není jen tak, takže jsme jim dali POSIX standard Part 1 (535 stránek) a Eclipse basic tutorial (592 stránek). Japonci byli šťastní, že mají dalších 1100 stránek a my rádi, že s tím nemáme práci. Co na tom, že to s projektem nijak nesouvisí :-). Nakonec to pěkně zabalili do bedny a odvezli k zákazníkovi. Aneb jak dnes prohlásil kolega: „I want ten kilos of PikeOS evaluation“.

A na závěr několik statistik z tiskárny: za 3 měsíce se tu vytisklo 75000 stránek (z toho 20000 od včerejška), což při méně než 20 lidech v kanceláři dává pěkný průměr 45 stránek na člověkoden :-).

Wammu 0.25

I just released version 0.25 of Wammu. This release brings new icon set thatnks to David Corrales and fixes various crashes. Full list of changes:

  • Fall back to Add methods if Set is not supported.
  • Fixed phone number validation.
  • Fixed crash when org.freedesktop.Notifications service is not provided.
  • Correctly report why guided wizard can not connect to phone.
  • New navigation icons, thanks to David Corrales.

There is still no binary for Windows. I don't have time and environment for maintaining them. Volunteers are welcome!

We need quantity and not quality

Working on the project here at Japan is sometimes really fun. Tomorrow we have important delivery and this afternoon out Japanese colleagues decided that 2000 pages describing our software solution is not enough. They need at least 500 extra pages. Fortunately it could be any existing documentation, so we randomly choose POSIX standard Part 1 (535 pages) and the Eclipse basic tutorial (592 pages). Japanese guys were really happy that they have 1100 more pages and we're happy that we don't have to produce more documents. Now I only wonder why the hell customer is interested in quantity of paper and not in quality of work.

Rychlá instalace

Chcete si phpMyAdmina nainstalovat a nevíte jak na to? Tento článek vysvětlí základní pojmy a provede vás nepříliš komplikovanou instalací.

Odkud instalovat?

Na tuto otázku vám odpoví stránka s odkazy na stáhnutí . Pokud se rozhodnete použít distribuční balíček (což vám doporučuji pokud je to možné), budete mít trochu usnadněnou cestu, ale umístění některých souborů se může lišit. V případě některého s instalačních balíčků pro Windows už nejspíš bude phpMyAdmin rovnou nastaven a v tomto článku se moc zajímavých informací nedozvíte :-).

Co potřebujete?

Web server s podporou PHP, MySQL server a samozřejmě prohlížeč WWW stránek (nejlépe s podporou javascriptu a CSS).

Co phpMyAdmin obsahuje?

Po rozbalení staženého archívu (nezapomeňte rozbalit včetně adresářů) získáte spoustu souborů a adresářů. Jako uživatele vás většina z nich nemusí zajímat, takže popíšeme jen ty nejdůležitější. Kořenový adresář obsahuje soubor Documentation.html , což je dokumentace k verzi, kterou jste si právě nainstalovali (téměř jistě se bude lišit od odkazovaného dokumentu, který je pro poslední vývojovou verzi). V tomto adresáři dále nalezneme ukázkový soubor konfigurace config.sample.inc.php , který můžeme použít pro vytvoření konfiguračního souboru config.inc.php . Ale nebojte se, existuje i jednodušší způsob nastavení. Tento soubor je PHP skriptem, proto při jeho úpravách dbejte na zachování syntaxe PHP.

V adresáři scripts pak nalezneme různé užitečné skripty. Například create_tables.sql pro vytvoření tabulek pro rozšíření možností phpMyAdmina , nebo setup.php , který použijeme pro nastavení.

Rychlé nastavení

Již nějaký ten pátek obsahuje phpMyAdmin skript pro nastavení. Pokud ho spustíte , asi dostanete podobná varování jako na ukázkovém serveru. Nemožnost uložení konfigurace na serveru ničemu nevadí, stále si můžete konfigurační soubor stáhnout, HTTPS připojení doporučuji použít pokud to je možné, zabráníte tím přenášení vašich nezašifrovaných hesel po internetu.

Co všechno je potřeba nastavit? V podstatě jen připojení k serveru. V sekci „Servers“ klikneme na tlačítko „Add“ a můžeme zadat parametry připojení. Vhodné rozšíření pro připojení k MySQL je automaticky zjištěno, tak nám pro zatím stačí zvolit typ přihlašování (viz článek o  instalaci a zabezpečení , doporučuji cookie ) a jméno serveru (případně port nebo soket pokud používáme nestandardní hodnoty).

Po kliknutí na zelené tlačítko „Add“ konfigurační skript zkontroluje zadané hodnoty a a zobrazí nám přehled současné konfigurace. Nyní můžete projít i další možnosti nastavení, ale pro připojení k MySQL serveru už víc nepotřebujete.

Stačí tedy v sekci „Configuration“ zvolit tlačítko „Download“, stáhnout konfiguraci a umístit jí jako config.inc.php do kořenového adresáře phpMyAdmina. Nyní by se nám po přístupu na hlavní stránku phpMyAdmina měla objevit přihlašovací obrazovka jako na ukázkovém serveru .