J'ai installé sur mon IPCop un petit serveur web, et quand j'en ai parlé dans ce forum j'ai eu pas mal de messages privés qui me demandaient comment compiler et configurer le tout, où on pourrait trouver les packages, ...
Donc je préfère ouvrir un topic et donner mes quelques méthodes plutôt que de répondre individuellement à tous. Ca permettra en plus de faire évoluer le package avec les expériences de chacun, et pourquoi pas en faire quelque chose d'installable simplement pour tous.
J'ai aujourd'hui tout de compilé sur mon serveur, ça fonctionne, mais c'est un peu gros, et tout n'est pas à jour (Apache 2.0.52, PHP 5.0.3, MySQL 5.0.2-alpha) et il y a sans doute un peu de ménage à faire :
- Code: Tout sélectionner
root@Fred-Srv:/usr/local # du -h -s *
31M apache2
508K bin
992K ffsearch
9.9M ircd-hybrid
15M lib
0 mysql
83M mysql41
103M mysql50
9.9M php43
5.8M php50
40M samba3
364K sbin
Donc première étape, télécharger les sources :
J'ai préféré prendre une version précompilée de MySQL, si vous arrivez à le compiler correctement expliquez moi comment . Il ne reste donc que Apache et PHP à compiler. Notez que cette opération de compilation nécessite un autre Linux, si possible à jour et avec les bonnes librairies de développement (une bonne Debian sarge ou sid fera l'affaire), vous ne pouvez pas le faire (pas simplement en tout cas) sur un IPCop.
La compilation se déroule en plusieurs étape :
- Décompresser l'archive des sources, aller dans le dossier de sources
- Parfois un './autogen.sh' est nécessaire ...
- Lancer la configuration par le script './configure', avec les options données ci dessous
- Lancer un 'make', puis si tout s'est bien passé un 'make install'. Vérifiez toujours les dernières lignes qu'affiche le programme de compilation et d'installation : un erreur à ce niveau nécessite une intervention
Compilation d'Apache :
Procédez comme décrit plus haut, avec cette ligne de configuration :
- Code: Tout sélectionner
$ ./configure --prefix=/usr/local/apache2 --enable-ssl --enable-so --enable-rewrite
Compilation de PHP :
Compilez et installez Apache, puis procédez comme décrit plus haut, avec cette ligne de configuration :
- Code: Tout sélectionner
$ ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5 --with-gd --with-mysql --with-gnu-ld --enable-static --with-mcrypt --with-apxs2filter=/usr/local/apache2/bin/apxs --with-thttpd
Compilation de MySQL :
Les développeurs nous en font cadeau !
Il faut ensuite copier ces programmes dans votre IPCop, pour celà lancez la génération de l'archive :
- Code: Tout sélectionner
$ tar czf monarchive.tgz /usr/local/apache2 /usr/local/php5
Copiez ensuite monarchive.tgz dans votre IPCop, disons le dossier /root, puis tapez :
- Code: Tout sélectionner
$ cd /
$ tar xzf /root/monarchive.tgz
De même, décompressez votre mysql dans /usr/local. Il est maintenant temps de configurer nos serveurs pour qu'ils fonctionnent correctement. J'ai une organisation assez spéciale pour mes dossiers de données web, j'ai créé un utilisateur "Anatole" (nom du réseau) et les fichiers sont dans son dossier home, sous 'www' :
- Code: Tout sélectionner
www
-> php
-> sessions
-> phpMyAdmin
-> root
Vous l'aurez compris, php s'accorde le dossier php pour ses fichiers (il y a les droits en écriture) et ses fichiers de sessions dans le sous dossier sessions. phpMyAdmin est à part du contenu "normal" puisqu'il s'agit de l'interface de configuration de la base de données, et root est le dossier normal où le contenu sera copié.
Nous allons donc configurer nos 3 serveurs. Pour PHP et MySQL, il n'y aura pas beaucoup de personnalisation puisqu'ils rentent des services locaux, par contre Apache demande plus d'attention.
Configuration de MySQL :
Pour ne pas changer, MySQL est quasiment configurée d'origine. Son fichier de configuration est '/usr/local/mysql50/data/my.cnf', en voici le contenu chez moi (configuration simple) :
- Code: Tout sélectionner
[client]
socket = /tmp/mysql.sock
[mysqld]
socket = /tmp/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
skip-networking
server-id = 1
skip-bdb
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 8M
sort_buffer_size = 8M
[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M
[mysqlhotcopy]
interactive-timeout
Configuration de PHP :
Là encore c'est assez simple, prenez le fichier de configuration par défaut (php.ini-dist), renommez-le en /usr/local/php50/php.ini et modifiez ces quelques paramètres :
- Code: Tout sélectionner
include_path = ".:/usr/local/php50/lib/php"
session.save_path = "/home/anatole/www/php/sessions"
Le fichier est bien documenté, vous changerez les options à votre guise.
Configuration d'Apache :
C'est là que ça devient amusant ... notez que mon réseau local est en '192.168.0.X', l'adresse de mon routeur étant '192.168.0.130', et son nom étant 'fred-srv.anatole' modifiez en conséquence le fichier de configuration. De même, spécifiez votre adresse email à la place de "[monemail]" et votre IP et/ou DNS à la place de "[monadresse]". Vous changerez également le dossier anatole si vous en avez besoin. Le fichier en question est '/usr/local/apache2/conf/httpd.conf' :
- Code: Tout sélectionner
Listen 80
ServerRoot /usr/local/apache2
DocumentRoot /home/anatole/www/root
User apache2
<IfModule prefork.c>
MaxClients 150
StartServers 5
MinSpareServers 5
MaxSpareServers 10
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
MaxRequestsPerChild 0
ErrorLog logs/error_log
ServerSignature Off
NameVirtualHost *:80
# Compatibilité
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
# Module(s) et indexes
LoadModule php5_module modules/libphp5.so
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php .php5 .php4 .php3 .inc
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.htm index.php
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/home/anatole/www/root">
Order allow,deny
Allow from all
</Directory>
<Directory "/var/log/pool/www">
Options Indexes
Indexoptions FoldersFirst HTMLTable
Order allow,deny
Allow from all
</Directory>
<Directory "/home/anatole/www/phpMyAdmin">
Order allow,deny
Allow from 192.168.0.
</Directory>
<Directory "/usr/local/apache2/manual">
Options Indexes
AllowOverride None
Order allow,deny
Allow from 192.168.0.
<Files *.html>
SetHandler type-map
</Files>
SetEnvIf Request_URI ^/manual/(de|en|es|fr|ja|ko|ru)/ prefer-language=$1
RedirectMatch 301 ^/manual(?:/(de|en|es|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2
</Directory>
<VirtualHost *:80>
ServerAdmin [monemail]
DocumentRoot /home/anatole/www/root
ServerName [monadresse]:80
ErrorLog logs/[monadresse]-error_log
CustomLog logs/[monadresse]-access_log common
Alias /public "/var/log/pool/www"
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [monemail]
DocumentRoot /home/anatole/www/root
ServerName 192.168.0.130:80
Alias /phpMyAdmin "/home/anatole/www/phpMyAdmin"
Alias /public "/var/log/pool/www"
AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ "/usr/local/apache2/manual$1"
ErrorLog logs/fred-srv.anatole-error_log
CustomLog logs/fred-srv.anatole-access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [monemail]
DocumentRoot /home/anatole/www/root
ServerName fred-srv.anatole:80
Alias /phpMyAdmin "/home/anatole/www/phpMyAdmin"
Alias /public "/var/log/pool/www"
AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|ru))?(/.*)?$ "/usr/local/apache2/manual$1"
ErrorLog logs/fred-srv.anatole-error_log
CustomLog logs/fred-srv.anatole-access_log common
</VirtualHost>
J'utilise des virtualhost qui permettent d'offrir des services spéciaux aux clients qui se connectent par le réseau local : eux seuls peuvent accéder à phpMyAdmin et au manuel Apache. L'alias /public permet d'accéder aux fichiers de mon serveur Samba via l'Internet, et permet ainsi aux utilisateurs du réseau de partager facilement des fichiers : s'il ne vous est pas utile, supprimez les lignes correspondantes.
Apache démarrera en tant qu'utilisateur 'apache2' pour éviter de tourner en root, il faut donc également créer cet utilisateur via la commande adduser.
Il reste maintenant à croiser les doigts et à démarrer les serveurs, j'ai à ce propos deux scripts qui fonctionnent bien, l'un pour démarrer les serveurs, l'autre pour les arrêter. Si tout se passe bien, vous pouvez les inclure dans '/etc/rc.d/rc.local'.
serverstart.sh :
- Code: Tout sélectionner
/usr/local/mysql/bin/mysqld_safe --user=mysql --old-passwords&
/usr/local/apache2/bin/apachectl start
serverstop.sh :
- Code: Tout sélectionner
/usr/local/apache2/bin/apachectl stop
kill $(cat /usr/local/mysql/data/Fred-Srv.anatole.pid)
Voilà, j'espère que ce petit guide vous aura aidé, je suis conscient qu'il n'est pas encore complet mais vos questions permettront de l'enrichir !