Installation d’un serveur ubuntu lamp

Installer ubuntu normalement (ne pas faireles pré-installations proposé (ex : lamp))

 

Activer le compte root

sudo passwd root

Installer ssh

apt-get install ssh

Mettre une IP statique

nano /etc/network/interfaces

Modifier comme suit :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.62
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

redémarrer le service réseau :

/etc/init.d/networking restart

Installer le LAMP

apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql php5-sqlite phpmyadmin

Créer un utilisateur php (ex : phpuser)

Personnellement je me crée un utilisateur phpuser qui appartient au groupe www-data et qui à  le droit de se connecter en ssh.
Ensuite pour développer je me connecte avec ce compte il suffit que dans le www
– les dossiers soient en chmod 775 au lieu de 755
– les fichiers soient en chmod 664 au lieu de 644
on résout ainsi les problèmes de droit d’exécution des fichiers tout en maintenant la sécurité

PROCEDURE :

#créer le user :

useradd phpuser

#Ajouter le user dans le groupe www-data :

usermod -a -G www-data phpuser

#Pour vérifier les groupes du user :

groups phpuser

#forcer le user phpuser à  écrire en 775/664 plutôt que 755/644

umask 002 >> /home/phpuser/.profile

#forcer le user www-data à  écrire en 775/664 plutôt que 755/644

umask 002 >> /etc/apache2/envvars

#on se déplace vers /var

cd /var/

#on change le groupe du www

chown www-data:www-data www
chown -R www-data:www-data www/*

#On positionne le GID bit : les fichiers et dossiers créés appartiendront au groupe www-data

chmod g+s www

on met à  jour les droits sur les fichiers & dossier existant s’il y en a

chmod -R g+w www/*
find www -type d -exec chmod g+s {}  \;

OPTIONNEL : ajout du de votre certificat ssl pour le user

mkdir /home/phpuser/.ssh
nano /home/phpuser/.ssh/authorized_keys

#copier la clé publique

chown -R phpuser:phpuser /home/phpuser/.ssh/ /home/phpuser/.ssh/*
chmod 700 /home/phpuser/.ssh/

Mysql : convertir un select en csv

Actuce

Cette astuce permet de générer un fichier csv directement à  partir d’une requête mysql.

SELECT champ1, champ3, champ6, champ7 FROM matable INTO OUTFILE '/var/www/replication/transfert.csv' FIELDS ESCAPED BY '' TERMINATED BY ';';

Petit bémol les champs vide sont remplacé par NULL systématiquement.

Perso j’utilise généralement cette astuce dans des bash donc derrière je fais un rechercher/remplacer pour virer les NULL du type :

#conversion des champs NULL en espace
sed -i 's/NULL/ /g'  /var/www/replication/transfert.csv

Export mysql vers sqlite3 en shell

Ce tuto permet d’exporter certain champs d’une table mysql et de les importer dans une table sqlite3.

Prérequis :

  • Un dossier /var/www/replication/ qui contiendra nos scripts.
  • Un dossier /var/www/db/ qui contient les base de données sqlite dont address_book.db qui nous intéresse.
  • Une base de donnée mysql avec une table dont on veut exporter des champs

Le dossier replication contiendra 3 fichiers :

  • replication.sh : le bash que l’on exécutera
  • importer.sql : qui contient les actions sqlite3
  • transfert.csv : généré dynamiquement pour le transfert

replication.sh

#!/bin/sh
#definition des variables
date=`date "+%F-%H%M%S"`
localDir=/var/www/replication
dbDir=/var/www/db
dbLogin=monlogin
dbPswd=monpasswordmysql

#suppression du csv
rm $localDir/transfert.csv
#export mysql en csv
mysql --user=$dbLogin --pass=$dbPswd --database=nombase --execute="select champ1, champ3, champ6, champ7 from matable INTO OUTFILE '/var/www/replication/transfert.csv' FIELDS ESCAPED BY '' TERMINATED BY ';';"

#conversion des champs NULL en espace
sed -i 's/NULL/ /g' $localDir/transfert.csv

#import du csv dans sqlite3
sqlite3 $dbDir/address_book.db ".read "$localDir"/importer.sql"

exit 0

importer.sql

DELETE FROM contact;
.mod csv
.separator ;
.import /var/www/replication/transfert.csv contact

transfert.csv

Il contiendra des données au format csv.