Configuration SAMP (Solaris, Apache 2, MySQL 5 et PHP 5) pour le SE Solaris 10 et Solaris ExpressNeal 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 :
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 4. Nous sommes maintenant prêts à installer les packages MySQL 5. Depuis une console ou une fenêtre xterm connectez-vous comme # /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 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 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'étape 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 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 comme Méthode avec l'ancien fichier RC : # /etc/init.d/cswmysql5 start
Nouvelle méthode 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:defaultPour 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 E. N'oubliez pas de définir un mot de passe pour l'utilisateur 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 show databases; La base de données quit Note: les options de démarrage peuvent être ignorées en créant et en éditant
Le modèle pour
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 :
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
A. Connectez-vous à la zone globale comme 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 B. Utilisez la commande de Blastwave.org 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 construisant 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 Remarque : il a été vérifié que Solaris Nevada construction 42 et ultérieures possède un package --with-libxml-dir=/usr/local pour : --with-libxml-dir=/usr E. Si le fichier global#cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf
Éditez
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 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 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 Remarque : si vous essayez d'activer
Remarque amusante : si vous êtes curieux des autres options 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 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 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 ; 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 ;;;;;;;;;;;;;;;;;;;;;; ; 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
Trouvez la ligne qui contient LoadModule php5_module libexec/libphp5.so
Nous voulons qu'Apache analyse l'extension AddType application/x-httpd-php .php
Certains utilisateurs préfèrent omettre la ligne ci-dessus de 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/S50apacheCeci 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 -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
<html>
<body>
<p>Hello World</p>
<?php phpinfo(); ?>
</body>
</html>
Placez le fichier dans votre répertoire 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 web
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 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 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 A. Supprimez les pages web PHP 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) (# 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 SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics | ||||