Instalare PHP/IIS. Exemplu aplicat pe WP Installer si phpMyAdmin

Instalare WordPress pe IIS

WordPress este o aplicatie de publicare de bloguri. Cea mai simpla cale de a instala WordPress este de a-l descarca de pe Windows Web App Gallery, sectiunea Blogs.

Instalarea s-a facut pe urmatoarea configuratie:

  • Windows 7
  • IIS 7.5
  • PHP 5.3.2
  • MySQL 5.1.41
  • WordPress 2.9.2

Download

Ultima versiunea poate fi descarcata de la adresa: http://wordpress.org/download/. Dezarhivati fisierele in directorul C:\Inetpub\wwwroot\wordpress sau alt director pe care il doriti.

Baza de date

Creati o baza de date pentru WordPress. De asemenea creati un utilizator care sa aiba drepturi pe aceea baza de date.

Fisierul de configurare

In directorul C:\Inetpub\wwwroot\wordpress redenumiti fisierul wp-config-sample.php in wp-config.php.

Modificati apoi in fisierul wp-config.php

  • DB_NAME – numele bazei de date
  • DB_USER – numele utilizator cu drepturi pe baza de date
  • DB_PASSWORD – parola utilizator
  • DB_HOST – localhost daca se afla pe acelasi server sau IP-ul serverului in caz ca se afla pe alt server
  • AUTH_KEY, SECURE_AUTH_KEY,LOGGED_IN_KEY,NONCE_KEY- chei unice

<?

define(‘DB_NAME’, ‘wordpress’);

/** MySQL database username */
define(‘DB_USER’, ‘nume_utilizator_cu_drepturi_pe_baza_de_date_wordpress’);

/** MySQL database password */
define(‘DB_PASSWORD’, ‘parola_utilizator’);

/** MySQL hostname */
define(‘DB_HOST’, ‘localhost’);

** Database Charset to use in creating database tables. */
define(‘DB_CHARSET’, ‘utf8’);

/** The Database Collate type. Don’t change this if in doubt. */
define(‘DB_COLLATE’, ”);

/**#@+
* Authentication Unique Keys.
*
* Change these to different unique phrases!
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
*
* @since 2.6.0
*/
define(‘AUTH_KEY’, ‘put your unique phrase here’);
define(‘SECURE_AUTH_KEY’, ‘put your unique phrase here’);
define(‘LOGGED_IN_KEY’, ‘put your unique phrase here’);
define(‘NONCE_KEY’, ‘put your unique phrase here’);
/**#@-*/

/**
* WordPress Database Table prefix.
*
* You can have multiple installations in one database if you give each a unique
* prefix. Only numbers, letters, and underscores please!
*/
$table_prefix = ‘wp_’;

/**
* WordPress Localized Language, defaults to English.
*
* Change this to localize WordPress. A corresponding MO file for the chosen
* language must be installed to wp-content/languages. For example, install
* de.mo to wp-content/languages and set WPLANG to ‘de’ to enable German
* language support.
*/
define (‘WPLANG’, ”);

/* That’s all, stop editing! Happy blogging. */

/** Absolute path to the WordPress directory. */
if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);

/** Sets up WordPress vars and included files. */
require_once(ABSPATH . ‘wp-settings.php’);
?>

Instalare

Accesati linkul http://localhost/wordpress/wp-admin/install.php

Dupa instalare se va genera o parola pentru utilizatorul admin. cu care puteti intra in contul de administrator.

Intrati cu numele de utilizator si parola creata in contul de administrator.

Dupa ce veti intra in contul de administrator ecranul va arata ca in imaginea urmatoare.

Rewrite URL

Pentru a crea “linkuri prietenoase” este necesar sa mai faceti cateva modificari.

Intrati in contul de administrator la adresa: http://localhost/wordpress/wp-admin/ si accesati meniul Permalinks de unde selectati unul din formatele existente.

Am ales in acest exemplu: http://localhost/wordpress/2010/04/sample-post/ si salvati.

Creati fisierul web.config (daca nu exista) in acelasi director in care e instalat WordPress si introduceti urmatoarea regula:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name=”Main Rule” stopProcessing=”true”>
<match url=”.*” />
<conditions logicalGrouping=”MatchAll”>
<add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” />
<add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” />
</conditions>
<action type=”Rewrite” url=”index.php” />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>

Puteti observa in IIS Manager regulile sub forma:

Salvati si acum puteti vedea in browser rezultatul:

Instalare phpMyAdmin

phpMyAdmin reprezinta o aplicatie scrisa in PHP pentru administrarea bazelor de date MySQL.

Download

Ultima versiunea poate fi descarcata de la adresa: http://www.phpmyadmin.net/home_page/downloads.php. Dezarhivati fisierele in directorul C:\Inetpub\wwwroot\phpmyadmin sau alt director pe care il doriti.

Baza de date

Creati o baza de date pentru phpMyAdmin. De asemenea creati un utilizator care sa aiba drepturi pe aceea baza de date.

Fisierul de configurare

In directorul C:\Inetpub\wwwroot\phpmyadmin redenumiti fisierul config.sample.inc.php in config.inc.php.

Modificati urmatoarele variabile din fisierul de configurare:

//Necesar pentru decriptarea cookie-urilor. Ar trebui sa fie cat mai complex.
$cfg[‘blowfish_secret’] = ”;

//Vom seta o autentificare bazata pe cookie
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;

Acum accesati http://localhost/phpmyadmin/ si introduceti utilizatorul si parola:

Daca numele de utilizator si parola sunt in regula veti vedea urmatorul ecran.

Resurse

http://learn.iis.net/page.aspx/724/install-and-configure-php/
http://learn.iis.net/page.aspx/280/install-wordpress-on-iis/

Read more...

FastCGI si WinCache ca mecanisme de accelerare a performantei

Performanta PHP pe Windows a fost imbunatatita constant. In prezentarea lui Ilia Alshanetsky (Core PHP Developer) de la conferinta CooFoo 2010 (10-12 martie 2010) referitoare la PHP 5.3, acesta afirma ca performanta a fost imbunatatita pe Windows cu 40%. Prezentarea o gasiti la adresa: http://ilia.ws/files/Confoo2010_PHP53.pdf .

FastCGI reprezinta o alternativa la Common Gateway Interface (CGI), un protocol de interfatare intre aplicatii externe si serverele web. In cazul CGI, pentru fiecare cerere web sunt rulate executabile care sa proceseze cererea si sa genereze raspunsul dinamic. FastCGI ofera un mecanism prin care un singur proces este reutilizat pentru mai multe cereri.

Cerinte FastCGI

  • Windows Server 2008 R2, Windows Server 2008, Windows Vista sau Windows 7
  • IIS 7

Instalare FastCGI si PHP

1. Adaugati protocolul CGI din Control Panel > Programs and Features > Turn Windows features on or off. In acest mod activati atat CGI cat si FastCGI.

2. Descarcati ultima versiune de PHP de la adresa: http://www.php.net/downloads.php

3. Editati fisierul php.ini si modificati urmatoarele setari:

  • fastcgi.impersonate = 1
  • cgi.fix_pathinfo=1
  • cgi.force_redirect = 0.

4. Configurati IIS 7 sa rezolve cererile PHP

Pentru a configura IIS 7 sa permita aplicatii PHP este necesar sa realizam o mapare care sa spuna serverului IIS sa treaca cererile PHP prin protocolul FastCGI.

a) Deschideti IIS Manager si selectati Handler Mappings

b) Selectati Add Module Mapping si specificati urmatoarele setari:

  • Request path: *.php
  • Module: FastCGIModule
  • Executable (optional): C:\[Calea spre directorul unde e instalat PHP]\php-cgi.exe
  • Name: PHP_via_FastCGI

Puteti verifica daca FastCGI este instalat corect in lista de module din IIS Manager.

Mai multe detalii despre configurarea FastCGI puteti gasi pe site-ul php.net:

Windows Cache Extension

Windows Cache Extension (prescurtat WinCache) reprezinta un accelerator PHP care este folosit pentru a mari viteza de rulare a aplicatiilor pe platforma Windows si Windows Server. Windows Cache Extension salveaza versiunea compilata a scriptului rulat in memorie, facandu-l disponibil de fiecare data cand acelasi script este executat, marind astfel performanta.

Puteti descarca Windows Cache Extension de la urmatoarele adrese:

  • WinCache 1.1 Beta pentru PHP 5.2 – x86
  • WinCache 1.1 Beta pentru PHP 5.3 – x86

WinCache reprezinta o alternativa la acceleratoare PHP ca:

O comparatie a metodelor folosite de 3 dintre acceleratoare (pe langa WinCache) le gasiti mai jos:

WinCacheAPCXCacheeAccelerator
wincache_ucache_getapc_fetchxcache_geteaccelerator_get
wincache_ucache_setapc_storexcache_seteaccelerator_put
wincache_ucache_addapc_add
wincache_ucache_existsxcache_isset
wincache_ucache_deleteapc_deletexcache_unseteaccelerator_rm
wincache_ucache_clearapc_clear_cachexcache_clear_cacheeaccelerator_clear
wincache_ucache_incapc_incxcache_inc
wincache_ucache_decapc_decxcache_dec
wincache_ucache_casapc_cas
wincache_ucache_infoapc_sma_infoxcache_infoeaccelerat

Facilitati WinCache

  • suport pentru PHP 5.2 si PHP 5.3
  • cache-ul de fisiere configurabil
  • cache-ul opcode configurabil
  • cache pentru caile relative
  • functii pentru a obtine informatii despre starea cache-ului (wincache_fcache_fileinfo, wincache_fcache_meminfo)

Windows Cache Extension include 5 componente:

  • Cache Opcode PHP – Pe un server web, engine-ul PHP citeste, parseaza, compileaza si executa un script PHP de fiecare data cand acel script este cerut de catre clientul Web. Cache-ul PHP Opcode stocheaza scriptul compilat in memorie in asa fel incat poate fi reapelat foarte repede in momentul cand acel script este executat in mod repetat. O mare parte din timpul de procesare a unei cereri este detinut de generarea opcode-ului. Astfel ca prin intermediul acestei solutii se salveaza 50-70% din timpul de executie a cererii.
  • Cache fisier – Chiar daca cache-ul PHP Opcode este activat, PHP trebuie sa acceseze din nou scriptul de pe server. Windows Cache Extension include un cache pentru fisiere care permite stocarea continutului fisierelor PHP in memorie, ceea ce reduce in mod semnificativ operatiile realizate de engine-ul PHP. Astfel ca in momentul in care un fisier este accesat pentru prima data, continutul fisierului este stocat in cache. Cand fisierul este deschis din nou, un pointer la continutul fisierului din memorie este returnat. Testele efectuate pe aplicatii populare gen WordPress sau Drupal au aratat ca operatiile cu fisierul sunt reduse in acest fel cu 80-90% pentru fiecare cerere noua.
  • Cache cai relative – Codurile PHP includ in mod frecvent cai relative. Fiecare din aceste cai relative trebuie transformate in cai absolute. Cand aplicatia PHP foloseste foarte multe fisier PHP si are de accesat multe cai relative apar probleme de performanta. Cache-ul pentru caile relative stocheaza maparea dintre caile relative si cele absolute.
  • Cache utilizator (din WinCache 1.1) – Codurile PHP pot folosi memoria pentru a salva obiecte si variabile din PHP care sunt stocate in cache-ul utilizator.
  • Manipularea sesiunilor (din WinCache 1.1)– Aceasta facilitate permite pastrarea datelor sesiunilor in memoria partajata care duce la evitarea stocarii datelor de sesiuni in sistemul de fisiere, imbunatatind in acest mod performanta. Se poate activa din php.ini setand
    • session.save_handler = wincache

Comparatii

1) Pe site-ul ibuildings.com gasim un benchmark legat de performanta Wincache. Mark Van der Velden compara performanta WordPress si SilverStripe pe 2 platforme:

  • Microsoft Windows Platform Installer (WebPI) – cu si fara WinCache
  • Zend Server – cu Optimizer+ si fara Optimizer+
TestulWordPress
(cereri/sec)
FactorSilverStripe
(cereri/sec)
Factor
WebPI53.36x154.06x1
Zend Server55.66x157.66x1
WebPI + WinCache122.52x2.3108.69x2.0
Zend Server + Zend Optimizer+119.02x2.1111.04x1.9

Observam o imbunatatire folosind WinCache cu WebPI, in timp ce WebPI + WinCache are rezultate relativ la fel cu Zend Server + Zend Optimizer+.

2) De asemenea, Ruslan Yakushev (Project Manager in echipa Microsoft IIS) face cateva comparatii interesante in prezentarea lui, PHP Performance on Windows folosind WordPress 2.9.2.

O prima comparatie realizata este intre CGI si FastCGI. Se observa o diferenta semnificativa de la 2 RPS (cereri pe secunda) la o medie de 17 RPS.

De asemenea, in urmatorul grafic, se poate observa numarul de procese CGI comparat cu numarul de procese FastCGI.

Ruslan adauga in ecuatie si prima versiune de WinCache 1.0, unde de asemenea se observa o imbunatatire de la 17 cereri pe secunda la 44 cereri pe secunda printr-o simpla modificare in php.ini:

extension = php_wincache.dll

WinCache 1.1 aduce imbunatatiri prin cache-ul utilizator ajungand la 62 cereri pe secunda.

Resurse

PHP.net – http://www.php.net/manual/en/book.wincache.php
http://www.ksingla.net/2010/03/comparing-wincache-user-cache-apis-with-other-caches/
PHP Performance on Windows – http://www.slideshare.net/ruslany/php-performance-on-windows
PHP5.3 == Awesome! – Ilia Alshanetsky – http://ilia.ws/files/Confoo2010_PHP53.pdf
http://www.iis.net/expand/FastCGI
http://www.iis.net/expand/wincacheforphp

Read more...

Instalarea Joomla si configurarea URL Rewrite pe IIS 7

Joomla este un CMS (Content Management System) care iti permite construirea de site-uri.

Pentru mai multe informatii despre Joomla vizitati site-ul oficial Joomla sau site-ul Joomla Romania.

Cerinte

Instalarea s-a facut folosind urmatoarele aplicatii software:

– IIS 7.5
– PHP 5.3.2
– MySQL 5.1.41
– Joomla 1.5.15

Download

Descarcati ultima versiune de Joomla de pe site-ul oficial Joomla.
Dezarhivati fisierele Joomla si copiati-le la C:\Inetpub\wwwroot\joomla (sau alt director ales de dvs)

Creati un fisier configuration.php unde Joomla va scrie datele de configurare.

Baza de date

Inainte de a porni instalarea Joomla trebuie sa creati o baza de date pe serverul MySQL (de exemplu: joomla). De asemenea creati un user nou si atribuiti permisiunile pe baza respectiva de date.

Instalare

In browser tastati: http://localhost/joomla/. Daca nu aveti setat index.php ca “default document” trebuie sa folositi: http://localhost/joomla/index.php

Setati Limba pentru pasii de instalare:

Validati lista de cerinte si apasati “Next”

Parcurgeti licenta GNU General Public License si apasati Next

Introduceti datele de conectare la baza de date MySQL

Selectati optiunea No in FTP Configuration

Configurati numele site-ului, adresa de email si parola.

Ati instalat Joomla. In acest moment stergeti directorul “installation

Search Engine Friendly URLs (SEF)

IIS 6.0 nu include suport de URL rewriting. Puteti insa folosi produse ca ISAPI_Rewrite sau Ionics ISAPI Rewrite Filter

IIS 7 include suport pentru URL rewrite care poate fi activat instaland

Microsoft URL Rewrite Module 2.0 for IIS 7 (x86)
Microsoft URL Rewrite Module 2.0 for IIS 7 (x64)

Instalati Microsoft URL Rewrite Module 2.0 for IIS 7

1) Creati un fisier Web.config in calea C:\inetpub\wwwroot\joomla sau directorul in care ati instalat dvs Joomla.

Introduceti urmatorul XML in acest fisier:

<?xml version=”1.0″ encoding=”UTF-8″?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name=”Security Rule” stopProcessing=”true”>
          <match url=”^(.*)$” ignoreCase=”false” />
          <conditions logicalGrouping=”MatchAny”>
            <add input=”{QUERY_STRING}” pattern=”mosConfig_[a-zA-Z_]{1,21}(=|\%3D)” ignoreCase=”false” />
            <add input=”{QUERY_STRING}” pattern=”base64_encode.*\(.*\)” ignoreCase=”false” />
            <add input=”{QUERY_STRING}” pattern=”(\&lt;|%3C).*script.*(\>|%3E)” />
            <add input=”{QUERY_STRING}” pattern=”GLOBALS(=|\[|\%[0-9A-Z]{0,2})” ignoreCase=”false” />
            <add input=”{QUERY_STRING}” pattern=”_REQUEST(=|\[|\%[0-9A-Z]{0,2})” ignoreCase=”false” />
          </conditions>
          <action type=”CustomResponse” url=”index.php” statusCode=”403″ statusReason=”Forbidden” statusDescription=”Forbidden” />
        </rule>
        <rule name=”SEO Rule”>
          <match url=”(.*)” ignoreCase=”false” />
          <conditions logicalGrouping=”MatchAll”>
            <add input=”{REQUEST_FILENAME}” matchType=”IsFile” negate=”true” pattern=”” ignoreCase=”false” />
            <add input=”{REQUEST_FILENAME}” matchType=”IsDirectory” negate=”true” pattern=”” ignoreCase=”false” />
            <add input=”{URL}” negate=”true” pattern=”^/index.php” ignoreCase=”false” />
            <add input=”{URL}” pattern=”(/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$” />
          </conditions>
          <action type=”Rewrite” url=”index.php” />
        </rule>
      </rules>
    </rewrite>
 </system.webServer>
</configuration>

2) Sau puteti importa direct din fisierul de configurare .htaccess


Pentru a activa SEF trebuie sa activati in primul rand din administrator aceasta optiune. Mergeti la adresa: http://localhost/joomla/administrator/

Meniul Site -> Global Configuration si selectati astfel optiunile:

Search Engine Friendly URLs- Yes
Add suffix to URLs – No

Apasati pe Save si salvati configurarile facute.

Resurse

http://www.mydotnetworld.com/post/2008/10/24/URL-Rewriting-In-Joomla-15-on-IIS-7.aspx
Read more...