{"id":54,"date":"2011-01-15T19:50:01","date_gmt":"2011-01-15T18:50:01","guid":{"rendered":"https:\/\/arliguy.net\/?p=54"},"modified":"2011-02-24T16:59:53","modified_gmt":"2011-02-24T15:59:53","slug":"tomcat-et-oracle-sur-un-ovh-mcloud","status":"publish","type":"post","link":"https:\/\/arliguy.net\/2011\/01\/15\/tomcat-et-oracle-sur-un-ovh-mcloud\/","title":{"rendered":"Tomcat et Oracle sur un OVH mCloud"},"content":{"rendered":"

Pr\u00e9paration<\/h1>\n

Dans cet exemple, nous nous basons sur une installation avec un Ubuntu Server 10.04 LTS sur un mC OVH<\/a>. Nous allons installer Tomcat 6.0<\/a>, Oracle XE<\/a> (10g Express Edition) et MySQL<\/a>. Ainsi nous aurons une jolie VM pour tester plein de sc\u00e9narios possibles : parfait pour mettre rapidement en ligne des d\u00e9veloppements ou faire des environnements de tests jetables : la facturation \u00e0 l’heure du mC nous offre bcp de souplesse.<\/p>\n

Dans un premier temps nous allons mettre \u00e0 jour la distribution et faire quelques param\u00e9trages de base.\u00a0 Ensuite nous nous attaquerons \u00e0 l’installation des diff\u00e9rents logiciels.<\/p>\n

Configurer SSH sur poste client<\/h2>\n

Pour se connecter \u00e0 un mC par ssh il faut utiliser une clef qui est g\u00e9n\u00e9r\u00e9e par l’interface d’administration. Nommons cette clef key.pem<\/em>. Pour pouvoir l’utiliser pour se connecter \u00e0 un mC, voici la proc\u00e9dure :<\/p>\n

1 placer la clef dans le dossier $HOME\/.ssh<\/h3>\n

2 modifier les droits sur cette clef :<\/h3>\n
%> chmod 600 key.pem<\/pre>\n

3 utiliser ssh en fournissant le chemin de la clef :<\/h3>\n
%> ssh -i $HOME\/.ssh\/key.pem root@mc-178-...<\/pre>\n

Pour ne pas se compliquer la vie \u00e0 indiquer chaque fois le chemin vers la clef \u00e0 utiliser, il faut indiquer dans le fichier $HOME\/.ssh\/config<\/em> quelle clef utiliser pour quel host. Faire “man ssh_config<\/em>” pour plus d’informations. Voici comment proc\u00e9der :<\/p>\n

%> vi $HOME\/.ssh\/config<\/pre>\n

Host mc-178-…
\nIdentityFile ~\/.ssh\/key.pem<\/p><\/blockquote>\n

En r\u00e9p\u00e9tant le bloc Host\/IdentityFile<\/em> autant de fois que vous avez de mC. Attention<\/strong> cependant, quand le mC est archiv\u00e9 puis red\u00e9marr\u00e9 depuis l’interface il change de nom, il faudra donc mettre \u00e0 jour ce fichier de configuration.<\/p>\n

Mettre \u00e0 jour la distribution<\/h2>\n
%> aptitude update\r\n%> aptitude upgrade<\/pre>\n

Installer rcconf<\/h2>\n
%> aptitude install rcconf<\/pre>\n

D\u00e9-activer bind9<\/h2>\n

Lancer rcconf <\/em>et d\u00e9cocher bind9<\/em> dans la liste. mdadm<\/em> aussi, il n’y a pas de raid sur le cloud. La liste de ce qui est supprimable n’est pas exhaustive mais je n’ai pas cherch\u00e9 plus.<\/p>\n

Installer un JDK<\/h2>\n

Rien de plus simple, on passe par aptitude<\/em> :<\/p>\n

%> aptitude install openjdk-6-jdk<\/pre>\n

Ensuite v\u00e9rifier si il est bien install\u00e9 :<\/p>\n

%> java -version<\/pre>\n

java version “1.6.0_18”<\/p>\n

OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-4ubuntu3)<\/p>\n

OpenJDK Server VM (build 16.0-b13, mixed mode)<\/p><\/blockquote>\n

Installer Tomcat 6.0<\/h2>\n
%> aptitude install tomcat6 tomcat6-admin libtcnative-1<\/pre>\n

L’installation de libtcnative-1<\/em> nous permet d’avoir Tomcat qui utilise APR<\/a>. Nous installons aussi tomcat6-admin<\/em> pour avoir les applications d’administration de Tomcat. Elles nous seront utiles pour d\u00e9ployer de nouveaux contextes. Il nous faut ensuite installer les API JavaMail <\/a>et JavaBeans Activation Framework<\/a> (JAF) :<\/p>\n

%> aptitude install libgnujaf-java libgnumail-java<\/pre>\n

Ajouter ces biblioth\u00e8ques dans celles charg\u00e9es par Tomcat.<\/p>\n

%> ln -s \/usr\/share\/java\/gnumail.jar \/usr\/share\/tomcat6\/lib\/\r\n%> ln -s \/usr\/share\/java\/activation.jar \/usr\/share\/tomcat6\/lib\/<\/pre>\n

Il est possible de modifier les param\u00e8tres utilis\u00e9s par la jvm<\/em> qui lancera tomcat en \u00e9ditant le fichier \/etc\/default\/tomcat6<\/em>.\u00a0 Par exemple :<\/p>\n

JAVA_OPTS=”${JAVA_OPTS} -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Xms64m -Xmx256m -Dfile.encoding=UTF8 -XX:MaxPermSize=128m”<\/p><\/blockquote>\n

Installer Oracle XE<\/h2>\n

Ajouter la source oracle \u00e0 la liste des sources (inspir\u00e9 de la doc ubuntu-fr<\/a>) :<\/p>\n

%> vi \/etc\/apt\/sources.list<\/pre>\n

Ajouter la ligne :<\/p>\n

deb http:\/\/oss.oracle.com\/debian unstable main non-free<\/p><\/blockquote>\n

Puis faire les commandes :<\/p>\n

%> wget http:\/\/oss.oracle.com\/el4\/RPM-GPG-KEY-oracle\u00a0 -O- | sudo apt-key add -\r\n%> aptitude update\r\n%> aptitude install oracle-x<\/pre>\n

Le soucis, c’est qu’Oracle XE a des besoins minimum en ressources et qu’il les v\u00e9rifie avant de s’installer. Sur un mc classique, on va tomber sur un message de ce genre :<\/p>\n

This system does not meet the minimum requirements for swap space.\u00a0 Based on
\nthe amount of physical memory available on the system, Oracle Database 10g
\nExpress Edition requires 1024 MB of swap space<\/strong>. This system has 0 MB
\nof swap space.\u00a0 Configure more swap space on the system and retry the installation.<\/p><\/blockquote>\n

En effet, les mc viennent avec aucun swap… Comme il n’est pas possible de faire une installation d’Oracle XE sans swap, on va essayer d’en cr\u00e9er un. Il veut un swap de 1024 Mo, alors on va lui en donner un en prenant sur l’espace disque :<\/p>\n

%> dd if=\/dev\/zero of=\/swapfile bs=1M count=1024\r\n%> mkswap \/swapfile\r\n%> swapon \/swapfile<\/pre>\n

Nous pouvons re-essayer d’installer XE :<\/p>\n

%> aptitude install oracle-xe<\/pre>\n

Et configurer XE :<\/p>\n

%> \/etc\/init.d\/oracle-xe configure<\/pre>\n

Attention <\/strong>\u00e0 ne pas laisser APEX sur le port 8080, nous avons en effet Tomcat qui l’utilise. Prenons le 9090 par exemple.<\/p>\n

Nous allons aussi param\u00e9trer bash <\/em>pour avoir les variables d’environnement pour lancer les commande imp <\/em>et exp<\/em> et sqlplus<\/em>.<\/p>\n

On ouvre le fichier .bashrc :<\/p>\n

%> vi $HOME\/.bashrc<\/pre>\n

Et on ajoute :<\/p>\n

export PATH=$PATH:\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server\/bin<\/p>\n

export ORACLE_HOME=\/usr\/lib\/oracle\/xe\/app\/oracle\/product\/10.2.0\/server<\/p>\n

export ORACLE_SID=XE<\/p><\/blockquote>\n

Charger ces modifications :<\/p>\n

%> source $HOME\/.bashrc<\/pre>\n

Nous aimerions bien pouvoir acc\u00e9der \u00e0 APEX depuis autre chose que localhost, alors on fait :<\/p>\n

%> sqlplus<\/pre>\n

Se connecter avec l’utilisateur SYSTEM (le mot de passe a \u00e9t\u00e9 d\u00e9finie \u00e0 l’\u00e9tape de configuration d’XE). Et saisir :<\/p>\n

SQL> EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);<\/p><\/blockquote>\n

L’acc\u00e8s est donc maintenant possible par : http:\/\/ip.du.mC:9090\/apex\/<\/p>\n

Utiliser le pilote JDBC d’Oracle<\/h3>\n

Pour pouvoir se connecter \u00e0 Oracle depuis Tomcat, nous allons avoir besoin d’ajouter le pilote JDBC aux\u00a0 biblioth\u00e8ques charg\u00e9es par Tomcat :<\/p>\n

%> ln -s ${ORACLE_HOME}\/jdbc\/lib\/ojdbc14.jar \/usr\/share\/tomcat6\/lib\/<\/pre>\n

Installer MySQL<\/h2>\n
%> aptitude install libmysql-java<\/pre>\n

CREATE DATABASE nomDB DEFAULT CHARACTER SET utf8;<\/p>\n

GRANT ALL PRIVILEGES ON db_base.* TO db_user @’%’ IDENTIFIED BY ‘db_passwd’;<\/p>\n

Red\u00e9marrage apr\u00e8s archivage du mC<\/h2>\n

Suite \u00e0 un arr\u00eat prolong\u00e9 du mC, il peut changer de nom et d’ip (voir dans le manager ovh). Dans ce cas, Oracle ne sera plus accessible car il est assez sensible \u00e0 ce genre de param\u00e8tres. Il va donc falloir r\u00e9aliser plusieurs \u00e9tapes :<\/p>\n

\u00c9tape 1 : Renommer le host<\/h3>\n

Le nom publique de la machine est bas\u00e9 sur l’ip, par exemple mc-178-32-111-111.ovh.net. Si l’ip a chang\u00e9, son nom aussi, cependant la configuration de la VM n’en tient pas compte. Il faut donc \u00e9diter le fichier configuration correspondant :<\/p>\n

%> vi \/etc\/hostname<\/pre>\n

Et adapter le nom du hostname avec le nom affich\u00e9 dans le manager OVH. Pour que la modification soit prise en compte :<\/p>\n

%> service hostname start<\/pre>\n

On peut v\u00e9rifier avec :<\/p>\n

%> hostname --fqd<\/pre>\n

\u00c9tape 2<\/h3>\n

Il faut ensuite stopper Oracle XE – si il est actif :<\/p>\n

%> service oracle-xe stop<\/pre>\n

Puis changer sa configuration :<\/p>\n

%> vi $ORACLE_HOME\/network\/admin\/listener.ora<\/pre>\n

Rechercher un bloc qui ressemble \u00e0 ceci :<\/p>\n

LISTENER =
\n(DESCRIPTION_LIST =
\n(DESCRIPTION =
\n(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
\n(ADDRESS = (PROTOCOL = TCP)(HOST = mc-178-32-xxx-xxx.ovh.net<\/strong>)(PORT = 1521))
\n))<\/p><\/blockquote>\n

Et adapter le HOST=mc-178…<\/em> avec la valeur qui a \u00e9t\u00e9 utilis\u00e9e dans l’\u00e9tape 1.<\/p>\n

Ensuite on red\u00e9marre Oracle :<\/p>\n

%> service oracle-xe start\r\n<\/pre>\n

Ne pas s’emb\u00eater avec le changement d’IP<\/h2>\n

Il est aussi possible d’avoir une adresse fixe pour chaque mC. Pour cela, depuis l’interface d’administration du mC, il faut ouvrir le d\u00e9tail du projet courant en cliquant sur l’ic\u00f4ne “\u00c9diter ce projet<\/em>“. Dans le dialogue qui s’ouvre, rep\u00e9rer le champ “Zone (DNS)<\/span><\/em>“. Il faut r\u00e9cup\u00e9rer cette valeur et la concat\u00e9ner avec le nom du mC. Exemple :<\/p>\n