Installer un serveur Apache

apt-get install apache2 apache2-doc apache2-utils

Une fois l’installation terminé, le répertoire du serveur se trouve dans /var/www/

À partir de maintenant, si vous placez un fichier index.html à l’intérieur (il y en a un de base pour tester), il sera visible sur http://localhost ; http://127.0.0.1 ou à http://votre_adress_ip ou encore à http://votre_domaine (voir configuration du nom de domaine dans l’article suivant)

Si vous souhaitez rendre le contenu accessible depuis internet, il faut configurer votre routeur pour laisser passer un flux vers : votre_ip:80 soit par exemple 192.168.0.46:80
Et bien entendu connaître votre adresse ip internet afin de pouvoir vous y connecter à distance (voir astuce réseau mon adresse IP)

Utiliser les commandes suivantes pour activer, désactiver le serveur:
service apache start
service apache stop
service apache restart

Pour recharger le fichier de configuration alors qu’apache est déjà lancé, utiliser :
service apache reload

Pour activer et desactiver un module, utiliser :
a2enmod nomModule
a2dismod nomModule

nomModule est le nom d’un module présent dans /etc/apaches2/mods-available

Pour activer et desactiver un site WEB, utiliser :
a2ensite nomSite
a2dissite nomSite

nomSite est le nom d’un fichier de configuration du site présent dans /etc/apaches2/sites-available

Installer PHP et My-sql

apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
apt-get install php5-mysql
apt-get install mysql-server mysql-client

++ si besoin : php5-curl php5-gd

Vous pouvez aussi ajouter phpmyadmin qui permet la gestion de base de donnée, etc., via une interface web.

apt-get install phpmyadmin

Puis éditer le fichier /etc/apache2/apache2.conf :
nano /etc/apache2/apache2.conf

Allez à la fin du document (vous pouvez utiliser CTRL+V pour aller plus vite) et ajouter ceci :

Include /etc/phpmyadmin/apache.conf

Enregistrer les modification et relancer le serveur :
service apache2 restart

Vous pouvez ensuite vous connecter à l’interface de gestion via un navigateur :
http://adresseIPounomdomain/phpmyadmin

Changer le Port du Web Server (Apache2):

Une fois votre serveur Apache installé, il est possible de modifier le port de destination (habituellement 80). Les modifications doivent être effectuées en tant que root (ou utiliser sudo avant les commandes indiquées).

Commençons par éditer le fichier correspondant :
nano /etc/apache2/ports.conf

Modifier la ligne :

NameVirtualHost *:80

Pour y mettre le port de votre choix, par exemple 1880 :

NameVirtualHost *:1880

Ensuite modifier :

Listen 80

Avec la valeur choisie pour votre nouveau port :

Listen 1880

Vous pouvez enregistrer les modifications et éditer le fichier suivant :
nano /etc/apache2/sites-enabled/000-default

editer la ligne suivante :

<VirtualHost *:80>

Pour y ajouter votre nouveau port :

<VirtualHost *:1880>

Sauvegarder et relancer le service apache:
service apache2 restart

Ouvrir votre navigateur internet et tester si le nouveau port est bien pris en compte :
http://votre-ip-adresse:1880
par exemple : http://192.198.0.54:1880

Note : Si vous utilisez Motion pour faire de la détection de mouvement ou un logiciel accédant à votre serveur web, il faudra modifier le fichier de configuration pour modifier le port.

nano /etc/motion/motion.conf

Et trouver la ligne suivante :
netcam_url http://localhost/cam_pic.php

Et modifier en fonction du nouveau port choisi
netcam_url http://localhost:1880/cam_pic.php

Sécuriser votre accès SSH

apt-get install openssh-client openssh-server

Pour améliorer la sécuriter de votre serveur SSH, commencez par éditer le fichier /etc/ssh/sshd_config et modifier le port de connexion, désactiver la connexion avec l’utilisateur root et si vous le souhaitez paramétrer l’authentification par système de clef.

Pour modifier le port de connection (par exemple 4922):

Port 4922

Pour désactiver la connection via root en dé-commentant la ligne et spécifiant ‘no’ :

PermitRootLogin no

Pour activer les Clefs d’authentifications dé-commenter les lignes suivantes :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

PasswordAuthentication no

Pour limiter le nombre d’utilisateur :

AllowUser Nom_Utilisateur1 Nom_Utilisateur2

Une fois les modifications effectués il ne reste plus qu’à redémarrer le service :

service ssh restart

Pour plus de sécurité, vous pouvez déterminer les machines du réseau autorisées à se connecter, il faut modifier les fichiers /etc/hosts.allow et /etc/hosts.deny et ajouter :

sshd : Ip/Netmask

Soit par exemple pour l’adresse ip 192.168.0.145 et le masque 255.255.255.0

sshd : 192.168.0.145/255.255.255.0
# ou encore pour tout autoriser :
sshd : All

Si vous utilisez les Clefs d’authentifications, vous devez penser à générer votre trousseau de Clef Publique/Privé :

ssh-ketgen -t rsa
(il est possible d’utiliser d’autre mode que rsa, par ex. dsa ou ecdsa)

Une passphrase/mot de passe vous est demandé lors de la génération des clefs et sera nécessaire pour vous connecter.

Gestion des Clefs d’authentification
Les clefs sont placées dans le répertoire ~/.ssh/

La clef privée ~/.ssh/id_rsa ne doit jamais être copié nul part. Elle doit rester strictement confidentielle.

La clef publique ~/.ssh/id_rsa.pub doit être copié sur les machines distantes ou vous souhaitez avoir accès.

La commande ssh-copy-id ou scp vous permet de copier les clefs directement sur les machines distantes :
ssh-copy-id -i .ssh/id_rsa.pub Utilisateur_distant@IP_distante
ou
scp .ssh/id_rsa.pub Utilisateur_distant@IP_distante :.ssh/id_rsa_hote1.pub

si vous avez modifier le port
ssh-copy-id -i .ssh/id_rsa.pub Utilisateur_distant@IP_distante:port

Soit par exemple :
ssh-copy-id -i .ssh/id_rsa.pub kenny@192.168.0.145
ou
ssh-copy-id -i .ssh/id_rsa.pub kenny@192.168.0.145:4922

Configuration Intranet / Réseau interne Wifi

Configurer le nom de domaine de vos machines pour pouvoir vous connecter directement sans utiliser l’adresse ip.

Cette méthode est valable pour les petits réseau interne / intranet avec peu de serveur :

Prenons un exemple avec 3 machines en réseau

192.168.1.1 correspondant au serveur DNS / Routeur wifi
192.168.1.20 à machine1
192.168.1.25 à machine2

Sur le serveur DNS et sur les différentes machines, dans /etc/hosts à la fin du fichier, ajouter toutes les machines présentent sur votre réseau :

127.0.0.1 nomdomaineauchoix
192.168.1.1 nomdomaineauchoix
192.168.1.20 machine1.nomdomaineauchoix
192.168.1.25 machine2.nomdomaineauchoix

Utilisez le même nom de domaine et un sous réseau pour chaque machine. La ligne 127.0.0.1 doit correspondre à votre machine, soit au nom de domaine de 192.168.1.1 dans l’exemple ci dessous.

En suivant notre exemple, le fichier /etc/hosts de machine1 correspondrait à ceci :

127.0.0.1 machine1.nomdomaineauchoix
192.168.1.1 nomdomaineauchoix
192.168.1.20 machine1.nomdomaineauchoix
192.168.1.25 machine1.nomdomaineauchoix

etc. pour machine2.

Le fichier /etc/interfaces du serveur DNS est comporte ceci :

iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
dns-search nomdomaineauchoix

*[pour la configuration du routeur/point d’acces voir hostapd dans l’article à ce sujet]

Sur les autres machines du réseau éditez /etc/network/interfaces et configurer une adresse ip fixe ainsi que les paramètre du routeur et le nom de domaine choisi pour la machine en question. Choisir eth0 ou wlan0 en fonction du type de connexion RJ45 ou wifi. Par exemple pour la machine1 en wifi :

iface wlan0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
dns-search machine1.nomdomaineauchoix

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#effacer cette dernière ligne en cas d’utilisation de eth0

Sur le serveur dns configurer /etc/dnsmasq.conf en ajoutant :

domain-needed
expand-hosts
bogus-priv

interface=wlan0
domain=nomdomaineauchoix
cache-size=256

dhcp-range=192.168.1.2,192.168.1.254,255.255.255.0,24h

Créez un Script de démarrage

Il est souvent nécessaire de lancer une application lors du processus de boot du rapsberry. Sans forcément avoir à vous connecter avec un compte utilisateur. Ceci-ci est particulièrement utile pour un Pi-Routeur, Pi-Cam, etc.

La commande update-rc.d permet d’ajouter un programme/service/script à la liste de démarrage système et de le terminer lors de l’arrêt.

Pour ajouter :

update-rc.d NOMDUSCRIPT defaults

Pour supprimer :

update-rc.d NOMDUSCRIPT remove
ou encore
update-rc.d -f NOMDUSCRIPT remove

Créer un script personnalisé :

Par exemple j’aimerai lancer l’appli python Rpi-Cam-Web-Interface au démarrage du système. Mais cet exemple est bien entendu adaptable à vos besoins personnalisés, il suffit de modifier légèrement le code. Pour commencer, éditez/créez le script dans /etc/init.d/Rpi-Cam

sudo nano /etc/init.d/Rpi-Cam

Et insérez le texte suivant :

#! /bin/sh
# /etc/init.d/Rpi-Cam

### BEGIN INIT INFO
# Provides: RPi-Cam
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Rpi-Cam boot script
# Description: Script de lancement de l’appli Rpi-Cam-Web-Interface lors du boot.
### END INIT INFO
# Pour qu’une commande soit toujours active insérez la ici

# Début du Script
case « $1 » in
start)
echo « Starting Rpi-Cam »
# Emplacement de l’application
/home/pi/destination-rpi-cam-dir/start.sh
;;

stop)
echo « Stopping Rpi-Cam »
# Emplacement de l’application
/home/pi/destination-rpi-cam-dir/stop.sh
# ou kill application you want to stop
#killall NOMAPPLI
;;

*)
echo « Usage: /etc/init.d/Rpi-Cam start|stop »

exit 1
;;

esac

exit 0

Une fois le fichier crée, donnez lui les droits d’exécution :
chmod 755 /etc/init.d/Rpi-Cam

Démarrer ou arrêter votre script :
sudo /etc/init.d/NOMDUSCRIPT start
sudo /etc/init.d/NOMDUSCRIPT stop
ou
sh /etc/init.d/NOMDUSCRIPT start
sh /etc/init.d/NOMDUSCRIPT stop

Il suffit de lancer la commande suivante pour ajouter le script à la liste de démarrage :
update-rc.d /etc/init.d/Rpi-Cam defaults

Pour plus d’info sur les options de configuration possible : https://wiki.debian.org/LSBInitScripts