BigAdmin System Administration Portal
Article de fond
Print-friendly VersionPrint-friendly Version

Configuration SAMP (Solaris, Apache 2, MySQL 5 et PHP 5) pour le SE Solaris 10 et Solaris Express

Neal Pollack, octobre 2006

De nombreux documents et blogs expliquant comment utiliser le SE Solaris 10 pour un serveur SAMP (Solaris, Apache 2, MySQL, PHP) se trouvent sur Internet. Toutefois, un grand nombre de ces articles concernent les versions plus anciennes des packages logiciels ou n'incluent pas le très répandu langage PHP. Certains d'entre eux manquent de détails ou d'exemples pour comprendre le processus.

Avant de commencer, il faut préciser qu'une installation du SE Solaris 10 ou de Solaris Express comprend effectivement Apache 2.0.x et MySQL 4. Le CD qui accompagne le SE Solaris 10 comprend aussi PHP 4. En revanche, à l'heure actuelle le SE Solaris n'intègre pas PHP 5 ou MySQL 5.

Cet article indique à l'utilisateur technique comment élaborer son propre exemplaire actualisé de PHP5 et l'intégrer avec MySQL 5 de BlastWave et la version d'Apache2 inclue avec le SE Solaris. Cependant, pour ceux qui ne souhaitent pas compiler un logiciel et préfèrent une construction Sun optimisée et performante de ces packages, les packages Cool Stack "prêts à l'emploi" sur http://cooltools.sunsource.net/coolstack/index.html et/ou http://sunfreeware.com/coolstack.html les attendent.

Un ancien article de configuration d'un serveur SAMP avec les packages ci-dessus se trouve dans les soumissions de la communauté sur le portail BigAdmin. Cet article manque toutefois de détails et utilise l'ancien Apache 1.3. L'article de Mel Lester (également référencé sur le portail BigAdmin) est bien écrit, très détaillé et correspond pratiquement à nos attentes. La seule exception réside dans le fait que l'article de Lester utilise la version de MySQL 4 intégrée avec le SE Solaris 10 au lieu de la version actuelle MySQL 5.x que nous préférons.

La raison principale pour laquelle un grand nombre d'entre nous aime reconstruire les logiciels est d'obtenir des versions récentes des packages. Ils sont susceptibles de contenir des améliorations de performance, la résolution de bogues et de problèmes de sécurité et des options de compilation qui offrent des caractéristiques dont vous pouvez avoir besoin pour différentes applications web de PHP.

Pour cet exercice, l'installation utilise les logiciels suivants :

  • Apache tel qu'il est fourni par l'installation de Solaris
  • MySQL 5, de Blastwave.org, en utilisant pkg-get pour l'installer
  • La dernière version de PHP 5 de php.net, téléchargé et compilé

Nous construirons en mode 32 bits, en utilisant une chaîne d'outils principalement GNU.

La procédure ci-dessous intégrera les trois applications ensemble, afin que vous soyez prêt à utiliser le SE Solaris 10, Apache, PHP 5 et les applications web de MySQL 5.

Voici les étapes :

1. Installez le SE Solaris 10, Solaris Express/Nevada ou OpenSolaris.

2. Vérifiez que votre système est en réseau afin d'accéder à Internet et qu'il utilise une adresse IP statique. Si vous avez besoin d'aide pour configurer le réseau, consultez cette documentation : Guide d'administration système : services IP.

3. Nous souhaitons installer MySQL 5 de Blastwave.org. Ouvrez un navigateur web, accédez au guide pas à pas de Blastwave.org, et réalisez les étapes 1 à 7. C'est aussi simple que cela, et nous sommes maintenant prêts à utiliser la commande pkg-get pour installer des packages comme MySQL 5 sur le réseau.

4. Nous sommes maintenant prêts à installer les packages MySQL 5. Depuis une console ou une fenêtre xterm connectez-vous comme root et émettez les commandes suivantes :

# /opt/csw/bin/pkg-get -i mysql5 mysql5client mysql5devel mysql5rt
# /opt/csw/bin/pkg-get -i mysql5test

Remarque : il est très important d'installer le package mysql5devel sinon vous rencontrerez des difficultés de construction PHP 5 ultérieurement.

5. Configurons maintenant MySQL 5.

Blastwave.org propose un guide : accédez à http://www.blastwave.org/packages.php/mysql5 et cliquez sur le bouton gris qui indique "View news and info about the software package" (afficher les nouveautés et les infos sur le package logiciel). Nous avons réitéré les recommandations ici, et développé une partie de la discussion. (Merci à Blastwave pour leur générosité de partage de leurs travaux.)

A. Créez le fichier de configuration/opt/csw/mysql5/my.cnfcomme suit : copiez l'un des fichiers my-*.cnf de /opt/csw/mysql5/share/mysql/ dans /opt/csw/mysql5/my.cnf et faites les modifications nécessaires pour votre environnement, par exemple l'activation de InnoDB. Notez que /opt/csw/mysql5/var est un emplacement désapprouvé pour my.cnf. Si vous n'êtes pas certain du fichier à copier, utilisez my-small.cnf.

B. Il importe de configurer un utilisateur et un groupe MySQL avant d'initialiser la base de données à l'étape suivante. Le script d'installation du package Blastwave le fait pour vous. En revanche, si vous construisez MySQL à partir de la source, vous devez créer un utilisateur et un groupe MySQL comme suit :

# groupadd mysql
# useradd -c "MySQL Server" -d /dev/null -g mysql -s /bin/false mysql 

C. Initialisez la base de données MySQL et résolvez les autorisations :

cd /opt/csw/mysql5
./bin/mysql_install_db
chown -R mysql:mysql ./var

Attention : si vous sautez l'étapechown ci-dessus, MySQL refusera de démarrer.

D. Démarrez MySQL 5. Pour tenter simplement de démarrer le serveur pour voir si les étapes précédentes ont été effectuées correctement, vous pouvez émettre cette commande :

# cd /opt/csw/mysql5 ; /opt/csw/mysql5/bin/mysqld_safe &

Vous pouvez ensuite vérifier avec la commande ps pour voir s'il a démarré et utiliser la commande kill et le PID pour l'arrêter.

Attention : assurez-vous de stopper le processus susmentionné avant de continuer, sinon MySQL ne démarrera pas correctement lorsque vous activerez le serveur SMF lors des étapes qui suivent.

Cette commande devrait fonctionner :

# pkill mysql

Maintenant, pour vérifier qu'il démarre après une réinitialisation, poursuivez la lecture.

Remarque : les constructions récentes des mises à jour de Solaris Express, Nevada, et Solaris 10 utilisent SMF pour démarrer des démons commemysql. Le processus ci-dessous peut varier. Si votre version de Solaris utilise SMF, vous utiliserez les commandes svcadm indiquées ci-dessous pour démarrer/arrêter MySQL 5.

Méthode avec l'ancien fichier RC :

 # /etc/init.d/cswmysql5 start

Nouvelle méthode SMF :

Si vous avez installé le package MySQL 5 sur une version de Solaris qui utilise SMF au lieu des fichiers RC, vous découvrirez que le package a installé un manifeste SMF pour MySQL 5, et vous pourrez voir l'état du service en utilisant cette commande :

 # svcs -a | grep mysql
 disabled 13:36:01 svc:/network/cswmysql5:default
Pour garantir que le serveur MySQL 5 démarre (et qu'il se réinitialise), émettez cette commande :

# svcadm enable svc:/network/cswmysql5:default

Vous pouvez vérifier en utilisant encore cette commande :

# svcs -a | grep mysql
online 15:12:43 svc:/network/cswmysql5:default

Vous pouvez arrêter le serveur avec la commande # svcadm disable svc:/network/cswmysql5:default et il demeurera arrêté, même lors d'une réinitialisation, jusqu'à ce que vous émettiez la commande svcadm enable.

E. N'oubliez pas de définir un mot de passe pour l'utilisateur root de MySQL !

Il doit être différent de votre mot de passe utilisateur root dans Solaris ! Pour ce faire, démarrez le serveur puis émettez les commandes suivantes :

Pour définir le mot de passe local :

# /opt/csw/mysql5/bin/mysqladmin -u root password 'new-password'
	
# /opt/csw/mysql5/bin/mysqladmin -u root -h <YOUR-HostName-Here> \
password 'new-password'

(La ligne de commande précédente échoue et est inutile si vous avez désactivé l'accès au réseau via la discussion de sécurité de l'étape 5, partie I ci-dessous.)

Consultez la documentationMySQL 5 pour des instructions plus détaillées.

F. Facultatif : cette opération prend du temps. Vous pouvez exécuter les suites de test pour le démon MySQL avec les commandes suivantes :

# cd /opt/csw/mysql5/mysql-test
# ./mysql-test-run

G. Vérifiez l'installation :

# ./bin/mysql -p

Vous serez invité à saisir le mot de passe root de MySQL. Une invite mysql doit s'afficher. Essayez une commande comme STATUS pour voir si le serveur répond. Ensuite, essayez d'exécuter une requête test à partir de l'invite mysql :

show databases;

La base de données mysql et test est retournée.

quit

Note: les options de démarrage peuvent être ignorées en créant et en éditant/opt/csw/mysql5/etc/mysql5rc ou /etc/opt/csw/mysql5rc.

Le modèle pour mysql5rc se trouve dans /opt/csw/mysql5/share/mysql. Vous devez utiliser ce modèle si vous créez un fichierrc pour votre système. Par exemple :

  1. # mkdir -p /etc/opt/csw
    J'utilise ces autorisations : chown root:bin /etc/opt/csw et chmod 0755 /etc/opt/csw.
  2. # cp /opt/csw/mysql5/share/mysql/mysql5rc /etc/opt/csw/
    Si aucun fichier mysql5rc n'est disponible, le démon démarre avec les valeurs par défaut. S'il s'agit de votre premier système expérimental, ne vous préoccupez pas de cette étape, qui est facultative.

H. Documents de référence :

I. Les aspects de sécurité de MySQL dépassent la portée de cet article. Voici toutefois quelques étapes de bases à prendre en considération :

  • Vérifiez que le mot de passe de l'utilisateur root de MySQL est défini et qu'il est différent du mot de passe root sur le système hôte.
  • Vérifiez que seul l'utilisateur MySQL dispose d'un accès en lecture et écriture au répertoire de la base de données.
  • Si vous utilisez MySQL sur un serveur web pour PHP (de sorte que seules les connexions localhost soient nécessaires entre PHP/Apache et MySQL), ajoutez la ligne skip-networking à la section [mysqld] de votre fichier de configuration/opt/csw/mysql5/my.cnf. Toutes les connexions TCP/IP distantes au démon du serveur MySQL seront ainsi désactivées.
  • Désactivez l'utilisation de la commande LOAD DATA LOCAL INFILE, qui pourrait permettre une lecture non autorisée à partir des fichiers locaux, en particulier lorsque des attaques de la nouvelle injection SQL surviennent. Dans la section [mysqld] de votre fichier my.cnf, ajoutez set-variable=local-infile=0.
  • Débarrassez-vous des comptes utilisateur anonymes dans la table users.

Les étapes qui précèdent ne font qu'effleurer la surface, mais permettent une bonne amélioration après l'installation. Ne manquez pas de consulter les articles relatifs à la sécurité de MySQL sur le web en tapant "Sécuriser MySQL" dans votre moteur de recherche sur Internet préféré.

6. L'installation et les tests de MySQL 5 sont maintenant terminés. Construisons maintenant PHP 5. Nous emprunterons des portions du site web de Mel Lester, avec son aimable permission. Nous allons modifier certaines configurations PHP car nous utilisons des options et des chemins différents.

Plus précisément, nous allons modifier la configuration de PHP 5 avant compilation pour utiliser le chemin vers notre Blastwave MySQL 5 dans/opt/csw/mysql5 et également ajouter quelques autres options. La procédure vérifiera également que vous disposez des outils GNU installés pour construire PHP 5.

A. Connectez-vous à la zone globale comme root et vérifiez que/opt/csw/bin et /usr/sfw/bin sont dans $PATH, comme suit :

global# echo $PATH
  /opt/csw/bin:/usr/sfw/bin:/usr/sbin:/usr/bin:/usr/openwin/bin: \
  /usr/dt/bin:/usr/ccs/bin

Parlons-en maintenant. Tout d'abord, vous ne voulez pas nécessairement modifier .profile pour root et encombrer le / répertoire d'éléments inutiles. Pour le SE Solaris 10, Solaris Express ou OpenSolaris, je suggère la création du répertoire /root, et celle d'un autre compte root dans/etc/passwordutilisant le shellbash ou ksh et pointant vers/root comme répertoire de base. Cela reste toutefois un choix et un thème pour vous et Google. Quelle que soit votre décision, vérifiez que votre chemin intègre les composants ci-dessus. Puis continuez.

B. Utilisez la commande de Blastwave.org pkg-get (installée à l'étape 3 ci-dessus) pour installer les packages GNU autoconf, automake et gsed. Les versions du logiciel ci-après doivent être relativement similaires ou plus récentes.

global# pkg-get -i autoconf
...
global# which autoconf && autoconf --version | head -2
/opt/csw/bin/autoconf
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.

global# pkg-get -i automake
...
global# which automake && automake --version | head -2
/opt/csw/bin/automake
automake (GNU automake) 1.8.3
Written by Tom Tromey <tromey@redhat.com>.

global# pkg-get -i gsed
...
global# which gsed && gsed --version | head -2
/opt/csw/bin/gsed
GNU sed version 4.1.4
Copyright (C) 2003 Free Software Foundation, Inc.

C. Vérifiez la disponibilité des autres logiciels open source nécessaires à l'installation de PHP. (Vous pouvez consulter la section conseils d'installation spécifique Solaris du manuel PHP si vous le souhaitez.) Les versions du logiciel ci-après doivent être relativement similaires ou plus récentes :

global# which gcc && gcc --version | head -2
/usr/sfw/bin/gcc
gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
Copyright (C) 2004 Free Software Foundation, Inc.

global# which gmake && gmake --version | head -2
/usr/sfw/bin/gmake
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.

global# which flex && flex --version | head -2
/usr/sfw/bin/flex
flex version 2.5.4

global# which bison && bison --version | head -2
/usr/sfw/bin/bison
bison (GNU Bison) 1.875
Written by Robert Corbett and Richard Stallman.

global# which gm4 && gm4 --version | head -2
/opt/csw/bin/gm4
GNU M4 1.4.3
Written by Rene' Seindal.

global# which perl && perl -v | head -2
/opt/csw/bin/perl

This is perl, v5.8.7, built for sun4-solaris-thread-multi

global# which gunzip && gunzip -V | head -2
/usr/bin/gunzip
gunzip 1.3.3-patch.1
(2002-03-08)

global# which gtar && gtar --version | head -2
/usr/sfw/bin/gtar
tar (GNU tar) 1.14
Copyright (C) 2004 Free Software Foundation, Inc.

D. Testez les outils open source en construisantlibxml2 depuis la source.

Téléchargez la dernière version depuis xmlsoft.

A l'heure actuelle, la version zippée suivante de la source se trouve ici :

# wget ftp://xmlsoft.org/libxml2/libxml2-2.6.26.tar.gz

Vous choisissez le répertoire pour y effectuer les étapes suivantes :

global# gunzip -cd libxml2-2.6.26.tar.gz | gtar xvpf -
global# cd libxml2-2.6.26
global# ./configure
...
global# gmake
...
global# gmake install
...

Vous avez maintenant terminé de construire et d'installer le logiciel libxml2 et vous le trouverez situé dans /usr/local.

Remarque : il a été vérifié que Solaris Nevada construction 42 et ultérieures possède un package libxml2 mis a jour, ce qui rend cet étape inutile. Si vous exécutez Solaris Nevada construction 42 ou ultérieures, y compris les constructions d'OpenSolaris dérivées de la construction 42 ou ultérieure, vous pouvez ignorer la construction de libxml2 (Partie 6D) et modifier une portion de la ligne de configuration PHP5 dans la Partie 6F ci-dessous de :

--with-libxml-dir=/usr/local

pour :

--with-libxml-dir=/usr 

E. Si le fichier /etc/apache2/httpd.conf n'existe pas, utilisez ceci :

global#cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf

Éditez /etc/apache2/httpd.conf avec votre éditeur de texte préféré :

  • Définissez ServerName si nécessaire (la valeur par défaut est 127.0.0.1) selon votre nom d'hôte.
  • Définissez ServerAdmin selon une adresse e-mail valable.

F. Téléchargez et compilez la dernière version de production de PHP sur www.php.net. Là encore, vous choisissez votre propre répertoire, comme par exemple /src ou /build ou autre. A l'heure où nous rédigeons, il se trouvait sur http://www.php.net/downloads.php#v5. Nous avons choisi de télécharger la version gzippée afin d'utiliser la commande suivante pour continuer :

global# gunzip -cd php-5.1.6.tar.gz | gtar xvpf -
...
global# cd php-5.1.6

C'est ici que nous différons de la page web originale. L'originale utilisait l'ancien MySQL 4 se trouvant dans /usr/sfw et nous utilisons la version actuelle de MySQL 5 située dans /opt/csw/mysql5. Par conséquent, notre choix d'options de configuration est désormais :

 global# ./configure --with-apxs2=/usr/apache2/bin/apxs --enable-dbase \
 --with-libxml-dir=/usr/local --with-config-file-path=/etc/apache2 \
 --with-mysql=shared,/opt/csw/mysql5 \
 --with-mysqli=shared,/opt/csw/mysql5/bin/mysql_config \
 --with-xpm-dir=/usr --with-gd --with-tiff-dir=/usr --with-bz2=/usr/lib \
 --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib --enable-mbstring \
 --enable-calendar--enable-bcmath --enable-ftp --enable-exif

Les options de configuration ci-dessus sont suffisantes pour un seul serveur. Il existe de nombreuses autres options, laissées au choix et à la documentation de l'utilisateur. Vous pouvez voir certaines options en entrant command# ./configure --help ou en consultant les options de configuration principales dans Appendix F. Configure options sur le site PHP.

Remarque : si vous essayez d'activeropenssl, vous devrez recompiler Apache et MySQL pour obtenir la même version de bibliothèque openssl, faute de quoi les connexions entre PHP et MySQL échoueront. Si vous envisagez d'utiliser des cookies pour les sessions, vous constaterez peut-être un gain de performance en ajoutant la bibliothèque mcrypt à votre système, et en utilisant l'option de compilation PHP --with-mycrpt.

Remarque amusante : si vous êtes curieux des autres options config utilisées par les autres, essayez simplement d'entrer phpinfo() dans votre moteur de recherche Internet préféré. :-)

Bien, construisons maintenant.

 ...
 global# gmake
 ...
 global# gmake install

 ...
 Installing PHP SAPI module: apache2handler
 /var/apache2/build/instdso.sh SH_LIBTOOL='/var/apache2/build/libtool' libphp5.la 
/usr/apache2/libexec
 /var/apache2/build/libtool --mode=install cp libphp5.la /usr/apache2/libexec/
 cp .libs/libphp5.so /usr/apache2/libexec/libphp5.so
 chmod +x /usr/apache2/libexec/libphp5.so
 cp .libs/libphp5.lai /usr/apache2/libexec/libphp5.la
 libtool: install: warning: remember to run 'libtool --finish /build/php-5.1.2/libs'
 chmod 755 /usr/apache2/libexec/libphp5.so
 [activating module 'php5' in /etc/apache2/httpd.conf]
 Installing PHP CLI binary: /usr/local/bin/
 Installing PHP CLI man page:/usr/local/man/man1/
 Installing build environment: /usr/local/lib/php/build/
 Installing header files: /usr/local/include/php/
 Installing helper programs: /usr/local/bin/
  program: phpize
  program: php-config
 Installing man pages: /usr/local/man/man1/
  page: phpize.1
  page: php-config.1
 Installing PEAR environment:/usr/local/lib/php/
 [PEAR] Archive_Tar - installed: 1.3.1
 [PEAR] Console_Getopt - installed: 1.2
 pear/PEAR can optionally use package "pear/XML_RPC" (version >= 1.4.0)
 [PEAR] PEAR - installed: 1.4.6
 Wrote PEAR system config file at: /usr/local/etc/pear.conf
 You may want to add: /usr/local/lib/php to your php.ini include_path
 Installing PDO headers: /usr/local/include/php/ext/pdo/
 #

G. Copiez le fichier php.ini-dist depuis votre répertoire source php-5.1.6 vers le répertoire config d'Apache :

global# cp php.ini-dist  /etc/apache2/php.ini

Si vous configurez des serveurs web Apache dans des zones, il vous faut peut-être un exemple de chemin du type suivant (quelle que soit la zone que vous utilisez) :

global# cp php.ini-dist /zones/zone0/root/etc/apache2/php.ini

Ensuite nous allons modifier les fichiers de configuration et tester la pile complète.

H. Éditez les fichiers de configuration.

Éditez le fichier /etc/apache2/php.ini pour définir les options PHP.

Avec PHP 5, il n'y a plus de chargement automatique du module d'interface MySQL.

Vous devez provoquer explicitement le chargement de ce module et de tous les autres modules nécessaires. Pour ce faire, éditez le fichier php.ini et ajoutez deux lignes :

1. Vérifiez que votre construction de PHP 5 a créé le module qu'il vous faut :

# ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20050922/  
total 1088
-rwxr-xr-x1 root root103144 Aug 29 21:48 mysql.so
-rwxr-xr-x1 root root429948 Aug 29 21:48 mysqli.so

Trouvez la (les) ligne(s) dans php.ini commençant par :

; Directory in which the loadable extensions (modules) reside.
extension_dir =

Éditez la ligne pour en faire :

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20050922/"

Si vous avez installé PHP 5 à un autre emplacement, ajustez cette ligne en fonction.

2. Trouvez ensuite ce bloc du fichier php.ini :

  ;;;;;;;;;;;;;;;;;;;;;;
  ; Dynamic Extensions ;
  ;;;;;;;;;;;;;;;;;;;;;;

Ajoutez la ligne suivante :

  
extension=mysql.so

Désormais, vous ne deviendrez pas fou à essayer de comprendre pourquoi votre Apache/PHP 5 ne peut se connecter à MySQL.

3. Ensuite, éditez le fichier/etc/apache2/httpd.conf pour charger le module PHP.

Trouvez la ligne qui contient php5_module. Le chemin sur la droite de l'instruction LoadModule doit pointer sur le chemin du module PHP sur votre système. Ce chemin sera en rapport avec /usr/apache2 sur votre système. (Donc en réalité il s'agit de /usr/apache2/libexec/libphp5.so.) L'installation gmake de PHP 5 ci-dessus doit déjà avoir ajouté ceci, mais ne manquez pas de vérifier.

LoadModule php5_module libexec/libphp5.so

Nous voulons qu'Apache analyse l'extension .phppour les noms de fichiers de page web comme PHP. Trouvez la section AddType de votre fichier /etc/apache2/httpd.conf et ajoutez cette ligne :

AddType application/x-httpd-php .php

Certains utilisateurs préfèrent omettre la ligne ci-dessus de httpd.conf, et ajouter à la place application/x-httpd-php php phtml au fichier/etc/apache2/mime.types. Les deux méthodes conviennent.

I. Démarrez et testez Apache 2.

Avertissement : si vous avez activé Apache 1.3 précédemment, via d'autres articles SAMP, les scripts du CD d'accompagnement ou manuellement, un collision se produira lorsque vous tenterez d'effectuer les étapes qui suivent. Il importe de désactiver Apache 1.3 avant de continuer.

Vérifiez que Apache 1.3 est désactivé :

 #svcs -a | grep apache
 legacy_run Sep_11lrc:/etc/rc3_d/S50apache

Ceci indique que le script de démarrage rc hérité pour Apache 1.3 est /etc/rc3_d/S50apache. Le script recherche l'existence d'un fichier de configuration pour Apache dans /etc/apache/httpd.conf et ne démarre pas Apache 1.3 si le fichier est manquant. Pour désactiver Apache 1.3, vérifiez que le chemin indiqué précédemment ne contient pas de fichier, ou (bien que cette méthode soit un peu extrême) renommez le script de démarrage de :

 /etc/rc3_d/S50apache

pour :

/etc/rc3.d/OFF-S50apache

Seuls les scripts commençant pas la lettre "S" seront effectivement exécutés lors du démarrage.

Démarrez Apache 2 :

# svcadm enable apache2
# svcs | grep -i apache2
online   18:07:10 svc:/network/http:apache2

Si Apache 2 démarre sans difficulté, vous pouvez utiliser la commande ps pour afficher plusieurs processus similaires à celui indiqué ci-dessous :

# ps -ef | grep http
webservd 18592 38020Sep 11 ? 0:03 /usr/apache2/bin/httpd -k start
webservd 13093 38020Sep 08 ? 0:07 /usr/apache2/bin/httpd -k start

Ne vous alarmez pas si vous trouvez environ 10 de ces processus. Ni par le processus suivant :

root 49810 Jul 17 ? 1:28 /usr/apache/bin/httpd  \
                 -f /etc/apache/httpd-standalone-ipp.conf

Il s'agit simplement de l'ancien Apache 1.3 utilisé par le listener du protocole Internet Print (IPP) sur le port réseau 631. Puisqu'il n'est pas exécuté sur le port 80, il n'entrera pas en conflit avec votre configuration de serveur web qui s'y trouve.

7. Plaçons ensuite quelque chose d'utile pour tester dans le répertoire DocumentRoot du serveur web Apache 2. Avec l'éditeur de texte de votre choix, créez le fichier (page web) suivant et intitulez-le phpinfo.php:

<html>
<body>
      <p>Hello World</p>
      <?php phpinfo(); ?>
  </body>
</html> 

Placez le fichier dans votre répertoire DocumentRoot comme le définit le fichier Apache httpd.conf. Si vous pointez votre navigateur web vers http://your-host-name/phpinfo.php et que tout fonctionne, vous devriez obtenir des informations détaillées sur la configuration de PHP, Apache et MySQL.

Remarque : Après le test, il est conseillé de supprimer ce fichier ou de le protéger avec une authentification HTTP, car il révèle une grande quantité d'informations sur votre site qui ferait le bonheur d'un pirate.

Vous avez maintenant remarqué que la page webphpinfo ci-dessus est à la base un test de fonctionnement d'Apache et PHP ensemble. Bien que la sortie vous indique les informations relatives à l'activation du client MySQL, elle ne teste pas réellement les connexions au serveur MySQL. Dans presque 99% des cas, si vous êtes arrivé jusqu'ici, vous pouvez simplement installer une application PHP/MySQL et vous attendre à ce que cela fonctionne. En revanche, si vous faites partie de ces types de personnalité hyper analytique frustrantes qui aiment s'attarder sur l'achèvement, la précision et qui testent pratiquement tout, vous trouverez ci-dessous une page web PHP qui effectuera ce qui suit :

  1. Essayez d'ouvrir une connexion à MySQL depuis une page PHP.
  2. Sélectionnez le nom de la base de données mysql qui est une base de données qui existe après toutes les installations MySQL.
  3. Affichez la liste des noms de tables qui existent dans la base de données mysql.

La majorité du code est issu des exemples d'utilisation des fonctions dans le manuel PHP. Copiez le code PHP ci-dessous dans un fichier (page web) et donnez-lui un titre de type simple-test.php. Éditez le fichier et insérez le mot de passe pour vous connecter à votre serveur MySQL. Placez le fichier dans DocumentRoot sur votre serveur web (au même endroit quephpinfo.php plus tôt).

Voici le code PHP :

<?php
$db_username = "root";// EDIT if needed: The username for mysql.
$db_password = "insert-yours-here"; // EDIT ME
    // Above is YOUR password used for mysql admin access.
$db_hostname = "localhost";
$db_name = "mysql";  // Install creates this admin database.

if (!mysql_connect($db_hostname, $db_username, $db_password)) {
   echo "Can't connect to MySQL Server";
   exit;
}else{
   echo "Connection to Mysql server succeeded.";
   echo "<br>";
}

// Now query the db and get the list of tables.
$result = mysql_db_query($db_name, "SHOW TABLES");

if (!$result) {
   echo "DB Error, could not list tables\n";
   echo 'MySQL Error: ' . mysql_error();
   exit;
}

echo "<p>The selected database is name is mysql</p>";
echo "<p>Here is the list of tables</p>";
while ($row = mysql_fetch_row($result)) {
   echo "Table: {$row[0]} <br>";
}

mysql_free_result($result);
?>

Si vous avez copié ce qui précède correctement, et que votre logiciel est bien configuré, vous pouvez pointer un navigateur web sur http://yourserver.com/simple-test.php et obtenir à peut près cela :

Connection to Mysql server succeeded.
The selected database is name is mysql.

Here is the list of tables

Table: columns_priv 
Table: db 
Table: func 
Table: help_category 
Table: help_keyword 
Table: help_relation 
Table: help_topic 
Table: host 
Table: proc 
Table: procs_priv 
Table: tables_priv 
Table: time_zone 
Table: time_zone_leap_second 
Table: time_zone_name 
Table: time_zone_transition 
Table: time_zone_transition_type 
Table: user 

8. Considérons la sécurité PHP.

Maintenant que tout fonctionne, sachez que l'installation par défaut de PHP, et les options par défaut du fichier de configuration php.ini ne sont sûrs que pour des travaux de développement, mais pas pour un serveur de production exposé sur un réseau. Voici un avertissement fortement exprimé :

A. Supprimez les pages web PHP phpinfo et simpletest crées à l'étape 7 ci-dessus. (Ou verrouillez-les immédiatement en protégeant le répertoire dans lequel elles résident avec une forme d'authentification HTTP.)

B. Il est vivement conseillé de consulter un didacticiel sur la sécurité PHP, comme l'un des suivants :

Si vous n'en avez pas le temps, consultez au moins votre répertoire de code source PHP au fichier de configuration suggéré (et plus sûr) php.ini-recommended. Vous pouvez le comparer au fichier de configuration de démarrage php.ini-dist pour voir quelles modifications sont apportées pour la sécurité et la performance d'un site de production.

(# diff php.ini-dist php.ini-recommended | less)

J'espère avoir répondu à quelques questions et fourni des conseils utiles. Profitez bien de votre serveur SAMP pour le SE Solaris.


Comments (latest comments first)

Discuss and comment on this resource in the BigAdmin Wiki

Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License.


BigAdmin