Projet: Un serveur Apache + PHP + MySQL propre sur IPCop

Forum traitant de la distribution sécurisée montante nommée IP cop et basée sur la distribution Smoothwall. C'est à l'heure actuelle le forum le plus actif du site.

Modérateur: modos Ixus

Projet: Un serveur Apache + PHP + MySQL propre sur IPCop

Messagepar MI6Fred » 29 Août 2005 19:33

Salut à tous !

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 :D. 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
Notez que toutes mes lignes de ./configure installent le programme concerné dans /usr/local/dossier, vérifiez donc que votre dossier /usr/local ne comporte pas déjà de dossier du même nom. Le '$' désigne le début de la ligne de commande, il ne faut pas le taper.


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 !
Dernière édition par MI6Fred le 31 Août 2005 13:38, édité 1 fois au total.
MI6Fred
Premier-Maître
Premier-Maître
 
Messages: 70
Inscrit le: 11 Oct 2004 19:07

Messagepar MI6Fred » 31 Août 2005 12:46

Apparament ça intéresse personne ...
MI6Fred
Premier-Maître
Premier-Maître
 
Messages: 70
Inscrit le: 11 Oct 2004 19:07

Messagepar Franck78 » 31 Août 2005 13:11

Ben ecoute, c'est bien ton truc mais

1) ca s'appelle "La SME" ton montage.
2) il y a déjà Apache 1.3 d'installé sur Ipcop; alors rajouter le 2, franchement....
3) personne n'attendais ça, donc faut pas t'étonner du manque d'intérèt.

Cependant cela n'a pu que te faire progresser et c'est bien le principal!


Bye
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar MI6Fred » 31 Août 2005 13:37

1. La SME est bien plus complexe que l'IPCop à administrer, pour ceux qui veulent juste un serveur web sur leur routeur
2. Avoir deux serveurs HTTP permet de bien séparer les services, et de ne pas bousiller son serveur d'administration en modifiant sa configuration
3. Plusieurs personnes étaient intéressées par ce projet, j'attend de savoir combien avant de continuer (c'est quand même un sacré effort de faire un addon ...)

Ma version est d'abord un bricolage (qui fonctionne, mais qui peut difficilement s'intégrer dans une autre configuration), j'attend également des conseils pertinents pour en faire un addon viable.
MI6Fred
Premier-Maître
Premier-Maître
 
Messages: 70
Inscrit le: 11 Oct 2004 19:07

Messagepar Franck78 » 31 Août 2005 14:08

Le petit serveur Apache fiable sous Ipcop, tu sais, cela fait 1 an que le mien en est affublé. Je sais je devrais pas le dire. Transformer IPCop en serveur web, hérésie dirons quelques'uns.

C'est donc un sujet déjà traité. Dans un topic de Ixus qu'il faudrait que je retrouve...
PHP et mysql: pas d'avis

Quand à écrire un addon:

télécharges en plein, regarde comment chacun implémente son script d'install/désinstall. Il n'y a rien d'officiellement supporté pour le moment exceptés les ajouts de définitions de languages.

C'est un boulot qui demande un minimum d'assiduité.
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar MI6Fred » 31 Août 2005 14:22

Franck78 a écrit:C'est un boulot qui demande un minimum d'assiduité.

... et un minimum de personnes intéressées aussi :D
Donc j'attendrais, si certains se manifestent je continuerais, sinon ... bah je reste avec mon serveur quoi.

Par curiosité, tu fais tourner ton serveur http avec ton httpd.conf perso avec des threads séparés, ou est-ce que tu as modifié le httpd.conf d'IPCop ? Tu as utilisé des VirtualHost ?
MI6Fred
Premier-Maître
Premier-Maître
 
Messages: 70
Inscrit le: 11 Oct 2004 19:07

Messagepar Franck78 » 31 Août 2005 17:21

Virtual host!
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar shwing » 31 Août 2005 17:31

ben..hem.. moi je suis toujours intéressé par de nouvelles config.

Pas assez qualifier pour pouvoir te donner des conseils.

Mais veux bien tester tes modifs !

:lol: :lol: :lol:
Avatar de l’utilisateur
shwing
Amiral
Amiral
 
Messages: 1246
Inscrit le: 14 Mars 2004 01:00
Localisation: GE/CH

Messagepar mika23 » 15 Fév 2006 21:29

Je suis assez intéressé par ce projet (qui commence à dater n'ayons pas peur des mots), ce n'est pas encore pour tout de suite, disons d'ici 2 mois j'envisage d'héberger un petit album photo perso sur mon ipcop, le projet décrit dans ce topic correspondrai tout à fait à mes besoins (apache/php/mysql). Certains dirons que c'est une hérésie, moi perso je vois l'intéret pratique de ne pas laisser tourner des windows pendant des semaines entières, ou encore de ne pas devoir ajouter une nouvelle machine qui tournerai 24/24 dans mon salon, les 2 actuelles et les 2 autres qui servent ponctuellement sont déjà bien assez à mon gout. Si tu passe par là et que tu as de nouvelles infos je suis preneur :wink:
mika23
Second Maître
Second Maître
 
Messages: 27
Inscrit le: 11 Nov 2004 00:54


Retour vers IPCop

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron