Quantcast
Channel: Quidquid » PostgreSQLQuidquid
Viewing all articles
Browse latest Browse all 2

Debian 6 beta2 – Serveurs : Apache, Tomcat & Postgres

$
0
0

Une série de doc pour garder une archive quelque part…

Le but est d’installer et de configurer un serveur sans IHM sur une base de Debian 6 (j’utilise la beta 2 pour l’instant, la stable n’est pas encore sortie).

J’ai mis tous les logiciels dans le même serveur c’est pour simplifier le tuto, dans le monde réel créez un ou plusieurs serveurs pour chaque logiciel.

Logiciels installé dans ce serveur :
- Apache http serveur 2.3.8
- Apache Tomcat 6 et Java
- PostgreSQL 9

A la question pourquoi ne pas utiliser les installeurs fourni par apt, je répondrai que sur un système en production j’ai besoin de maitriser les versions installées notamment en cas de retour arrière. Pour ça un mécanisme à base de lien symbolique permet une souplesse toute particulière.

———————————————
———- INSTALLATION

Lancez l’installeur en mode expert (graphique ou non c’est vous qui voyez) et installez le bouzin en ne sélectionnant aucun environnement graphique (ça sert à rien…)…

DHCP ou ip statique on s’en moque… pour l’instant et tant que vous êtes connectés.
Créez le compte root mais pas de compte utilisateur (enfin vous faites ce qui vous arrange, dans ce tuto ce n’est pas utile).

Lorsque vous arrivez au choix des paquets pour la sélection des logiciels, choisissez seulement :
- Serveur SSH
- Utilitaires standard du système

Première connexion

Une fois tout installé, se connecter en ssh et mettre à jour et en installant 2 ou 3 choses en plus :
[shell]
apt-get install -y xinetd unzip elinks bison g++
[/shell]
Mise à jour des profils :
[shell]
cat >> /etc/profile << “EOF”

alias ll=’ls -la –color’
alias df=’df -h’
alias ici=’du -m -h –max-depth=2′

EOF
[/shell]

———————————————
———- LE RESEAU

Configuration d’une adresse IP statique
Il faut regarder à 2 endroits c’est tout. Histoire de vérifier que tout est ok.

Paramètres nécessaire à remplacer par vos informations :
- Adresse IP : 192.168.2.166
- Nom de la machine : SERVER-01
- Nom de la carte : eth0
- Passerelle : 192.168.2.1

Le nom de la machine se trouve dans le fichier /etc/hostname :
[shell]vi /etc/hostname[/shell]

La conf dhcp ou ip statique est là /etc/network/interfaces :
[shell]/etc/network/interfaces[/shell]
Il faut remplacer (si vous étiez en dhcp) :
[shell]iface eth0 inet dhcp[/shell]
par
[shell]
iface eth0 inet static
address 192.168.2.166
netmask 255.255.255.0
gateway 192.168.2.1
[/shell]

Et on relance le réseau :
[shell]
ifdown eth0
ifup eth0
[/shell]

Puis on vérifie que tout est OK…
[shell]
ifconfig
[/shell]

Configuration d’une adresse IP dynamique

La conf dhcp est là /etc/network/interfaces et ce fichier doit ressembler à ça :
[shell]vi /etc/network/interfaces[/shell]

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

Et on relance le réseau :
[shell]
ifdown eth0
ifup eth0
[/shell]

———————————————
———- LE FIREWALL

Nous allons utiliser iptables qui est installé par défaut.

Comme pour faire toutes ces configurations je suis connecté en ssh, je commence par autoriser tous les accès pour ne pas me retrouver bloqué :
[shell]
iptables -P INPUT ACCEPT
[/shell]
Ensuite on supprime toutes les règles existantes :
[shell]
iptables -F
[/shell]

Maintenant nous allons ajouter (-A) des règles.
Tout ce qui va vers localhost ou 127.0.0.1 (lo) est accepté :
[shell]
iptables -A INPUT -i lo -j ACCEPT
[/shell]
Toutes les connexions qui sont déjà active doivent être gardées :
[shell]
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
[/shell]
Tout le reste est droppé (on ne le regarde même pas) :
[shell]
iptables -P INPUT DROP
[/shell]
Je n’utilise pas mon serveur comme un routeur dons je droppe également ce qui est forwardé (si vous utilisez votre serveur comme un routeur n’ajoutez pas cette règle) :
[shell]
iptables -P FORWARD DROP
[/shell]
J’autorise le traffic à ressortir du serveur (sisi ça peut servir) :
[shell]
iptables -P OUTPUT ACCEPT
[/shell]
Pour finir j’autorise les ping :
[shell]
iptables -A INPUT -i eth0 -p icmp -j ACCEPT
[/shell]

On peut maintenant autoriser les connexions sur le port 22 (ssh) :
[shell]
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
[/shell]
Ou alors on peut n’autoriser les connexions ssh que sur un réseau local :
[shell]
iptables -A INPUT -p tcp -s 192.168.0.0/24 –dport 22 -j ACCEPT
[/shell]

Il est possible de lister les règles existantes histoire de vérifier avant l’enregistrement :
[shell]
iptables -L
[/shell]
Puis l’on sauvegarde les règles existantes :
[shell]
iptables-save > /etc/iptables.up.rules
[/shell]

Pour lancer iptables au démarrage du serveur on créé un fichier contenant :
[shell]
cat > /etc/network/if-pre-up.d/iptables << “EOF”
#!/bin/bash
/sbin/iptables-restore < /etc/iptables.up.rules
EOF
[/shell]

Et on lui ajoute les droit d’exécution :
[shell]chmod +x /etc/network/if-pre-up.d/iptables[/shell]

Et voilà.

———————————————
———- APACHE 2

Installation de librairies supplémentaires :

apt-get install libapr1 libapr1-dev libpcre3 libpcre3-dev libaprutil1-dev

libexpat1-dev

Téléchargement des sources d’Apache :
[shell]
cd ~
wget -c http://apache.crihan.fr/dist/httpd/httpd-2.3.8.tar.gz
[/shell]
Décompression :
[shell]
tar zxvf httpd-2.3.8.tar.gz
cd ~/httpd-2.3.8/
[/shell]
Préparation de la compilation :
[shell]
./configure –prefix=/usr/local/apache-2.3.8 –enable-so –enable-ssl –enable-ssl=shared –enable-rewrite –enable-rewrite=shared –with-z=/usr[/shell]
Compilation et installation dans le répertoire /usr/local/apache-2.3.8 :
[shell]
make
make install
[/shell]
Un petit lien symbolique qui sera bien utile en cas de migration vers une version ultérieure plus tard :
[shell]
ln -s /usr/local/apache-2.3.8/ /usr/local/apache
[/shell]
Un peu de ménache :
[shell]
cd ~
rm -Rf ~/httpd-2.3.8/
[/shell]
Création du groupe et de l’utilisateur pour Apache
[shell]
groupadd www
useradd -g www www
[/shell]
Création d’un script de lancement d’Apache dans /etc/init.d/
[shell]
cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
[/shell]
On lance apache :
[shell]
/etc/init.d/httpd start
[/shell]
Vérifions que le service est bien lancé :
[shell]ps x | grep httpd[/shell]
Ce qui doit donner un truc du genre :
[shell]30202 ? Ss 0:00 /usr/local/apache-2.3.8/bin/httpd -k start[/shell]
On stoppe apache :
[shell]
/etc/init.d/httpd stop
[/shell]

Et hop on active apache au lancement du serveur (puis on le coupe lors de l’arrêt), pour ça, éditez le fichier :
[shell]vi /etc/init.d/httpd[/shell]
Pour ajouter les lignes suivantes au début juste après #!/bin/sh :

### BEGIN INIT INFO
# Provides:          httpd
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:     0 1 6
# X-Interactive:     true
# Description: Starts Apache server at boot time
# Short-Description:    Starts Apache
### END INIT INFO

Et lancez la commande :
[shell]update-rc.d httpd defaults[/shell]
Il faut maintenant préparer Apache.

Création des répertoires qui nous servirons à déployer nos sites :
[shell]
mkdir -p /home/www/html
mkdir -p /home/www/cgi-bin
[/shell]
Un petit fichier pour nos amis les robots :
[shell]
cat > /home/www/html/robots.txt << “EOF” User-agent: * Disallow: / EOF [/shell] Et un fichier d’accueil pour dire bonjour à la planète entière : [shell] cat > /home/www/html/index.html << “EOF”
Bonjour !
EOF
[/shell]
Affectation des droits à tous ces répertoires :
[shell]
chgrp -R www /home/www
chmod -R 775 /home/www
[/shell]
Un peu de configuration maintenant.

On commence par sauvegarder puis éditer le fichier /usr/local/apache/conf/httpd.conf :
[shell]
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.old
[/shell]
Puis on édite le fichier (pour plus d’info sur vi tapez “vi commandes de bases” dans un site de recherche quelconque) :
[shell]
vi /usr/local/apache/conf/httpd.conf
[/shell]
Modifier les lignes suivantes pour correspondre à nos besoins :
- User www
- Group www
- ServerAdmin moncourriel@mondomaine.xx
- ServerName 192.168.2.42:80
- Listen 80
- DirectoryIndex index.html index.php index.jsp
- DocumentRoot/home/www/html
- /home/www/html”>
- ScriptAlias /cgi-bin/ “/home/www/cgi-bin/”
- /home/www/cgi-bin”>

Options FollowSymLinks
AllowOverride All
Allow from all

Le firewall
N’oublions pas de régler le firewall histoire qu’il autorise les connexions sur notre serveur web (http et https) :
[shell]
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
iptables-save > /etc/iptables.up.rules
[/shell]

Il ne reste plus qu’à démarrer Apache pour voir si tout fonctionne :
[shell]
/etc/init.d/httpd start
[/shell]
Et aller a l’adresse :
[shell]
elinks http://127.0.0.1
[/shell]
Doit afficher “Bonjour !

———————————————
———- JAVA 6

Récupérer le bon JDK (au 17/12/2010 : jdk-6u23-linux-i586.bin) par exemple en le téléchargeant avec elinks :
[shell]
cd ~
elinks http://java.sun.com
[/shell]
Une fois le téléchargement terminé, permettre l’exécution du fichier :
[shell]chmod 700 jdk-6u23-linux-i586.bin[/shell]
L’exécuter :
[shell]
chmod +x jdk-6u23-linux-i586.bin
./jdk-6u23-linux-i586.bin
[/shell]
Appuyer sur ‘Entrée’ à la fin…

Maintenant on va créer les répertoires et les alias pour simplifier les mises à jour + tard :
[shell]
mv jdk1.6.0_23 /usr/local/java1.6.0_23
ln -s /usr/local/java1.6.0_23/ /usr/local/java
[/shell]

Ajoutons à la fin de /etc/profile des choses (JAVA_HOME + path vers le bin)
[shell]
cat >> /etc/profile << “EOF”

JAVA_HOME=/usr/local/java
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin

EOF
[/shell]
Déconnexion et connexion puis on teste que ça fonctionne :
[shell]
java -version
[/shell]
Devrait donner :

java version "1.6.0_23"
Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode, sharing)

Et voilà.

Le firewall
N’oublions pas de régler le firewall au cas ou vous voudriez faire du remote debugging (changez le port en fonction de voter configuration) :
[shell]
iptables -A INPUT -i eth0 -p tcp –dport 8000 -j ACCEPT
iptables-save > /etc/iptables.up.rules
[/shell]

———————————————
———- TOMCAT 6

Allons dans le répertoire de téléchargement et récupérons tomcat (si ce mirroir ne répond pas trouvez-en un autre :-) ) :
[shell]
cd ~
wget -c http://mirror.ovh.net/ftp.apache.org/dist/tomcat/tomcat-6/v6.0.29/bin/apache-tomcat-6.0.29.tar.gz
[/shell]
Décompression de tomcat dans /usr/local/ et création des liens symbolique pour simplifier les changements de versions plus tard :
[shell]
cd /usr/local/
tar zxvf ~/apache-tomcat-6.0.29.tar.gz
mv apache-tomcat-6.0.29 tomcat-6.0.29
ln -s tomcat-6.0.29/ tomcat
[/shell]
Création de l’utilisateur qui contrôlera le processus :
[shell]
groupadd tomcat
useradd -g tomcat tomcat
[/shell]
Affectation des droits :
[shell]
chown tomcat:tomcat /usr/local/tomcat
chown -R tomcat:tomcat /usr/local/tomcat-6.0.29
[/shell]
Création d’un lanceur pour tomcat :
[shell]
cat > /etc/init.d/tomcat << “EOF” #!/bin/bash ### BEGIN INIT INFO # Provides: tomcat # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: true # Description: Start up the Tomcat servlet engine at boot time # Short-Description: Starts Tomcat ### END INIT INFO RETVAL=$? TOMCATHOME=”/usr/local/tomcat” case “$1″ in start) if [ -f $TOMCATHOME/bin/startup.sh ]; then echo $”Starting Tomcat” /bin/su – tomcat -c $TOMCATHOME/bin/startup.sh fi ;; stop) if [ -f $TOMCATHOME/bin/shutdown.sh ]; then TOMCAT_PID=`ps -ef | grep java | grep tomcat | awk ‘{print $2}’` echo $”Stopping Tomcat with PID=$TOMCAT_PID” /bin/su – tomcat -c $TOMCATHOME/bin/shutdown.sh sleep 15s kill $TOMCAT_PID fi ;; *) echo $”Usage: $0 {start|stop}” exit 1 ;; esac exit $RETVAL EOF [/shell] On rend ce fichier exécutable : [shell] chmod a+x /etc/init.d/tomcat [/shell] On met à jour le fichier des user de tomcat (le fichier par défaut n’est pas top) : [xml] cat > /usr/local/tomcat/conf/tomcat-users.xml << “EOF”

EOF
[/xml]
Affectation des répertoires à l’utilisateur tomcat :
[shell]
chown tomcat:tomcat /usr/local/tomcat
chown -R tomcat:tomcat /usr/local/tomcat-6.0.29
[/shell]
Sauvegarde du fichier de configuration original :
[shell]
mv /usr/local/tomcat/conf/server.xml /usr/local/tomcat/conf/server.xml.ORIG
[/shell]
Création d’un fichier de configuration qui est prêt à fonctionné en mode connecteur avec Apache :
[xml]
cat > /usr/local/tomcat/conf/server.xml << “EOF”

 
 

 

 

 

 

EOF
[/xml]
Pour faire fonctionner Tomcat en standelone il suffit d’ajouter la ligne suivante :
[xml]

[/xml]

On arrête tomcat (au cas ou il à été démarré) :
[shell]
chmod 700 /etc/init.d/tomcat
/etc/init.d/tomcat stop
[/shell]
On permet à Tomcat de se lancer au démarrage du serveur (et de se couper à l’arrêt du serveur)
[shell]
update-rc.d tomcat defaults
[/shell]
Ajoutons à la fin de /etc/profile des choses (CATALINA_HOME) :
[shell]
cat >> /etc/profile << “EOF”

CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME

EOF
[/shell]
On lance tomcat :
[shell]
/etc/init.d/tomcat start
[/shell]
On regarde si Server started s’affiche à la fin du fichier de log :
[shell]
tail -f /usr/local/tomcat/logs/catalina.out
[/shell]
Ctrl + c pour sortir du tail.

Le firewall
N’oublions pas de régler au besoin le firewall histoire qu’il autorise les connexions sur notre serveur tomcat :
[shell]
iptables -A INPUT -p tcp –dport 8080 -j ACCEPT
iptables -A INPUT -p tcp –dport 8009 -j ACCEPT
iptables-save > /etc/iptables.up.rules
[/shell]

———————————————
———- POSTGRESQL 9

Commençons par installer 2 librairies qui nous servirons durant la compilation de Postgres :
[shell]
apt-get install libreadline-dev gettext
[/shell]

Allons dans le répertoire de téléchargement et récupérons les sources de Postgres :
[shell]
cd ~
wget -c http://ftp4.fr.postgresql.org/pub/mirrors/postgresql/source/v9.0.2/postgresql-9.0.2.tar.gz
[/shell]
Decompression, préparation de la compilation, compilation et installation dans le répertoire /usr/local/pgsql-9.0.2 :
[shell]
tar zxvf postgresql-9.0.2.tar.gz
cd ~/postgresql-9.0.2
./configure –prefix=/usr/local/pgsql-9.0.2 –enable-nls=’fr’ –with-openssl –enable-thread-safety
make
make install
[/shell]
Copions le script de lancement de Postgres dans /etc/rc.d/init.d/ :
[shell]
cp contrib/start-scripts/linux /etc/init.d/pgsql
chmod 744 /etc/init.d/pgsql
[/shell]
Un peu de ménage :
[shell]
cd ~
rm -Rf postgresql-9.0.2
[/shell]
Puis l’on créer l’utilisateur qui exécutera le process Postgres :
[shell]
groupadd postgres
useradd -g postgres postgres
mkdir -p /home/postgres/data
chown postgres /home/postgres/data
[/shell]
Création d’un lien symbolique pour simplifier une éventuelle migration + tard :
[shell]
rm -f /usr/local/pgsql
ln -s /usr/local/pgsql-9.0.2/ /usr/local/pgsql
[/shell]
On se connecte avec l’utilisateur postgres :
[shell]
su – postgres
[/shell]
Et on initialise la base de données :
[shell]
/usr/local/pgsql/bin/initdb -D /home/postgres/data -A md5 -W -E UTF-8
Saisissez le nouveau mot de passe du super-utilisateur : adminPassword
[shell]
On autorise la connexion distante aux bases de données :
[shell]
cat >> /home/postgres/data/pg_hba.conf << “EOF”

host all all 192.168.2.0 255.255.0.0 md5
EOF
[/shell]
On déconnecte l’utilisateur Postgres (Ctrl + D) ou :
[shell]
exit
[/shell]
On édite le fichier de lancement de Postgres :
[shell]
vi /etc/init.d/pgsql
[/shell]
Pour ajouter les lignes suivantes au début juste après #!/bin/sh :

### BEGIN INIT INFO
# Provides:          pgsql
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Description:       Starts PostgreSQL server at boot time
# Short-Description: Starts PostgreSQL 
### END INIT INFO

Et lancez la commande :
[shell]update-rc.d pgsql defaults[/shell]
Il faut maintenant préparer Apache.

Pour d’une part préciser le répertoire de destination :
[shell]
# Data directory
PGDATA=”/home/postgres/data”
[/shell]
Et d’autre part, remplacer les 2 :
[shell]
$DAEMON -D
[/shell]
par
[shell]
$DAEMON -i -D
[/shell]
Pour autoriser les connexions distantes (clients SQL)

Ensuite on affecte les droit qui vont bien à tous les répertoires :
[shell]
chmod 700 /etc/init.d/pgsql
/etc/init.d/pgsql stop
/etc/init.d/pgsql start
[/shell]

Et voilà.

Le firewall
N’oublions pas de régler le firewall histoire qu’il autorise les connexions distantes sur notre serveur :
[shell]
iptables -A INPUT -p tcp –dport 5432 -j ACCEPT
iptables-save > /etc/iptables.up.rules
[/shell]

 


Viewing all articles
Browse latest Browse all 2

Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC

Trending Articles


Pangarap Quotes


Dino Rey para colorear


Libros para colorear


Mandalas de flores para colorear


Dibujos para colorear de perros


Renos para colorear


mayabang Quotes, Torpe Quotes, tanga Quotes


Papa Jack Tagalog Love Quotes and Advice for you


RE: Mutton Pies (mely)


Ang Nobela sa “From Darna to ZsaZsa Zaturnnah: Desire and Fantasy, Essays on...


Gwapo Quotes : Babaero Quotes


Winx Club para colorear


Girasoles para colorear


Sapos para colorear


Vacas para colorear


Dromedario para colorear


Long Distance Relationship Tagalog Love Quotes


Love Quotes Tagalog


Mga Tala sa “Unang Siglo ng Nobela sa Filipinas” (2009) ni Virgilio S. Almario


El Vibora (1971) by Francisco V. Coching and Federico C. Javinal





Latest Images

Pangarap Quotes

Pangarap Quotes

Vimeo 10.7.0 by Vimeo.com, Inc.

Vimeo 10.7.0 by Vimeo.com, Inc.

HANGAD

HANGAD

MAKAKAALAM

MAKAKAALAM

Doodle Jump 3.11.30 by Lima Sky LLC

Doodle Jump 3.11.30 by Lima Sky LLC