Installer des applications
sur une machine OpenBSD
1. MySQL
2. PHP4
3.RSync
3bis : Unison
4.Mirror
5.ntp
6. Webmin
7. CVSup
8.apcupsd
9.Vim
10. rdesktop
Voici quelques exemples d'installations.
Si vous avez une version antérieure à la version actuelle,
jetez un coup d'oeil ici.
1 Mysql
Installez le serveur mysql, pour cela aller dans /usr/ports/packages/i386/databases
et faites un pkg_add mysql-server-3.23.42.tgz
Recopiez le fichier de configuration de mysql dans /etc :
cp /usr/ports/databases/mysql/w-mysql-3.23.42/mysql-3.23.42/support-files/my-small.cnf
/etc/mf.cnf
Ajustez le à vos besoins.
Lancez alors /usr/local/bin/mysql_install_db pour créer
les tables dans la base mysql. Normalement vous avez terminé.
Démarrez alors mysql /usr/local/bin/safe_mysqld
&
Afin que celui-ci se lance au démarrage ajoutez dans /etc/rc.local
if [ -x /usr/local/bin/safe_mysqld ];
then /usr/local/bin/safe_mysqld > /dev/null & echo -n ' mysql'
fi
Le répertoire dans lequel mysql place les bases se trouve alors
dans /var/mysql.
Pour finir vous devez absolument modifier les droits afin
de sécuriser mysql.
Coté client:
cd /usr/port/database/mysql
make && make install && make clean
Coté serveur :
installation préalable :
p5-DBI
p5-DBD-Msql-Mysql-1.22.19
cd /usr/port/packages/i386/databases
: Ceci est un lien symbolique vers ../ALL/
pkg_add mysql-server-3.23.49.tgz
===> Creating mysql group for MySQL
===> Creating mysql user for MySQL
useradd: Warning: home directory `/nonexistent' doesn't exist, and
-m was not specified
Preparing db table
Preparing host table
Preparing user table
Preparing func table
Preparing tables_priv table
Preparing columns_priv table
Installing all prepared tables
021001 23:19:17 /usr/local/libexec/mysqld: Shutdown Complete
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! Ne
pas oublier, effectivement..
This is done with:
/usr/local/bin/mysqladmin -u root -p password 'new-password'
/usr/local/bin/mysqladmin -u root -h hendrix -p password 'new-password'
Copier parmi les fichiers de /usr/local/share/mysql celui qui vous siet. (de my-small.cnf à my-huge.cnf) vers /etc/my.cnf
2 PHP
Tout d'abord, vous devez savoir que le serveur apache est
déjà installé sur votre machine OpenBSD, même
si celui-ci n'est pas démarré. Sur OpenBSD le répertoire
dans lequel se trouve la racine de votre serveur apache est /var/www.
Vous y trouverait tout ce qui touche à apache.
Pour démarrer le serveur lui même vous devez faire un
/usr/sbin/apachectl start (à partir de la version
3.2 celui-ci est chrooté par défaut, ce qui peut poser des
problèmes pour le fonctionnement de certaines fonctions).
Vous pouvez installer php via les ports ou via les packages (comme
d'habitude). Il est plus simple de
passer par les packages, plutôt que d'utiliser les ports, car vous
devez exclure pas mal de choses.
Si vous faites le choix de passer par
les ports, je vous conseille fortement de faire une mise à jour du
port correspondant (en fait de tous en passant).
Le port php se trouve dans /usr/ports/www/php4
Dans les versions récentes > 3.2 vous avez alors trois sous
répertoires : core, extensions, pear.
Pour installer la base, vous devez aller dans core et faire
make && make install.
Pour finir l'installation, lancer /usr/local/sbin/phpxs -s
Puis supprimer le # qui se trouve devant la ligne
AddType application/x-httpd-php .php
de votre fichier
/var/www/conf/httpd.conf
Puis copier cp /usr/local/share/doc/php4/php.ini-dist
/var/www/conf/php.ini
Si vous souhaitez ajouter les librairies (gd pour les graphiques,
par ex.), vous devez installer "pear".
cd ./pear && make && make install
Pour ajouter les extensions, vous devez aller dans le répertoire
"extensions"
Allez dans le répertoire extensions
et faire un export FLAVOR="no_x11 no_curl no_dba no_dbase no_domxml
no_filepro no_gmp no_imap no_ldap no_ncurses no_odbc no_pgsql no_snmp
no_shmop no_sybase_ct "
Vous avez la liste dans le Makefile, vous choisissez. Ici j'ai gardé
mysql, gd, xml, xlst, pdf, mcrypt et mhash. Attention si vous lancez un
make sans indiquer les options vous allez installer des quantités
de choses, entre autre les bases de données. Ce qui risque de prendre
pas mal de temps.
Puis make && make install. En fait ici vous
ne faites que construire les packages. Donc encore une fois il est plus
simple de faire l'installation directement avec les packages que vous avez
sur le ftp d'OpenBSD.
Les différents packages sont créés
dans /usr/ports/packages. Pour installer faites pkg_add php4-mysql-4.2.3.tgz
et de même pour les autres.
Puis activez le module avec /usr/local/sbin/phpxs -a mysql
Vous pouvez aussi installer en utilisant
les packages correspondant à vos options sur le ftp d'OpenBSD.
Enfin dans /var/www/conf/httpd.conf
ajouter la ligne AddType application/x-httpd-php .php .php3 .html
.htm .inc (en fait il existe déjà une ligne avec un #
devant pour php3 il vous suffit de la modifier).
Eventuellement ajouter sur la ligne DirectoryIndex index.html index.php
Vous avez fini. Relancez apache /usr/sbin/apachectl start (ou
restart)
Pour tester aller dans /var/www/htdocs et créer un fichier
test.php avec <? phpinfo(); ?>
!!!N'oubliez pas de supprimer ce fichier après test; il donne
beaucoup beaucoup d'infos sur votre config.
3 Rsync
rsync est un excellent
outil de synchronisation de fichiers. Il gère les ajouts, les mises
à jours et les suppressions si on le désire.
Rsync possède plusieurs modes de fonctionnement: Client rsync
avec serveur-rsyncd ou alors client Rsync seul.
Dans tous les cas, vous devez installer rsync. (cd /usr/ports/net/rsync
&& make && make install && make clean)
Coté client :
Reste à créer le répertoire qui doit servir de
répertoire de téléchargement en donnant les droits
à nobody en lecture.
Si vous voulez crypter le flux rsync, cela est permis d'origine en
tapant :
rsync -e ssh -var Source Destination var pour Verbose/archive/récursif.
Ceci fonctionne sans démon serveur!!! Mais, en revanche
,l'utilisateur doit avoir un shell valide sur le serveur!! Ce qui
peut poser problème. La solution est de faire passer le flux rsync
en clair dans un tunnel SSH.Vous devez activer la partie serveur dans ce
cas.
Utilisation pratique : Je ne travaille que sur le portable
dans différents lieux. Je désire synchroniser mon répertoire
de travail local sur le serveur de fichier; et ce sans aucune intervention
manuelle.Facile avec rsync!
J'ai créé sur le serveur un
répertoire /home/sauve qui contiendra le miroir de mes fichiers.
J'ai exporté, après l'avoir créé, ma clé
publique sur ce serveur. Comme ça la connexion se fait sans mot
de passe. Authentification par clé publique.
J'utilise un petit script qui teste
à intervalle de temps régulier, dans la crontab que je suis
dans le bon plan d'adressage. Si c'est la cas, la synchro s'effectue automatiquement,
je vois juste la LED du disque jouer la samba. Si je supprime ou modifie
un fichier en local, il sera mis à jour ou supprimé sur le
serveur. Si un fichier est modifié ou supprimé sur le serveur,
il sera écrasé par celui présent sur ma machine locale
à la prochaine synchro. C'est mon portable le maitre et le serveur
la copie. man rsync pour modifier ce comportement.
Le coté volubile de rsync se manifestera par la mention deleting
pour ce qui sera supprimé sur le répertoire distant et rien
pour ce qui sera ajouté.
Coté Serveur:
Installer puis ajouter dans le fichier /etc/inetd.conf la ligne suivante
:
rsync stream tcp
nowait root /usr/local/bin/rsync
rsyncd --daemon
Forcez la relecture du fichier de configuration. Rsync utilise
le port 873 tcp.
Pour autoriser suivant l'ip, l'accès
à ce serveur vous devez ajouter des règles dans /etc/host.allow
,/etc/host.deny. Vous pouvez faire la même chose avec pf.
Reste à créer le fichier de configuration de rsync /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
syslog facility = local5
pid file = /var/run/rsyncd.pid
[ Espace ]
path = /telechargement
comment = Espace de téléchargement
Pour faire passer le flux rsync en clair
dans un tunnel SSH. Pour la création du tunnel :Doc OpenSSH.
ssh compte_sur_la_machine distante@IP_serveur
-N -L 4321: IP_serveur :873
&
rsync rsync://127.0.0.1:4321/répertoire/module.
3bis Unison
Bon, rsync c'est formidable si je travaille sur une
machine et que je recopie toujours vers une ou plusieurs autres machines.
Mais si jamais je veux travailler sur plusieurs et garder un parc de
machines synchronisées entre elles, rsync va toujours écraser
les fichiers dans le meme sens......
Voila Unison, qui s'appuie sur l'efficace algorithme rsync (donc sur
SSH, aussi!) ou CVS et d'autres encore et qui va synchroniser les fichiers
et répertoires en s'appuyant sur l'horodatage des fichiers.
Cerise sur le gateau, Unison fonctionne sur plusieurs plateformes (Unix,
bien sur, mais aussi Windows...).
On ne parlera ici que de ce que l'on connait : Unison /RSync/OpenSSH et
Unison \Windows.../Cygwin, désolé, mais j'en ai eu besoin;
madame travaille encore avec des logiciels sous Windows ;---(
Install sous OpenBSD :
Quelques soucis pour une fois. Le port /usr/ports/net/unison est
un portage de la version FreeBSD avec ajout de la fonction GUI (en interface
graphique quoi, mais sans X11 d'installé sur le serveur, ça
marche moins bien....), mais malgré tous mes efforts, impossible de
faire fonctionner la version texte; pas de FLAVOR, rien.... alors j'ai bricolé
:
- Installation classique pour qu'il lance l'installation du langage Ocaml,
puis, lors du plantage :
- Téléchargement du packages.. (j'ai bien dit que j'avais bricolé)
:
ftp ftp://ftp.openbsd.org/pub/OpenBSD/3.3/packages/i386/unison-2.91.tgz
Puis /usr/local/bin/unison -batch -times /home/repertoire_local
ssh:user@mon_serveur_distant//le_chemin_de_sauvegarde
-batch pour scripter le tout
-times pour synchroniser les heures de modification
Attention, c'est bien ssh:user@mon_serveur_distant//le_chemin_de_sauvegarde
et non ssh:user@mon_serveur_distant//le_chemin_de_sauvegarde
Install sous Windows :
- Attention, c'est long : clic gauche / démarrer / clic gauche / lancer
Firebird / Aller ici.
/télécharger la version Windows avec ou sans GUI.
- Puis vous devez installer les outils cygnus (un portage sous Windows des
outils Unix de base, comme SSH, par exemple) qui sont indispensables pour
avoir un client SSH en ligne de commande, ce que ne sait pas faire l'excellent
Putty.
4
Mirror
Mirror est un outil permettant de faire un miroir ftp. J'ai
mis cela en place afin de récupérer les bases des sites interdits
pour SquidGuard sur le serveur de l'université de Toulouse.
Aller dans /usr/ports/net/mirror, faire un make && make
install.
Pour lancer l'application faire un /usr/local/bin/mirror -d
/etc/mirror.conf
Avec dans /etc/mirror.conf les informations suivantes
:
package=squidguard
comment= mise à jour de SquidGuard
site=ftp.univ-tlse1.fr
remote_dir=/pub/reseau/cache/squidguard_contrib
local_dir=/update_slis
Mettre cela dans une crontab.
Pour des raisons de performances, préférez rsync.
Une documentation
plus complète sur ntp.Très proche de ce qui se fait sous
Linux, on utilise aussi le ports ntp. Le démon est /usr/local/sbin/ntpd,
le fichier de configuration est /etc/ntp.conf. Attention, il n'y
a pas de sous répertoire /etc/ntp comme sous Linux. Le lancement
du démon ntpd se fait en modifiant le fichier /etc/rc.conf
:
ntpd=NO devient ntpd=YES
#run ntpd if exists
ntpdate_flags= IP_ou_nom_de_votre_serveur_de_temps
/etc/ntp.conf
server ntp1.jussieu.fr
prefer
#Serveur préféré de strate supérieure
server 193.54.82.20
# Autre serveur
server 127.127.1.0
# local clock (?)
driftfile /etc/ntp.drift
# Déviation moyenne
multicastclient
#Ecoute par défaut sur l'adresse multicast ( 224.0.1.1)
broadcastdelay 0.008
authenticate no
#On peut se mettre à l'heure sans s'authentifier.
statsdir /var/log/ntpstat
# Tous les fichiers de log dans /var/log commenceront par ntpstat...
statistics clockstats
# Enregistre les statistiques du pilote d'horloge
statistics loopstats
# Enregistre les statistique de mise à jour de l'horloge
statistics peerstats
# Enregistre les statistiques sur les serveurs de strate supérieure
(Ses serveurs)
Plus d'info
# Fichier d historique
logfile /var/log/xntpd
#Historique du démon
L'interrogation du démon se fait avec la commande interactive /usr/local/sbin/ntpq:
ntpq > pe
(Equivalent à /usr/local/sbin/ntpq -p, sans interactivité)
remote
refid st t
when poll reach
delay offset jitter
==============================================================================
joliot.net.espc 0.0.0.0 16
u -
64 0
0.000 0.000 4000.00
*horlogegps.rese .GPS. 1
u 6
64 37
6.195 1.227 1.824
ntpq> rv
status=0644 leap_none, sync_ntp, 4 events, event_peer/strat_chg,
version="ntpd 4.1.71-a Tue Apr 9 16:54:07 CEST 2002 (1)",
processor="i386", system="OpenBSD/3.0", leap=00, stratum=2,
precision=-18, rootdelay=5.440, rootdispersion=194.627, peer=15389,
refid=horlogegps.reseau.jussieu.fr,
reftime=c07826aa.e644523f Mon, Apr 29 2002 22:08:10.899, poll=6,
clock=c07826ec.d8e6c093 Mon, Apr 29 2002 22:09:16.847, state=4,
offset=0.062, frequency=45.325, jitter=0.842, stability=1.621
Un ? dans ntpq vous proposera une liste d'option.
Si le nombre de vos clients est très important, vous pouvez utiliser
les modes broadcast et multicast, pour cela il faut ajouter dans ntp.conf
du serveur broadcast adresse_de_broadcast_du_reseau.
N'oubliez pas que votre serveur de temps sera forcément client
de temps d'un serveur de strate supérieure..
Les clients
Automatiquement installé;
Vous n'avez qu'à régler le serveur ntp dans /etc/rc.local.
Webmin est marqué broken depuis la 3.2; Avec des problèmes de sécu, comme d'hab. J'avais commencé cette mini doc avant cette époque; Depuis Webmin ne fait plus partie des objectifs, ce début de doc n'évoluera donc probablement plus.
Vous devez installer, au préalable, le module perl Net::SSleay (Modifiez le fichier ad hoc, puis perl -MCPAN -e 'install Net::SSLeay') si vous souhaitez bénéficier de la protection offerte par le chiffrement SSL lors de la communication avec le serveur Webmin. Concernant le point de vue de la sécurité, webmin ne bénéfie pas d'une excellente réputation. Le chiffrement de la communication n'assure que la confidentialité (le secret de la communication ), mais pas l'authenticité (Chacun sait qui est l'autre ; il faudrait des certificats clients), ni l'unicité (un paquet passé ne peut etre réémis.). SSL c'est très bien, mais ce n'est pas la panacée; il faut savoir ce qu'on protège. Si en plus Webmin n'est utilisé qu'en Intranet, c'est mieux, vraiment mieux.
Installation classique (cd /sr/ports/sysutils/webmin && make
&& make install &&& make clean). Je garde les
valeurs par défaut pour les fichiers de configuration (/usr/local/lib/webmin),
de log (/var/log/webmin), de perl (/usr/bin/perl). J'aime bien changer
le port par défaut. Attention au choix de l'admin et de son password.
Ne prenez pas ceux du système. Validez enfin l'usage de
SSL.
Pour accéder au serveur : https://mon_serveur:le_port
dans mon mozilla préféré (lynx ne gère pas
encore le SSL, dommage!)
miniserv.pl. Il s'agit d'un mini serveur Web écrit en Perl
(.pl) dédié à l'usage de Webmin.
<Troll>Un peu court, mais
si c'est pour installer webmin sur un Zopen, autant courir installer la dernière
Mandrake!!!</Troll>
7 Serveur CVSup
Maintenant que vous savez utiliser le client CVSup, imaginez ce qui se passe quand vous mettez à jour, simultanément, vos nombreuses machines sur un seul serveur CVSup... Sachez que CVSupd est fort gourmand en ressources CPU et disques, vous risquez de mettre à genoux votre serveur. Par conséquent, si vous avez plus de deux ou trois machines à maintenir, pensez à installer votre propre serveur CVSup, c'est facile et servira la communauté si vous décidez de l'ouvrir au monde. Pour notre dizaine de serveurs OpenBSD, nous avons installé cvsup.ac-creteil.fr.
Le serveur cvsupd n'existe pas en port, uniquement en packages :
pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/3.1 et
3.2/packages/i386/cvsupd-16.1f-no_x11.tgz.
pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/3.0/packages/i386/cvsupd-16.1e-no_x11-static.tgz
Cette version du démon serveur fonctionne hors mode
graphique (no_x11), hors librairie dynamique (-static) pour la version
3.0, pas pour la 3.1,2. Le démon serveur tourne sur le port 5999/TCP.Un
ensemble de fichiers avec son arborescence constitue une collection.
Les collections sont des sous-répertoires du dépôt.
Coté serveur :
mkdir -p /base/cvsup/test
# Crée le répertoire test sous /base/cvsup avec création
des répertoires intermédiaires (-p)
cd /base/cvsup/test
vi releases
# cvs list=list.cvs
prefix=/base/ /chemin_du_dépôt
vi list.cvs
# upgrade
lancement du démon dans /etc/rc.local
:
/usr/local/sbin/cvsupd -b /usr/local/etc/cvsup -C 5 -l @daemon
Options de la ligne de commande :
-b base
utilise ce répertoire pour les fichiers de config (défaut
: /usr/local/etc/cvsup)
-c Chemin_de_la_collection
defaut : sup
-C Maxclient
Nombre maximum de clients servis simultanément
root@Hendrix:/base/sup/test:#>
/usr/local/sbin/cvsupd -b /base
Le serveur
2002.07.13 22:28:55 CEST [20542]: CVSup server started
2002.07.13 22:28:55 CEST [20542]: Software version: SNAP_16_1e
2002.07.13 22:28:55 CEST [20542]: Protocol version: 17.0
2002.07.13 22:28:55 CEST [20542]: Ready to service requests
2002.07.13 22:36:51 CEST [20542]: +0 hphil@localhost (Hendrix) [SNAP_16_1e/17.0]
2002.07.13 22:36:51 CEST [20542]: =0 [0Kin+24Kout] test/cvs
2002.07.13 22:36:51 CEST [20542]: -0 [0Kin+24Kout] Finished successfully
2002.07.13 22:36:51 CEST [20542]: Going down
root@Hendrix:/dest:#> cvsup -g -L 2 ./supfile
Le client
Parsing supfile "./supfile"
Connecting to localhost
Connected to localhost
Server software version: SNAP_16_1e
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection test/cvs
Mkdir les_repertoires
Create les_fichiers
..
..
SetAttrs Les_fichiers&répertoires
..
..
Shutting down connection to server
Finished successfully
La documentation de base (orientée FreeBSD) du
créateur de CVSup : http://www.polstra.com/projects/freeware/CVSup/faq.html#testserver
8 Gestion de l'onduleur : upsd
Un classique make && make install && make clean,
puis une édition du fichier de configuration : /etc/upsd.conf.
A finir.... quand meme....dès que je trouve comment on fait causer
sur le port USB......
# IPv4 and IPv6 addresses are recognized.Sympathique,non ??
fw_internet = "192.168.201.2"
fw_testlan = "192.168.101.1"
fw_testlan_real = "60.60.60.1"
fw_testlan6 = "3FFA:B80:840::/48"
blackbox6 = "3FFA:B80:83B:2::1"
testlan_mgmt = "192.168.101.86, 192.168.101.87, 192.168.101.88/28
192.168.101.96/29, 192.168.101.100"
# Error: forgot opening curly bracket, also works outside quotes.
curly_err = "192.168.1.1, 192.168.1.2 }"
### Set ###
set limit states 10000, frags 2000
set loginterface $ext_if (pris sur http://www.sentia.org)
10 Terminal Server Client sous OpenBSD !
La killer App! de la semaine; celle qui vous permettra de supprimer définitivement de votre disque cette horrible partition Windows dont le seul but était de faire un coup de Terminal server sur votre non-moins affreux serveur 2000.