Instalarea Apache 2.2 + PHP 5.2 + MySQL 5.1 sub Windows

Ultima actualizare: 19 Aprilie 2009

Introducere

Desi exista o droaie de pachete de astea ce le contin pe toate si au o gramada de arome, pe zi ce trece ajung la concluzia ca un developer serios nu se incurca cu mizerii si isi seteaza singur mediul de dezvoltare a aplicatiilor web. Ma rog, nu toate sunt mizerii, dar majoritatea fie sunt prea stufoase, fie inutile sau inutilizabile fara lucru manual – deci mai bine faci lucru manual din start. Asta in cazul in care nu vrei sa ramai o mimoza pentru tot restul vietii care transpira cand vine vorba sa adauge module noi mediului respectiv, sau pur si simplu sa se blocheze in parametrii de configurare relativ simpli. Nu sustin faptul ca este usor. De altfel patrunderea in tainele configurarii fine necesita timp si multa documentatie citita. Dar macar vreo cateva chestii de baza ar trebui cunoscute. Iar chestiile de baza pornesc cu instalarea.

Propozitie cheie: daca iti este lene sa iti configurezi acest mediu (lucru ce nu se intampla zilnic, iar experienta acumulata este benefica) atunci oare nu iti este lene sa te apuci sa programezi catusi de cat mai mult decat aplicatii gen “hello world”? Pentru a implementa solutii de o complexitate relativ mare ce necesita varii module este nevoie de mult mai multa munca pentru documentare decat pentru a configura un mediu de dezvoltare. In plus, din moment ce nu iti cunosti bine mediul in care ruleaza aplicatiile tale, cum poti avea nesimtirea sa sustii ca ai idee foarte bine ce face propria aplicatie? De unde vei sti ca va functiona corect si este portabila pe alta masina? Intrebarile acestea sunt multe, si nu, nu am de gand sa le transform in intrebari retorice. Raspunsurile sunt mai mult sau mai putin evidente.

O sa structurez acest articol in cativa pasi destul de simplu de urmat. Este ca in cazul in care se construieste o casa: se pleaca de la fundatie, si se termina treaba cu acoperisul. Deci ordinea va respecta logica si bunul simt, cu notiunea ca desi o sa incep cu Apache, MySQL deasemenea poate fi primul pas deoarece baza de date si serverul web nu sunt interdependente. PHP se integreaza cu Apache, deci regulile anterior mentionate indica faptul ca va fi instalat dupa el – aceasta pentru a nu fi nevoit sa faci instalarea PHP de doua ori.

Pasul 1: Instalarea Apache 2.2

In principiu primul pas ar fi verificarea faptului ca nici un alt proces nu asculta pe portul 80 ce in mod uzual este folosit de catre Apache. In mare chestii precum Skype ar trebui inchise inainte de instalare, pentru ca Skype are prostul obicei de a asculta pe porturile tipice HTTP si HTTPS (adica 80 si 443) printre altele. Pentru o solutie generalizata, utilitarul netstat ar trebui sa ofere solutia: Start > Run > cmd.exe iar in chestia aia neagra aka terminal (chestie pe care multi nu o pricep, in concluzie o urasc) se ruleaza urmatoarea linie:

netstat -a -p TCP

ce va returna toate porturile TCP ce sunt active. Daca apare o chestie ce se termina cu :80 in coloana “Local Address” este necesara oprirea aplicatiei ce ocupa acel port. Exemplu de situatie in care instalarea nu va fi cu succes:

 netstat si porturile TCP

Desi in trecut installer-ul oferit de Apache Foundation era destul de trist, sau buildul avea lacune (cea mai notabila: absenta suportului pentru SSL – deci nu se puteau folosi conexiuni criptate prin HTTPS), in prezent situatia s-a schimbat in bine. Nu mai este nevoie de build-uri 3rd party cu tutoriale complicate de instalare. Acest tutorial nu se vrea unul complicat, de unde si prezenta pozelor. Click pe ele pentru a le vedea mai mari. Desigur, anumite categorii de cititori se auto-exclud prin definitie. Desi suportul pentru criptare nu este obligatoriu pentru dezvoltare, este recomandat a-l avea la indemana in eventualitatea de a testa aplicatia cum se comporta in acest context – de altfel foarte recomandat daca se compun cai absolute din aplicatia PHP ce depind de context HTTP/HTTPS.

Pagina proiectului este: http://httpd.apache.org/download.cgi

Ultima versiune la ora actuala este 2.2.11, deci pe parcursul acestui tutorial voi folosi aceasta versiune. De aici se poate lua aceasta versiune folosind un mirror de Romania. Daca serverul este cazut, sau fisierul devine indisponibil, se poate oricand cauta o alternativa urmarind link-ul dat mai sus. In principiu dupa ce download-ul e gata, se executa pachetul ce tocmai a poposit pe disk:

apache_2.2.11-win32-x86-openssl-0.9.8i.msi

De aici instalarea e relativ banala pana la configurarea Server Information:

Apache 2 Server Information

In principiu pentru o masina de dezvoltare aceste chestii nu sunt relevante, deci poti lasa datele implicite. Pentru un server “de productie” in primul rand n-as recomanda Windows pentru Apache2+PHP si in al doilea rand nu cred ca acesta este locul potrivit pentru a trata acest subiect. Deci ma limitez la dezvoltatori. Bifa pentru “All Users” este puternic recomandata, precum si instalarea ca serviciu. In cazul instalarii ca serviciu, serverul va porni impreuna cu sistemul de operare.

La urmatorul pas, Setup Type, se alege “Custom”. Installer-ul vrea sa faca treaba pentru tine, dar asta nu inseamna ca o va face neaparat asa cum trebuie, sau cum e recomandat. Mai departe, optiunile din lista de chestii ce se pot instala pot fi lasate asa cum sunt. Documentatia este optionala deoarece se poate gasi online. Eu o instalez pentru ca spre deosebire de PHP si MySQL, nu se distribuie o arhiva CHM pe site-ul oficial cu aceasta documentatie. Restul chestiilor sunt recomandate. “Build Headers and Libraries” este necesar doar celor ce fac sporturi extreme, deci nu este cazul de fata.

Aici mai este totusi o chestie de facut. Instalarea acestei stive WAMPP (Windows Apache MySQ PHP Platform) – pun sub acest nume pentru a nu se confunda cu proiectul WAMP ce le impacheteaza pe toate, se poate face imprastiat pe disk, dar ca recomandari acestea ar trebui sa fie tinute in acelasi director, caile de pe disk sa nu contina spatii si sa fie cat mai scurte. In concluzie click pe “Apache HTTP Server 2.2.11”, iar in partea stanga jos e un buton “Change”:

 Apache 2 Custom Setup

Calea propusa de catre subsemnatul este:

C:\wampp\apache

Nu este obligatorie, este doar o recomandare. Dar folosind aceasta denumire, este suficient de clar ce fel de stiva este instalata.

 Apache 2 Custom Setup - Calea catre WAMPP

Se termina restul instalarii ce practic se rezuma la next, install, etc. La sfarsit ar trebui ca serviciul sa porneasca automat, iar jos langa ceas sa fie un panel de control pentru Apache 2.2. Pentru a valida instalarea, cu Web browserul preferat se viziteaza adresa: http://localhost/ iar daca totul e OK, ar trebui sa apara mesajul “It Works!”. Cam atat de la Apache.

Pasul 2: Instalarea PHP 5.2

Trecem la PHP 5.2.6 – ramura stabila 5.2 a PHP. Nu am ales o versiune mai noua (5.2.8 sau 5.2.9-2) pentru simplul motiv ca PHP 5.2.6 are un setup complet, in timp ce versiunile mai noi au o mana de module lipsa. Este drept ca se pot pune cele de la 5.2.6, dar este o munca ce nu va fi pe gustul cuiva ce acum incepe incet-incet sa puna gramada un mediu de dezvoltare. In plus, intre aceste versiuni nu au fost modificari majore. Ca o mica paranteza, PHP 5.3.0 va aduce modificari majore, dar momentan este disponibil doar ca versiune de test. De altfel, idea este sa avem un suport cat mai larg pentru dezvoltarea unei aplicatii. Exceptand cazurile in care nu exista alternative, limitarea la tehnologii vechi nu este de dorit. Oricum, in cazul branch-ului 5.2, de anul trecut si pana in prezent, nu s-a miscat mare lucru. S-a centrat atentia pe 5.3 si pe 6. Deci alegerea 5.2.6 este oarecum justificata.

Pentru ca versiunea este totusi una mai veche, link-ul de download este acesta. Dupa ce ati obtinut fisierul, executata-l. Da, este vorba despre:

php-5.2.6-win32-installer.msi

In continuare, treaba va merge ca pentru majoritatea installer-elor de Windows. Doar la Destination Folder este nevoie de o mica modificare:

PHP 5 Destination Folder

si anume faptul ca am folosit calea propusa/recomandata:

C:\wampp\php

pentru a pastra o structura consistenta.

Urmatorul pas este important, nu pentru ca vreau sa ii acord eu importanta, ci pentru ca aici se va alege optiunea de configurare ce va integra PHP cu serverul HTTP. Se alege “Apache 2.2.x Module” nu pentru ca spun eu ci pentru faptul ca versiunea de Apache instalata in acest tutorial este 2.2 (d’oh) si pentru ca alte metode de integrare cu Apache fie sunt lente, fie sunt ceva mai dificile, deci vor fi prezentate intr-un articol viitor.

PHP 5 Web Server Setup

Pasul urmator presupune oferirea directorului unde se afla fisierul de configurare al Apache 2.2. Installer-ul este suficient de destept astfel incat sa stie sa puna ceea ce trebuie acolo, atata timp cat nu sunt probleme intre scaun si tastatura. Am ales calea precum zice imaginea urmatoare:

PHP 5 Apache Configuration Directory

si anume:

C:\wampp\apache\conf\

ce respecta conventia anterior facuta.

Pasul urmator presupune alegerea componentelor PHP ce vor fi instalate. Ceea ce propune installer-ul este un setup minim, destul de inutil de altfel. Pentru a beneficia de intreaga putere a PHP este nevoie si de extensiile sale. Astfel, in sectiunea “Program” aleg si “Script Executable”, dar fara inregistrarea extensiei .php pentru a fi executata de catre PHP pe motiv ca atunci cand dau dublu click pe un .php prefer sa se deschida scriptul intr-un editor, in loc sa il ruleze. Oricum, daca este parte a unei aplicatii Web, atunci rularea de catre interpretor va fi inutila din start.

Sectiunea “Extensions” este partea stringenta. De altfel motivul pentru care am ales PHP 5.2.6. Le poti instala pe toate, dar se va incarca mediul in mod inutil. Alta solutie ar fi sa fie incarcate pe masura ce un proiect avanseaza, dar refacerea configuratiei aduce ceva batai de cap si necesita o cunoastere destul de buna a extensiilor. O lista recomandata de catre subsemnatul include: bzip2, bz2_filter, Crack, Curl, domxml, EXIF, Fileinfo, GD2, Gettext, GMP, pecl_http, mcrypt_filter, Multi-Byte String, Mcrypt, Ming, MySQL, MySQLi, OpenSSL, PDO – iar din sectiunea PDO – MySQL si SQLite, mai departe, phar, rar, Sockets, Standard PHP Library – Types Addon, SQLite, ssh2, Tidy, timezonedb, XML-RPC, XSL, zip, zip_filter. Lista este departe de a fi completa si inafara de MySQL si SQLite, alte engine-uri pentru baze de date au fost lasate pe afara, desi exista suport pentru ele. Deasemenea am lasat pe afara extensiile ce ofera suport pentru diverse protocoale, printre care si cele tipice pentru e-mail. La nevoie se pot include. Multe dintre ele se prea poate sa fie inutile pentru proiecte relativ simple.

Sectiunea “Extras” contine doar documentatie, dar nu isi are rostul. Online se gaseste documentatie actualizata, fie direct pe site, fie disponibila ca download. Deci o sa o las ca “debifata”.

PHP 5 Chose Install Items

Dupa terminarea instalarii, o sa ai un Apache 2.2 integrat cu PHP 5.2. Mai este nevoie totusi de o modificare:

C:\wampp\apache\conf\httpd.conf

contine optiunile de configurare ale Apache. Ce n-a facut installer-ul PHP si trebuie corectat de mana este activarea index.php ca fisier de index. Se cauta urmatorul bloc de configurare:

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

Acesta se schimba in

<IfModule dir_module>
DirectoryIndex index.php index.html index.htm
</IfModule>

Am adaugat din burta index.htm pentru ca unii folosesc si aceasta extensie pentru fisiere HTML. Restart la Apache. Daca ai lasat optiunile implicite, atunci ai langa ceas acel Apache Monitor ce are butoane pentru Start, Stop, Restart – deci nu este nevoie sa se sape prin managerul de servicii al Windows.

Actualizare: NU apela la butonul Restart dupa instalarea PHP! Am constatat cu stupoare ca aplicand tutorialul meu, desi C:\wampp\php e in %PATH%, doar Stop+Restart il aduc pe calea cea buna. Detalii despre %PATH% mai jos.

Apache 2 Service Monitor Restart

In directorul:

C:\wampp\apache\htdocs

se gaseste directory root-ul aplicatiilor Web ce vor fi servite de catre configuratie. Pentru teste, index.html se va redenumi in index.php iar continutul lui va fi schimbat in:

<?php

phpinfo();

dupa care se va accesa din nou adresa: http://localhost/. Ar trebui sa apara informatiile despre PHP si mediul in care ruleaza + informatii despre extensii si configurare.

Ponturi:

  1. pentru reconfigurarea PHP este suficienta rularea installer-ului din nou, urmata de apelarea cu incredere la butonul “Change”. Este recomandat ca extensiile instalate de catre installer sa nu fie scoase din setup direct din fisierul de configurare, desi aceasta este posibil. Reconfigurarea este posibila si fara installer, dar nu este de dorit pentru toata lumea.
  2. daca apari erori la pornirea Apache (C:\wampp\apache\logs\error.log – contine log-ul de erori) atunci trebuie verificat daca installer-ul PHP si-a pus propria cale in %PATH%. Pentru mai multe detalii apelati la: Environment Variable. %PATH% face parte din aceasta categorie si se poate modifica:
  • Windows XP: Properties la My Computer -> Advanced -> Environment Variables
  • Windows Vista/Windows 7: Properties la My Computer, e un link “Change Settings” pe acolo, ce va deschide un panou asemanator cu cel din Windows XP. De aici procedura e identica, si anume

 In sectiunea System Variables, exista variabila cu numele Path. Se verifica daca contine calea C:\wampp\php. Daca nu, se adauga acolo. Separatorul de astfel de cai este “;” (fara ghilimele!!!) deci atentie la sintaxa.

Windows Environment Variables

Note:

(1) Nu constituie erori de pornire acele “PHP Notice”. Erorile sunt explicite si arata faptul ca anumite biblioteci dinamice nu se pot incarca pentru ca Apache nu le gaseste. Acele biblioteci (dll-uri) ce nu sunt gasite de catre Apache se pot copia intr-un director de sistem gen C:\Windows sau C:\Windows\system32 dar aceasta nu este o optiune prea desteapta. Deasemenea se pot copia si in directorul bin al Apache, dar din nou nu este o optiune desteapta. In fond si la urma urmei exista doua categorii de utilizatori de Windows: cei ce il utilizeaza corect – desi este mai dificil, scuteste utilizatorul de multe probleme clasice pe termen indelungat – si utilizatorii ce il fac praf suficient de repede datorita administrarii extrem de proaste. Nu exista cale de mijloc.

(2) In cazul Windows XP o sa apara “Warnings” in legatura cu bibliotecile suplimentare necesare anumitor extensii (gen libmysql.dll pentru MySQL si MySQLi). Solutii: a) Reboot la OS dupa instalarea Apache+PHP. Sub anumite versiuni de Windows (exemplu: XP, la Vista nu am remarcat datorita problemei descrise mai jos) Apache nu baga in seama un %PATH% modificat – deci este nevoie de un reboot pentru a-l aduce pe calea cea buna. Avand in vedere faptul ca anumite chestii din PHP depind de un environment variable, chestia de mai sus este bine sa fie retinuta. b) copierea dll-urilor cu pricina ce se gasesc in directorul PHP si sunt cerute de catre extensii din directorul bin al Apache. Desi, aceasta optiune este una destul de trista. As zice din barda.

Windows Vista: intamplator astazi m-am lovit de instalarea stivei prezentare in acest articol sub Windows Vista. Din moment ce subsemnatul si Vista suntem certati (pe buna dreptate) detaliul de mai sus mi-a scapat. Pana in prezent, integrarea de fata functioneaza doar sub Windows XP si Windows 7 (Beta si RC). Windows Vista are nevoie de un parametru suplimentar atunci cand se configureaza integrarea dintre Apache 2.2 si PHP 5.2, in rest codul PHP apare in browser in loc sa fie interpretat intr-un mod foarte retard. Problema se mai intalneste si la unele pachete de acestea all-in-one. Sectiunea aceasta ce in mod standard se gaseste la sfarsitul fisierului httpd.conf dupa rularea installer-ului PHP:

#BEGIN PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
PHPIniDir “C:/wampp/php/”
LoadModule php5_module “C:/wampp/php/php5apache2_2.dll”
#END PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL

trebuie sa mai contina inca o chestie, deci sa arate astfel pentru Windows Vista:

#BEGIN PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
PHPIniDir “C:/wampp/php/”
LoadModule php5_module “C:/wampp/php/php5apache2_2.dll”
AddType application/x-httpd-php .php
#END PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL

Pasul 3: Instalarea MySQL 5.1

In principiu inainte de instalare ar trebui verificat daca nu ruleaza nimic pe portul 3306, adica portul implicit pe care asculta serverul MySQL. Daca nu mai exista o alta instalare de MySQL, atunci slabe sanse. Pentru identificarea precisa, se va folosi metoda prezentata la instalarea Apache.

MySQL 5.1.34 este ultima versiune stabila disponibila la momentul redactarii acestui articol, deci il vom folosi pe acesta. Desi mai exista MySQL 5.0 ca branch stabil, folosit destul de mult in productie (de altfel mai exista si 4.1 prin productie, dar il urasc cu pasiune din motive obiective) totusi am mers pe ultima chestie lansata. Are vreo cateva chestii noi ce in buna parte tin de viteza si de extensibilitate.

Spre deosebire de Apache 2.2 si PHP 5.2, pe pagina oficiala a MySQL exista atat build-uri de 32-bit, cat si build-uri de 64-bit. Primele doua se distribuie oficial doar ca binare de 32-bit. In principiu se recomanda build-ul ce se potriveste cel mai bine platformei, 64-bit in cazul subsemnatului, cu notiunea ca pot apela si la unul de 32-bit. Link-ul de download pentru build-ul pe 32 este acesta, in timp ce pentru cel de 64 este acesta. De acolo se alege “Windows MSI Installer” iar din dreapta link-ul de “Download”. In cazul in care mirror-ul ales automat pentru “Download”este invalid sau are probleme, se poate alege si “Pick a mirror” de unde se alege unul mai apropiat de casa.

Eu am plecat la drum cu:

mysql-5.1.34-winx64.msi

iar utilizatorii unui Windows 32-bit este obligatoriu sa plece la drum cu:

mysql-5.1.34-win32.msi

In rest, instalarea este relativ identica.

In pasul in care installer-ul intreaba de  “Setup Type”, se alege “Custom”. Se va debifa documentatia deoarece este disponibila online. Optional se poate lasa. Eu prefer sa downloadez ultimele arhive cu documentatie ce sunt la zi. In rest, nu mai este nevoie de nimic deoarece optiunile sunt multumitoare. Ce mai trebuie schimbata este calea de instalare, ce va folosi modelul prezentat mai sus in cazul Apache si PHP.

Later Edit: mi-a scapat un mic aspect ce nu l-am mentionat data trecuta, si anume faptul ca serverul se poate instala intr-o locatie iar data storage-ul in alta. Acestea sunt imaginile actualizate:

 MySQL 5 Server Path

 MySQL 5 Datafiles Path

 MySQL 5 Install Paths

Se continua instalarea. La aparitia acelor chestii despre MySQL Enterprise, se da “Next” pana in sfarsit se ajunge la ultimul pas:

MySQL 5 Wizard Completed

Bifa aia e importanta, dupa ea se va porni procesul de configurare al serverului MySQL si pe aici unii s-ar putea sa isi prinda urechile.Se continua clasicul click-Next pana configuratorul intreaba despre tipul configurarii:

MySQL 5 Server Instance Configuration

Urmatoarea alegere este atat de evidenta, incat nu voi pune o poza ce sa o arate. Se va alege “Developer Machine” la server type. Urmatorul pas cere modul de utilizare a bazei de date. Cel implicit, “Multifunctional Database” este potrivit pentru acest tip de instalare. La urmatorul pas despre “InnoDB Tablespace Settings” se lasa optiunile implicite. Presupun ca pe C:\ exista suficient spatiu.

Urmatorul pas presupune setarea numarului de conexiuni concurente. De regula, desi in procesul de dezvoltare sunt rare situatiile in care optiunea implicita, “Decision Support (DSS)/OLAP” ce presupune un numar maxim 20 conexiuni concurente s-ar putea sa fie suficient, subsemnatul foloseste optiunea “Manual Setting” si pune numarul la 50.

MySQL 5 Server Instance Configuration Concurent Connections

Mai departe, la setarile de retea, “Enable TCP/IP Networking” este obligatoriu. Nu este necesara activarea unei exceptii in firewall daca baza de date nu va fi folosita inafara masinii. Eu deschid o gaura in firewall pentru acest port pentru ca se intampla sa accesez o baza de date din exterior. Exista alternativa la TCP/IP si anume “named pipes”, dar aceasta va fi lasata deoparte pe moment. Se justifica alegerea pentru masinile ce ruleaza baze de date impreuna cu aplicatii ce le folosesc, in rest, configurarea este putin mai dificila. Web-ul este gandit ca modular, deci in practica, exceptand o parte a Web hosturilor shared (sau cei ce au bani doar de un VPS/masina dedicata), serverul MySQL va rula pe o masina dedicata, in concluzie TCP/IP va fi singura cale de a comunica cu bazele de date. “Enable Strict Mode” este recomandat de catre installer si de catre subsemnatul.

MySQL 5 Server Instance Configuration Networking Options

Urmatorul pas este unul foarte important. O greseala in alegere aici se poate propaga mai departe in optiunile implicite si mai departe in probleme mari. Totul ar fi bine si frumos daca ar exista un singur set de caractere, dar din pacate nu este asa. Iar daca intentionezi sa dezvolti o aplicatie ce va primi altceva inafara de caractere latine si uzuale, este cazul sa pui bifa pe “Best Support For Multilingualism”. Se pot face hack-uri la nivel de cod PHP pentru a putea fi folosit setul de caractere implicit, dar aceasta inseamna ca toate sirurile de caractere ce se indreapta catre baza de date sa treaca prin acel filtru, iar o mica neatentie poate sa duca la ore de debugging inutil. In concluzie, mai bine se lucreaza direct cu UTF8.

MySQL 5 Server Instance Configuration Default Charset

Mai departe urmeaza setarile serviciului. Da, este recomandat ca MySQL sa fie instalat deasemenea ca serviciu. Bifa pentru lansare automata iarasi e recomandata. Deasemenea recomand adaugarea directorului bin al MySQL in %PATH%. Trebuie doar o bifa. Eu pun numele serviciului MySQL5.1 pentru ca am un fetis cu consistenta, iar Apache se pune Apache2.2 fara ca sa ma intrebe – deci pastrez ideea. Nu e obligatoriu.

MySQL 5 Server Instance Configuration Windows Options

Pasul urmator presupune setarile de securitate. Sub nici o forma nu este recomandata crearea unui “Anonymous Account”. Se recomanda crearea unei parole suficient de puternice pentru utilizatorul root ce este un superuser pentru MySQL. A nu se confunda cu root din *nix – utilizatorii MySQL nu sunt utilizatori de sistem. Serverul are propriul sistem de management al utilizatorilor. Deasemenea nu se recomanda activarea accesului remote pentru root.

MySQL 5 Server Instance Configuration Security Options

Se continua setup-ul si gata si cu MySQL.

Bonus: instalarea phpMyAdmin 3.1

phpMyAdmin este un frontend MySQL popular si destul de bun la ceea ce face. Desi initial nu l-am prea suportat, pe servere la distanta se poate dovedi un aliat puternic. In concluzie este o aditie buna si pentru dezvoltarea locala, desi exista si alte optiuni, recomandate de altfel sa fie la indemana: MySQL Query Browser, MySQL Administrator si MySQL Workbench – scule facute de cei de la MySQL AB – adica Sun – adica Oracle – daca este sa pastrez istoricul cumparaturilor. Mai exista si SQLyog, un frontend ce imbina elemente de Query Browser si de Administrator. Unii prefera in locul lui HeidiSQL – desi acesta din urma stie mai putine.

De aici am luat ultima versiune stabila, si anume 3.1.5. Instalarea este relativ mai complicata decat in cazul chestiilor de mai sus pentru ca este aplicatie PHP si nu am apelat la metoda cea mai usoara, dar am apelat la cea mai comoda pe termen lung. Am downloadat:

phpMyAdmin-3.1.5-all-languages.zip

A urmat extragerea arhivei si redenumirea directorului phpMyAdmin-3.1.5-all-languages din interiorul ei in phpmyadmin. L-am mutat in C:\wampp\. Acesta trebuie sa contina fisierele phpMyAdmin. Daca contine alt director, atunci acela trebuie redenumit in phpmyadmin si mutat in WAMPP. Configurarea phpMyAdmin presupune copierea fisierului config.sample.inc.php in config.inc.php si modificarea lui. Modificari necesare:

  • definirea $cfg[‘blowfish_secret’] cu un sir de caractere arbitrar. Preferabil sa fie cat mai de neinteles. ATENTIE: pentru a nu invalida sintaxa config.inc.php trebuie sa se foloseasca apostrof nu ghilimele pentru a defini sirul blowfish_secret. Conform documentatiei phpMyAdmin acesta are o dimensiune maxima aparenta de 46 caractere. Un generator bun poate fi algoritmul sha1, desi setul de caractere este mai redus decat in cazul in care se foloseste un generator ce sa includa varii caractere speciale. Pentru sha1 apeleaza cu incredere la: http://www.shell-tools.net/index.php?op=hash_sha
  • schimbarea $cfg[‘Servers’][$i][‘extension’] din mysql in mysqli. MySQLi aka MySQL Improved > MySQL.

Mai are si alte optiuni, dar nu sunt necesare si nu trebuie schimbate. Documentatia phpMyAdmin le explica pe indelete.

Urmeaza integrarea cu Apache. Desi directorul s-ar fi putut pune pur si simplu in interiorul C:\wampp\htdocs s-ar putea sa incurce pe acolo, sau sa fie sters din greseala. Deci apelarea la un alias este o optiune mult mai recomandata. Mai intai voi prezenta pasii, dupa care voi oferi detalii pentru doi dintre ei. Aici sunt pasii:

  1. crearea unui fisier text gol in C:\wampp\apache\conf\extra. Acesta se va numi httpd-phpmyadmin.conf pentru a pastra conventia de nume ce o are Apache pentru fisierele de configurare. Fisierul se va gasi ca download la sfarsitul articolului, alaturi de toate celalte resurse.
  2. acest fisier va trebui inclus in config-ul cel mare, si anume C:\wampp\apache\conf\httpd.conf. Se include fisierul anterior creat, chiar dupa lucrurile configurate automat de catre installer-ul PHP (scrie in comentariu, liniile ce incep cu # sunt considerate comentarii). Locul acesta se gaseste la sfarsitul fisierului.
  3. restart la Apache.
  4. vizitarea adresei http://localhost/phpmyadmin pentru validare.

Continutul lui httpd-phpmyadmin.conf:

Alias /phpmyadmin “C:/wampp/phpmyadmin”

<Directory “C:/wampp/phpmyadmin”>
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
DirectoryIndex index.php

<IfModule mod_php4.c>
AddType application/x-httpd-php .php

php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>

<IfModule mod_php5.c>
AddType application/x-httpd-php .php

php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_value include_path .
</IfModule>
</Directory>

ATENTIE:  datorita modului retard prin care WordPress inlocuieste ghilimelele cu niste chestii ce seamana cu ele dar sunt inclinate (practic alte caractere), metoda copy-paste a textului de mai sus nu se preteaza fara o curatare a mizeriilor. Se recomanda download-ul fisierului de la sfarsitul articolului.

Includerea fisierului de mai sus in httpd.conf prespune adaugarea la sfarsitul httpd.conf a:

# Include the phpMyAdmin configuration file
Include conf/extra/httpd-phpmyadmin.conf

In principiu cam in aceasta consta o instalare de phpMyAdmin. Fisierul de configurare pentru Apache este inspirat de cel din Debian, desi are vreo cateva chestii noi in el, si vreo cateva chestii scoase. Atentie: nu incerca chestii gen “I know better”, mai ales daca iti vine vreo idee creata sa scoti linia cu “Allow from all”. Apache va refuza sa serveasca directorul.Warning-ul din footer, si anume: “Your PHP MySQL library version 5.0.51a differs from your MySQL server version 5.1.34. This may cause unpredictable behavior.” se poate ignora. Inca n-am intalnit probleme folosint clientul de MySQL 5.0, si nu, nu am avut timp sau chef sa caut sau sa imi compilez unul pentru MySQL 5.1.Va urma.

Niste imagini pe post de dovezi (in cazul 3.1.5 arata la fel, nu am actualizat si imaginea):

phpMyAdmin 3 Login WindowphpMyAdmin 3 Logged In

Download:

apache_2.2.11-win32-x86-openssl-0.9.8i.msi – installer-ul Apache

php-5.2.6-win32-installer.msi – installer-ul PHP

mysql-5.1.34-winx64.msi – installer-ul 64-bit al MySQL

mysql-5.1.34-win32.msi – installer-ul 32-bit al MySQL

phpMyAdmin-3.1.5-all-languages.zip – release-ul de phpMyAdmin

httpd-phpmyadmin.conf – fisierul de configurare al phpMyAdmin ce il foloseste Apache.

WAMPP-images.zip – imaginile folosite pe parcursul articolului

Recomand totusi sursele oficiale pentru fisierele de mai sus. Le-am pus pentru comoditatea unora cu speranta sa nu fie abuzate, in caz contrar, vor fi scoase de la download, sau voi bana pe cei ce le abuzeaza. Inclin totusi catre a doua varianta.

Documentatie online:

Apache – http://httpd.apache.org/docs/2.2/

PHP – http://www.php.net/manual/en/

MySQL – http://dev.mysql.com/doc/refman/5.1/en/

Manuale:

PHP – http://www.php.net/download-docs.php

MySQL –  http://dev.mysql.com/doc/

Recomand versiunile CHM ale manualelor.

15 thoughts on “Instalarea Apache 2.2 + PHP 5.2 + MySQL 5.1 sub Windows

  1. n00b

    phpMyAdmin – Ошибка

    Невозможно загрузить расширение mysql! Проверьте настройки PHP. – Документация

    merge totul pina la configurarea phpmyadmin – acolo ma inglod 😐 mai pentru nooby imi poti explica te rog mult 🙁

  2. legendofmir

    E O MICA GRESEALA , LA CHESTIA CU SETAREA PHP , SA EXPLICAT CEVA ESENTIAL DAR ALATURI DE WIN VISTA , SI DE FAPT SE REFERA LA XP, CARE MULLLTI DIN LUME FOLOSESC XP CA E CEL MAI BUN SI STABIL DIN TOATE DE LA MICROSOFT. DECI SA REVIN

    RETINETI DACA INSTALATI SISTEMUL WAMPP TOT , E TOTUL OK , DAR PENTRU WINDOWS XP , IN APACHE SCRIETI LA SFIRSIT ASTA:

    #BEGIN PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
    PHPIniDir “C:/wampp/php/”
    LoadModule php5_module “C:/wampp/php/php5apache2_2.dll”
    #END PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL

    O GASITI SI MAI SUS DAR E SCRIS PENTRU VISTA, SI MULTI NU-I INTERESEAZA ,VISTA, CA MOA, CA E O CLONA A XP, CU BRIZ BRIZURI.

    MERSII MULT ACESTUI TOPIC SUPER FINE SI DESTUL DE PREA SIMPLU EXPLICAT, PENTRU TOTI NOOBII. MERSI MAN , SI MA TESTEZ.

    Very helpfull this topic, nice mans are here!!

    http://www.legendofmir.ro
    http://www.doomnezeu.ro

  3. crisral

    Buna,

    Am urmat toti pasii de mai sus, insa cand vreau sa instalez Mysql Server, la sf cand dau execute imi apare eroare la Start Service(Prepare configuration si Write configuration file sunt executate ok)

  4. SaltwaterC Post author

    @crisral: ce eroare returnează? E una explicită eventual însoțită de un cod sau la sfârșitul instalării?

  5. crisral

    La sf instalarii cand dau Execute, se bifeaza automat primiele 2 etape(Prepare configuration si Write configuration file) iar cand tb sa execute Start Service, in loc de bifa apare x, si se opreste.
    Nu apare niciun cod.

  6. SaltwaterC Post author

    Știu că am mai întâlnit buba aceasta sub Vista … dar nu mai țin minte exact procedura prin care am reparat serviciul. Dacă încerci să-l pornești din consola de servicii (services.msc – poate fi pornită din run) returnează o eroare explicită despre ceea ce nu-i place?

  7. Legendofmir

    Eu stiu ca la executoare exista , niste optiuni la Proprietities pentru compatibilitate “Compatibility” cu alte sisteme de operare, si e foarte indicat ca la orice problema aparuta la compatibilizati cu XP , cam toate executoarele, folosesc inima “core” de XP, restul sistemelor fiind doar clone imperfecte de XP. La butonul compatibility din Proprieties ajungeti cu un click dreapta pe mouse si deschideti ochii mari, iar cine nu vede bine sa-si ia ochelari. 🙂

    Sper sa ajute! Hia pa!

  8. SaltwaterC Post author

    Opțiunile de compatibilitate presupun emularea unei versiuni anterioare de Windows, în caz contrar va rula “nativ”. Nu cunosc detalii prea multe despre cum se emulează sau dacă se folosește vreo formă de virtualizare.

    Chestia cu compatibilitatea de XP era valabilă undeva acum câțiva ani. În prezent nu prea mai este cazul decât în situația aplicațiilor ce nu mai sunt întreținute, aplicații ce pot să aibă unele probleme sub Vista/7 – mai ales Vista. Am identificat destule chestii ce se întâmplă strict sub Vista, dar sub XP/7 totul era OK. În cazul aplicațiilor .NET, chestia de compatibilitate se rezumă la versiunea framework-ului, deoarece .NET prin definiție presupune rularea în mașină virtuală a codului respectiv.

    Chestia cu serviciul de MySQL am putut să o reproduc acum multă vreme sub Vista, dar nu mai știu cum se rezolvă, cel puțin nu fară vreun cod de eroare. De altfel n-am mai pus mâna pe Windows de vreo câteva săptămâni, iar atunci când pun mâna, nu mai folosesc stiva de mai sus ci IIS 7.5 + Zend Server Community Edition 5.0.1 (PHP 5.3.2) + MySQL + phpMyAdmin (cele din pachetul Zend Server nu sunt actualizate).

  9. Legendofmir

    O fi cum o zici dar una e clara , toate realizarile ulterioare de la XP incoa, is clone imperfecte de Xp, na sa apara ceva nou de la Microsoft, si singurul cel mai stabil si fara probleme SO pare a fi totusi WinXp. Nu prea mai trenbuie updateuri , si briz-brizuri ce maninca memoriile, si eu unul nu vreau ca in fiecare 2-3 ani sa tot fac alt PC , cu toate ca posibilitati am. Sincer n-am chef k nu se merita. M-am saturat de joacele alea de 15Gb, care nu de multe ori arata mai prost ca muuuulte ce au kit pe un simplu CD.

    De aia ma orientez pe firme serioase , nu cele de tip STEAM, ce de fapt a devenit un server de publicitate de selling.
    w,w,w,legendofmir,ro

  10. SaltwaterC Post author

    XP-ul e “clonă” de 2000 iar 2000 e “clonă” de NT 4.0. Le-am utilizat pe toate, inclusiv versiunile server. E Windows NT, e normal să semene cu versiunea anterioară. Până și Windows 7 este de fapt Windows NT 6.1 conform versionării. De fapt Microsoft depune eforturi serioase pentru a menține pe cât posibil un API și un ABI stabil, compatibil cu versiunile anterioare. Este sistemul de operare (dintre cele utilizate în mod comun) ce o face cu cel mai mare zel, pentru că aceasta este metoda lor de dominare pe piața de software: vendor locking. Găsești pe Wikipedia cu ce se mănâncă și de ce. Și nu mă refer la utilizatori, utilizatorii sunt victime colaterale, ci la ISV (Independent Software Vendors).

    Cel mai stabil și fără probleme Windows este 7. Singura lui bubă sunt resursele utilizate, uneori excesiv, deși la 8GiB RAM nu îl simt că își alocă 3 și ceva pentru chestiile lui + o mână de servicii. Un sistem de operare fără update-uri este țintă sigură, mai ales XP ce are totuși o vârstă. Vezi distracția cu Conflicker de la A până la E. Impresia de securitate bazată pe existența unui antivirus este ceea ce numele spune: impresie. În plus, Windows XP este vulnerabil în mod implicit, adică “user error” – cont de administrator din secunda 0 în care poți să dai click pe desktop-ul cu iarbă verde. Vezi articolul meu “De ce USER și nu admin“, scris la o zi după ce mi-am instalat Windows XP pe notebook. Încă rulează, actualizat la zi. Din 1 Decembrie 2007. Diferă doar particula “user” versus cei ce îl reinstalează după X luni. Dar utilizat corect este mai dificil decât Ubuntu (doar FreeBSD îl depășeste la dificultate), în bună parte pentru că în loc de UAC trebuie să folosesc scripturi de administrare și autentificare pentru fiecare rahat ce nu e tot timpul Out Of The Box (Run As …). În concluzie, mulți se vor da bătuți pentru că “multiuser” este un concept prea dificil pentru utilizatorul “non tech”, ignorant până la limita absurdului. Apropo de Ubuntu, chiar i-am arătat unui coleg de servici cât de ușor de utilizat a devenit ultimul Ubuntu (OOTB, shell free).

    Printre altele, ai puctat corect. Sofware-ul ar trebui să fie și altceva înafară de motor pentru industria hardware. Sunt de aceeași părere, ultimul upgrade mi l-am făcut anul trecut și nu mai simt nevoia, chiar dacă financiar îmi permit chestii cu mult peste medie. Dar atâta timp cât pronunți cuvântul Windows, indiferent de versiune, o anumită cantitate considerabilă de bloatware este acolo, una datorată chiar acelui API/ABI stabil și suportul pentru backward compatibility.

  11. Legendofmir

    Da multumesc pentru ultimele precizari , corect cu XP clona de NT, dar sa nu uitam ca NT era doar destinat normal numai serverelor si nu utilizatorilor de casa, deci nu se refera la consum, de aia nici nu am facut referire la el. Deci cel de baza ramine totusi WinXP, care e cel mai perfect la ora acuala tehnic, pentru home users. Celelalte au un raport resurse/eficienta/stabilitate muult mai mic ca XP.
    XP=maninca resurse relativ putine pentru un pc cu 512Mb/1Gb(pentru mine e foarte important.)
    XP=Eficienta lui in joace e f.f.f superioara celorlalte clone.
    XP=stabilitate in orice conditii fata de orice firma de software cu suport mult mai larg de drivere.

    Sa nu uitam ca nu iei(ai) un PC, doar sa te uiti la un film, navigare Inet, si ceva poze, sau Messanger.
    Asa iti iei o pocnitoare de telefon celular, si atit. Multi vor acum si sint interesati, de joace, procesarii video de RIP-uire, …si de astea care papa PC si acolo XP isi spune cuvintul.
    Te asigur.

    Daca vrei necazuri si bataie de cap treci pe celelalte. :):):P

  12. SaltwaterC Post author

    Eficiență și Windows sunt doi termeni mutual exclusivi. Cât despre stabilitatea unui Windows XP neactualizat, dau două exemple contemporane (nu din istoria pre-SP2 unde era ciur): Conflicker și atactul asupra Google din China (bazat pe vulnerabilități din IE6).

    La capitolul joace, GTX-ul 260 pe care îl dețin suportă DX10, la fel ca și unele titluri pe care le joc, deși 7 vine cu DX11. XP – lipsă. Suport drivere – poate pentru chestiile mai vechi de 2005-2006. În rest, producătorii de hardware nu sunt dobitoci să NU suporte noile platforme … din moment ce noile platforme le stimulează vânzările.

    PS: necazuri și bătaie de cap sub 7? 3 BSOD-uri în beta, în rest crash free în RC și Pro Retail pe care le-am avut/am. Action Center oferă soluții la probleme, inclusiv cele ce țin de 3rd party apps/3rd party drivers, chestie ce în XP și Vista nu se “regăsesc”.

  13. Daniel

    MII DE MULTUMIRI SaltwaterC!!! cine nu si-a dat seama “Nume utilizator” este “root”. eu mi-am dat seama mai greu. credeam ca am introdus eu aiurea altceva la instalare. ma panicasem… daca nu merge din prima un restart pc rezolva problema (cel putin in cazul meu). inca o data, MULTUMESC MULT!

Leave a Reply

Your email address will not be published. Required fields are marked *