Redirect dans le vhost

Il existe de nombreuse manière de rediriger les visiteurs d’un site vers un autre. Ici je vais parler du cas ou l’on veut rediriger les visiteurs provenant d’un nom de domaine donné vers une page d’un autre nom de domaine et bien sur sans utiliser de Frame.

Je veux que tous les visiteurs qui entre www.voiture.com soit redirigé vers la page www.ventes.com/voitures.html

Pour cela je ne vais pas utiliser le htaccess ou du php mais le vhost d’apache et du dns (sacredieu). Tout d’abord je configure mon dns que voiture.com pointe vers l’ip du serveur de ventes.com.

Ensuite je crée un nouveaux vhost sur le serveur de ventes.com comme ceci :



        ServerAdmin moi@voiture.com
        ServerName www.voiture.com
        ServerAlias www.voiture.com voiture.com

        Redirect 301 / http://www.ventes.com/voitures.html


Je redémarre apache et le tour et joué.

SAMP : Solaris, Apache2, PHP5, MySQL5

Aprés le LAMP, le WAMP voici le SAMP.
Dans ce billet je vais m’atteler a expliquer comment installer un SAMP (Solaris, Apache, MySQL, PHP) sur Solaris 10 avec pkg-get et les dépôt de blastwave.

1. Mysql 5

On ca commencer par installer mysql 5

# pkg-get -i mysql5 mysql5client mysql5devel mysql5rt
# pkg-get -i mysql5test

Maintenant il faut créer le fichier /opt/csw/mysql5/my.cnf. Pour cela on va copier un fichier de configuration disponible dans /opt/csw/mysql5/share/mysql/ vers le bon repertoire.

cp /opt/csw/mysql5/share/mysql/my-small.cnf /opt/csw/mysql5/my.cnf

Editer ce fichier en fonction de vos besoin.

Maintenant on va créer la base de donnée et attribuer les permission :

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

On peut à présent démarrer mysql en utilisant SMF.

Alors normalement vous n’avez pas de service mysql de lancer :

# svcs -a | grep mysql
disabled 20:08:59 svc:/network/cswmysql5:default

On active le SMF pour mysql5

# svcadm enable svc:/network/cswmysql5:default

A présent mysql est lancé :

# svcs -a | grep mysql
online 21:23:45 svc:/network/cswmysql5:default

Si vous voulez le stoper :

# svcadm disable svc:/network/cswmysql5:default

Configurons le mot de pass pour l’user root de mysql :

# /opt/csw/mysql5/bin/mysqladmin -u root password ‘new-password’

Vous pouvez tester la connexion ainsi :

# ./bin/mysql -uroot -p

2. Apache 2.2

Apache et Apache2 sont déjà installer dans Solaris mais je préfère installer la dernière version stable de apache 2.2 disponible chez blastwave.

# pkg-get apache2

Le fichier de configuration se apache2 se trouve ici /opt/csw/apache2/etc/httpd.conf vous pouvez l’éditer pour le faire correspondre à vos préférences.

De la même manière que pour mysql on va utiliser SMF pour démarrer et arrêter apache2
Commençons par chercher les différentes version d’apache2 installé :

# svcs -a | grep apache2
disabled 16:06:33 svc:/network/http:apache2
disabled 16:57:48 svc:/network/http:cswapache2

Celui qui nous intéresse, c’est le cswapache2.

# svcadm enable svc:/network/cswapache2

Apache est maintenant démarré :

# svcs -a | grep apache2
disabled 16:06:33 svc:/network/http:apache2
online 17:10:17 svc:/network/http:cswapache2

Vous pouvez tester l’affichage http://localhost

Si vous voulez l’arreter :

# svcadm disable svc:/network/cswapache2

3. PHP5

Installation de PHP5

# pkg-get -i php5
# pkg-get -i libxml2
# pkg-get ap2_modphp5
# pkg-get php5_mysql

A présent on va tester php en créant un phpinfo()

# nano /opt/csw/apache2/share/htdocs/infos.php

Et dans le fichier creer, écrivez :


Si tout est ok en vous rendant sur http://localhost/infos.php vous devriez avoir la page d’information de php.

4. phpmyadmin

# pkg-get -i phpmyadmin

On va copier puis modifier le fichier de configuration :

# cp /opt/csw/apache2/share/htdocs/phpmyadmin/config.sample.inc.php /opt/csw/apache2/share/htdocs/phpmyadmin/config.inc.php

Et on change dans ce fichier l’authentification de cookies vers http.

$cfg[‘Servers’][$i][‘auth_type’] = ‘http’;

Entrez l’addresse : http://localhost/phpmyadmin le login et le mot pass seront ceux que vous avez configurer pour mysql au tout début.

it’s done !


http://www.sun.com/bigadmin/content/submitted/samp.html

http://blogs.sun.com/nealix/entry/samp_solaris_apache_2_mysql
http://www.cacti.net/downloads/docs/contrib/install_solaris.html

Utilisation de sed

Aller cette fois si je jette mon dévolus sur sed.

J’ai besoin de remplacer une chaine par une autre dans un fichier, et ces chaines contiennent des caractères spéciaux de type /. Ce qui arrive très très souvent pour un PATH. Avec sed je vais donc devoit rajouter un \ devant chaque / (logique non ?).

Le PATH courant : /home/artiflo/monweb/rox
Le PATH qui va prendre la place du PATH courant : /home/artiflo/www/loutre
Le fichier qui va etre modifié : /etc/apache2/sites-avaible/artiflo.net

Alors on va commencer par tester le sed sur le fichier sans faire de modification. Sed va affichier le résultat dans la console sans modifier le fichier :

# sed « s/\/home\/artiflo\/monweb\/rox\//\/home\/artiflo\/www\/loutre\//g » /etc/apache2/sites-avaible/artiflo.net

Si le résultat affiché vous conviens alors vous pouvez le modifier en rajoutant -i. Il est recommandé de creer un fichier de backup au cas ou, vous pouvez faire cela en utilisant -i.bak.

# sed -i.bak « s/\/home\/artiflo\/monweb\/rox\//\/home\/artiflo\/www\/loutre\//g » /etc/apache2/sites-avaible/artiflo.net

Enfin il se peut que vous soyez un kikoolol et que vous ayez envie de faire la modification de chaine dans des fichiersde tout un répertoire et les sous répertoire.

# find . -name “*.php” -type f -exec sed -i “s/chaine1/chaine2/g” {} \;

J’ai rajouter la condition que les fichier doivent être des fichier php mais c’est complètement facultatif.

Utilisation de grep

Aller un petit mémo d’utilisation de grep pour rechercher une chaine dans un fichier.

Pour chercher la chaîne artiflo dans tous les fichiers du répertoire courant :

# grep artiflo *

Pour chercher la chaîne artiflo dans tous les fichiers du répertoire courant ainsi que dans les sous-répertoires (le caractère . est un chemin relatif qui désigne le répertoire courant) :

# grep -r artiflo .

Idem recherche précédente, mais en ne retournant que les noms des fichiers qui contiennent artiflo :

# grep -lr artiflo .

find est aussi trés sympa pour rechercher une chaine dans l’ensemble des fichier. Dans cet exemple je recherche la chaine Maxclients dans l’ensemble de l’ordinateur (/) sans spécifier un type de fichier -name « * ».

find / -name « * » -exec grep -Hn « MaxClients » {} \;

PostgreSQL dans une Zone

Après le mini-howto d’installation de glassfish dans une zone. Voici celui pour pgSQL (postgreSQL) dans une zone.

Ce qui est très sympa c’est que pgSQL 8.1 et 8.2 sont déjà installé dans SOLARIS 10 et Solaris SXDE (Solaris Express Developer Edition). Donc pas besoin de les installer.

Aller c’est partie pour la création de la zone de la même façons que pour glassfish :

# mkdir /var/zones/z_pgsql
# chmod –R 700 /var/zones/z_pgsql

Je ne vais pas créer de pool de ressource CPU mains directement créer la zone. Je reviendrais dans un autre billet à ce sujet.

# zonecfg -z z_pgsql
sunrise: No such zone configured
Use ‘create’ to begin configuring a new zone.
#zonecfg:sunrise> create # Création de la Zone
#zonecfg:sunrise> set zonepath=/var/zones/z_pgsql #Dossier de la zone
#zonecfg:sunrise> add net # Ajout d’une configuration réseau
#zonecfg:sunrise:net> set address=192.168.1.11 #Ip de la zone
#zonecfg:sunrise:net> set physical=pcn0 #Nom de l’interphase réseau physique (vmware pour l’exemple)
#zonecfg:sunrise:net> end # fin de la configuration réseaux
#zonecfg:sunrise> verify # Vérification de la configuration
#zonecfg:sunrise> commit # Validation de la configuration
#zonecfg:sunrise> exit # Sortie de la configuration de zone

On va vérifier la configuration :

# zonecfg -z z_pgsql info
zonepath: /var/zones/z_pgsql
autoboot: false
pool:
inherit-pkg-dir:
dir: /lib
inherit-pkg-dir:
dir: /platform
inherit-pkg-dir:
dir: /sbin
inherit-pkg-dir:
dir: /usr
net:
address: 192.168.1.121
physical: pcn0

Maintenant que la configuration de la zone est prête on va passer à la création à proprement parlé de la zone. Cette étape peut être relativement longue celon les performances de votre machine.

# zoneadm –z z_pgsql verify
# zoneadm -z z_pgsql install
Preparing to install zone .
Creating list of files to copy from the global zone.
Copying <2812> files to the zone.
Initializing zone product registry.
Determining zone package initialization order.
Preparing to initialize <1200> packages on the zone.
Initialized <1200> packages on zone.
Zone is initialized.
Installation of <1> packages was skipped.
Le fichier
contient un journal de l’installation de la zone.

Vous pouvez vérifier que la zone z_pgsql est bien installé :

# zoneadm list -cvi

Maintenant que la zone est créer, on va pouvoir la démarrer :

#zoneadm –z z_pgsql boot -s

Lors du premier boot il faut configurer la zone en fonction de vos préférence. Parfois Solaris a un peu du mal a reconnaitre le F2 dans ce utiliser la combinaison de touche MAJ + Esc + 2 pour validé les étapes.

On se loge sur la zone z_glassfish :

# zlogin –C z_glassfish

Pour ne pas encombré inutilement d’image le billet, je vous ai fait un récapitulatif des différentes options que vous devrez choisir (dans l’ordre d’affichage) :

Langue : Français
Environnement Localisé : France(UTF8)
Emulateur de terminal CDE (dtterm)
Hostname: glassfish
Configuration kerberos: No
Name Service : DNS
Hostname : pgsql
Nameserver : 208.67.222.222 #nameserver de opendns
Nameserver : 208.67.220.220 #nameserver de opendns
NFS4 configuration: Choix par defaut.
Time zone: Europe
Countries et regions : France
Mot de passe : password

A présent la console doit vous demander de vous identifier

glassfish console login : root
password : password

Voila vous êtes dans votre zone, vous pouvez faire exit pour en sortir et retour dans votre zone globale solaris.

Maintenant activons postgreSQL.
On commence par switcher vers l’utilisateur postfres :

# su – postgres

On creer ensuite le cluster de la DB pgsql :

$ /usr/postgres/8.2/bin/initdb -D /var/postgres/8.2/data

Si tout c’est bien passé vous devriez avec un message de ce type :

The files belonging to this database system will be owned by user « postgres ».
This user must also own the server process.

The database cluster will be initialized with locales
COLLATE: fr_FR.UTF-8
CTYPE: fr_FR.UTF-8
MESSAGES: fr.UTF-8
MONETARY: fr_FR.UTF-8
NUMERIC: fr_FR.UTF-8
TIME: fr_FR.UTF-8
The default database encoding has accordingly been set to UTF8.

fixing permissions on existing directory /var/postgres/8.2/data … ok
creating subdirectories … ok
selecting default max_connections … 100
selecting default shared_buffers/max_fsm_pages … 32MB/204800
creating configuration files … ok
creating template1 database in /var/postgres/8.2/data/base/1 … ok
initializing pg_authid … ok
initializing dependencies … ok
creating system views … ok
loading system objects’ descriptions … ok
creating conversions … ok
setting privileges on built-in objects … ok
creating information schema … ok
vacuuming database template1 … ok
copying template1 to template0 … ok
copying template1 to postgres … ok

WARNING: enabling « trust » authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

/usr/postgres/8.2/bin/postgres -D /var/postgres/8.2/data
or
/usr/postgres/8.2/bin/pg_ctl -D /var/postgres/8.2/data -l logfile start

Si vous voulez acceder a votre serveur autre qu’en local il faudra changer la configuration de listen_address dans /var/postgre/8.2/data/postresql.conf :

# nano /var/postgre/8.2/data/postresql.conf
listen_address = « IP » # ou * si vous voulez que toutes les IP y accede

Enfin il existe plusieurs façons de démarrer pgSQL, je vais vous présenter celle avec SMF. En temps que root on démare postgreSQL avec SMF.

# /usr/sbin/svcadm enable postgresql:version_82

ou bien tout simplement

# /usr/postgres/8.2/bin/postgres -D /var/postgres/8.2/data

A présent je vais installer pgadmin qui est GUI pour postreySQL qui fonctionne sous windows, linux et Solaris. Je vais expliquer ici l’installation pour Solaris.

Une fois téléchargé :

# gzip -d pgadmin3-1.8.0_x86.tar.gz
# tar -xvf pgadmin3-1.8.0_x86.tar
# pkgadd -d . pgadmin3

Les binaire se trouve dans /opt/pgadmin3/bin, donc si vous voulez y acceder directement ajouter le a votre PATH.

http://www.postgresql.org/ftp/pgadmin3/release/v1.8.0/solaris/x86/

C’est finit.

La doc qui m’a permis d’écrire ce billet :

http://www.sun.com/software/solaris/howtoguides/postgresqlhowto.jsp
http://docs.sun.com/app/docs/doc/819-5578/6n7lcpcl2?a=view

Bench HDD : Bonnie++

On m’a conseillé d’utiliser Bonnie++ afin de bencher plus en profondeur.

Télécharger bonnie ici : http://www.coker.com.au/bonnie++/

# wget http://www.coker.com.au/bonnie++/bonnie++-1.03c.tgz
# tar -zxvf bonnie++-1.03c.tgz
# cd bonnie++
# ./configure
# make
# make install

A présent il ne vous reste plus qu’a spécifié la taille du fichier de test et son répertoire. Dans mon cas un fichier de 8GB dans /home/artiflo/temp. Il est conseillé que la taille du fichier de test sous le double de la mémoire.

# bonnie++ -s 8000 -d /home/artiflo/temp

Obtenir des informations sur le HDD

Il est assez facile d’obtenir une ribambelle d’information sur votre disque dur avec l’intermédiaire de smartmontools.

# apt-get install smartmontools

Pour obtenir les information minimum à l’adaptant à votre besoin:

# smartctl -i -d ata /dev/sda

Et enfin pour obtenir toutes les infos, dont les erreurs SMART :

# smartctl -d ata -a /dev/sda