Installer Apache, PHP, MySQL sous Windows
Supposons que vous vouliez produire des sites web dynamiques réalisés grâce à des scripts PHP qui utilisent des bases de données MySQL et que l'ensemble fonctionne avec un serveur Apache.
Vous voulez montrer ces sites à vos clients, alors vous souhaitez procéder à une installation sur un ordinateur portable dont l'O.S. est Windows.
Si vous n'avez pas d'expérience, vous pouvez automatiser l'installation grâce à Wampserver.
Sinon, voici les différentes étapes :
1- Tout d'abord procédez au téléchargement :
Apache
PHP
MySQL
PhpMyAdmin
Les différentes installations vont être effectuées, pour cet exemple, de façon personnalisée dans la partition C:
Concrétement, on aura C:\Apache2 C:\PHP4 (ou C:\PHP5) C:\MySQL
On verra où mettre PhpMyAdmin plus tard.
2- Installez d'abord PHP en mode 'custom' dans C:\PHP4 ou C:\PHP5 (par exemple).
Copiez php4ts.dll OU php5ts.dll dans \system32 du répertoire de Windows. Avec PHP5, copiez aussi libmysql.dll.
Remarque : Si vous mettez à jour avec PHP5, mettez la même arborescence de répertoires que pour PHP4.
En effet, PHP5 n'a pas la même organisation. Déplacez ensuite les dll dans les bons répertoires. Ce sera plus facile pour la mise à jour.
Copiez le fichier php.ini-recommended de C:\PHP4 ou (C:\PHP5) dans le répertoire de Windows. Renommez le php.ini
Editez le. Voici un exemple de contenu que vous adapterez en fonction de vos besoins.
[PHP]
engine = On
short_open_tag = On
asp_tags = Off
precision = 14
y2k_compliance = Off
output_buffering = Off
output_handler =
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
allow_call_time_pass_reference = Off
safe_mode = Off
safe_mode_exec_dir =
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
highlight.string = #CC0000
highlight.comment = #FF9900
highlight.keyword = #006600
highlight.bg = #FFFFFF
highlight.default = #0000CC
highlight.html = #000000
expose_php = On
max_input_time = 60
max_execution_time = 30
request data
memory_limit = 8M
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
error_log = syslog
warn_plus_overloading = Off
variables_order = "EGPCS"
register_globals = On
register_argc_argv = On
post_max_size = 8M
gpc_order = "GPC"
magic_quotes_gpc = On
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
include_path = ".;C:\PHP4\includes" ;ou PHP5
doc_root =
user_dir =
extension_dir = C:\PHP4\extensions ;ou PHP5
enable_dl = On
file_uploads = On
upload_tmp_dir =c:\PHP4\temp\ ;ou PHP5
upload_max_filesize = 2M
extension=php_db.dll
extension=php_gd2.dll
extension=php_imap.dll
extension=php_ming.dll
extension=php_pdf.dll
extension=php_cpdf.dll
extension=php_mysql.dll ;pour PHP5 seulement
[Syslog]
define_syslog_variables = Off
[mail function]
SMTP = localhost
sendmail_from = me@localhost.com
[Logging]
[Java]
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[MySQL]
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
[mSQL]
msql.allow_persistent = On
msql.max_persistent = -1
msql.max_links = -1
[PostgresSQL]
pgsql.allow_persistent = On
pgsql.max_persistent = -1
pgsql.max_links = -1
[Sybase]
sybase.allow_persistent = On
sybase.max_persistent = -1
sybase.max_links = -1
sybase.min_error_severity = 10
sybase.min_message_severity = 10
sybase.compatability_mode = Off
[Sybase-CT]
sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
[bcmath]
bcmath.scale = 0
[browscap]
[Informix]
ifx.default_host =
ifx.default_user =
ifx.default_password =
ifx.allow_persistent = On
ifx.max_persistent = -1
ifx.max_links = -1
ifx.textasvarchar = 0
ifx.byteasvarchar = 0
ifx.charasvarchar = 0
ifx.blobinfile = 0
ifx.nullformat = 0
[Session]
session.save_handler = files
session.save_path = c:/php4/temp/
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_maxlifetime = 1440
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 1
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
;mssql.textlimit = 4096
[Assertion]
[Ingres II]
ingres.allow_persistent = On
ingres.max_persistent = -1
ingres.max_links = -1
ingres.default_database =
ingres.default_user =
ingres.default_password =
[Verisign Payflow Pro]
pfpro.defaulthost = "test.signio.com"
pfpro.defaultport = 443
pfpro.defaulttimeout = 30
[Sockets]
[com]
[Printer]
3- Installez ensuite MySQL dans le répertoire C:\MySQL. On verra plus tard comment administrer.
4- Installez maintenant Apache, en mode 'custom' dans C:
En effet, le répertoire Apache2 (par exemple) va être automatiquement créé.
La partie délicate : il faut éditer httpd.conf du sous-répertoire /conf
Je supposerai que votre ordinateur a pour nom MON_PC.
S'il est client d'un VPN alors soit « mondomaine.fr » celui-ci, sinon c'est « Workgroup »
Voici un exemple de contenu que vous devrez adapter en fonction de vos besoins de sécurité.
### Section 1: Global Environment
ServerRoot "C:/Apache2"
ScoreBoardFile logs/apache_runtime_status
PidFile logs/httpd.pid
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
##
## Server-Pool Size Regulation (MPM specific)
##
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
<⁄IfModule>
Listen 80
#
# Dynamic Shared Object (DSO) Support
#
LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule userdir_module modules/mod_userdir.so
### Section 2: 'Main' server configuration
ServerAdmin admin@mondomaine.fr
# remplacez mondomaine.fr par workgroup si pas en réseau
ServerName MON_PC.mondomaine.fr
UseCanonicalName On
DocumentRoot "C:/Apache2/htdocs"
<Directory ⁄>
Options FollowSymLinks
AllowOverride None
<⁄Directory>
<Directory "C:/Apache2/htdocs">
Options all
AllowOverride none
Order deny,allow
deny from all
Allow from .mondomaine.fr
#si IP fixe uuu.xxx.yyy.zzz on peut ajouter
Allow from uuu.xxx.yyy.zzz
<⁄Directory>>
UserDir "C:/Apache2/Users/"
DirectoryIndex index.html index.php index.html.var
AccessFileName .htaccess
# The following lines prevent .htaccess and .htpasswd files from being viewed by Web clients.
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
<⁄Files>
TypesConfig conf/mime.types
DefaultType text/plain
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
HostnameLookups On
ErrorLog logs/error.log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access.log combined
ServerTokens Full
ServerSignature On
Alias /icons/ "C:/Apache2/icons/"
<Directory "C:/Apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "E:/Apache2/manual$1"
<Directory "C:/Apache2/manual">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
<Files *.html>
SetHandler type-map
</Files>
SetEnvIf Request_URI ^/manual/fr/ prefer-language=fr
RedirectMatch 301 ^/manual(?:/(de|en|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2
</Directory> ScriptAlias /cgi-bin/ "C:/Apache2/cgi-bin/"
<Directory "C:/Apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
IndexOptions FancyIndexing VersionSort
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
DefaultIcon /icons/unknown.gif
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
AddLanguage ca .ca
AddLanguage cs .cz .cs
AddLanguage da .dk
AddLanguage de .de
AddLanguage el .el
AddLanguage en .en
AddLanguage eo .eo
AddLanguage es .es
AddLanguage et .et
AddLanguage fr .fr
AddLanguage he .he
AddLanguage hr .hr
AddLanguage it .it
AddLanguage ja .ja
AddLanguage ko .ko
AddLanguage ltz .ltz
AddLanguage nl .nl
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddLanguage pt .pt
AddLanguage pt-BR .pt-br
AddLanguage ru .ru
AddLanguage sv .sv
AddLanguage zh-CN .zh-cn
AddLanguage zh-TW .zh-tw
LanguagePriority fr en ca cs da de el eo es et he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
ForceLanguagePriority Prefer Fallback
AddDefaultCharset ISO-8859-1
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
# For russian, more than one charset is used (depends on client, mostly):
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8
AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis
AddType application/x-tar .tgz
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddHandler type-map var
# ⇒ ou PHP5 ⇐
ScriptAlias /php4/ "C:/php4/"
<Directory "C:/php4/">
Options Indexes FollowSymLinks MultiViews All
AllowOverride None
Order allow,deny
Allow from all
</Directory>
LoadModule php4_module C:/php4/sapi/php4apache2.dll
# mettez un # devant la ligne précédente ET enlevez celui de la ligne suivante pour PHP5
LoadModule php5_module C:/php5/sapi/php5apache2.dll
AddType application/x-httpd-php .php .php3
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .mondomaine.fr
</Location>
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
5- Vous exécutez maintenant c:\MySQL\bin\winmysqladmin.exe
Celui-ci va créer dans le répertoire Windows le fichier My.ini
qui contiendra tous les paramêtres dont le nom d'utilisateur et le mot de passe.
6- Vous installez maintenant PhpMyAdmin dans un sous-répertoire de C:\Apache2\htdocs que vous nommerez adminSQL par exemple.
Avec PhpMyAdmin, vous administrerez directement vos bases de données par IE, Netscape, ...
Editez le fichier config.inc.php
Là où vous trouverez ['host'] = , mettez MON_PC à droite.
Là où vous trouverez ['user'] = , mettez ou laissez root.
Là où vous trouverez ['password'] = , laissez un mot de passe vierge. ( je sais, c'est dangereux mais c'est provisoire.)
Là où vous trouverez ['port'] = , mettez le port indiqué dans My.ini
Indiquez $cfg['PmaAbsoluteUri'] = 'http://MON_PC/adminSql/'; OU mettez $cfg['PmaAbsoluteUri_DisableWarning'] = TRUE;
En effet, pour pouvoir indiquer un nouvel utilisateur, seul root peut attribuer des privilèges.
Si vous avez respecté tout ce qui précède, tout doit baigner.
7- Ouvrez l'explorateur , entrez http://MON_PC/adminSQL/
Vous devez avoir un message du genre Bienvenue à phpMyAdmin ... en haut de la page.
Cliquez le lien Privilèges
Cliquez ensuite Ajouter un utilisateur
Entrez le nom d'utilisateur indiqué dans My.ini
Entrez le serveur MON_PC
Entrez le mot de passe indiqué dans My.ini
Cochez les cases des privilèges que vous souhaitez attribuer à cet utilisateur.
Cliquez Exécuter. Fermez l'explorateur.
8- Rééditez le fichier config.inc.php
Là où vous trouverez ['user'] = , mettez le nom d'utilisateur.
Là où vous trouverez ['password'] = , mettez le mot de passe.
Sauvegardez. Redémarrez le service ou l'ordinateur.
9- Vous pouvez maintenant créer une base et des tables en ouvrant l'explorateur sur http://MON_PC/adminSQL/
- N'oubliez pas dans vos scripts php d'utiliser ces paramêtres pour vous connecter à votre BD.
Lorsque vous lancerez l'explorateur, cliquez Réeéssayer si vous voyez apparaître une boite de dialogue « Travailler Hors Connexion. »