Configurer Lightdm pour utiliser Unity 2D par défaut

Dans un terminal, exécuter la commande ci dessous :

sudo sed -i 's/user-session=ubuntu/user-session=ubuntu-2d/g' /etc/lightdm/lightdm.conf

Ou “a la main”, éditer le fichier /etc/lightdm/lightdm.conf pour remplacer la ligne commençant par user-session par cette ligne :

user-session=ubuntu-2d

Changer la taille de innodb_log_file_size

Si vous avez besoin de modifier le paramètre innodb_log_file_size ,il ne faut pas juste modifier le paramètre et redémarrez le serveur. Si vous le faites, InnoDB va refuser de démarrer car les journaux existants ne correspondent pas à la taille configurée.

Vous devez arrêter le serveur proprement, déplacer (ne pas supprimer) les fichiers ib_logfile0 ib_logfile1, etc.

Vérifiez le journal des erreurs pour s’assurer qu’il n’y a pas de problème de fermeture.

[Lire]

Ajouter les nouveaux fichiers dans un dépôt subversion

Pour versionner les fichiers non versionner, placer vous a la racine de votre " dépôt " puis procéder de la manière suivante :

svn status | grep -v "^.[ \t]*\..*" | grep "^?" | awk '{print $2}' | xargs svn add

Il vous reste a commiter les nouveaux fichiers.

Tips  svn 

Centralisation des logs Nginx avec Rsyslog

Configuration de rsyslog coté nginx

Créer le fichier de configuration /etc/rsyslog.d/nginx.conf pour y placer

$ModLoad imfile

$InputFileName          /var/log/nginx/access.log
$InputFileTag           nginx_access_log:
$InputFileStateFile     nginx_access_log
$InputFileSeverity      info
$InputFileFacility      user
$InputRunFileMonitor

$InputFileName          /var/log/nginx/error.log
$InputFileTag           nginx_error_log:
$InputFileStateFile     nginx_error_log
$InputFileSeverity      info
$InputFileFacility      user
$InputRunFileMonitor

# lit le fichier de log toutes les deux secondes
$InputFilePollingInterval 2

#envoie les logs en tcp a 192.1.2.3 port 514
if $syslogtag == 'nginx_access_log:' then @@(z9)192.1.2.3:514
if $syslogtag == 'nginx_error_log:' then @@(z9)192.1.2.3:514

#ne log pas ce qui est tagué nginx (pour ne pas logger en double)
:syslogtag, contains, "nginx" ~

Configuration de rsyslog coté serveur de log

Créer de la même manière le fichier /etc/rsyslog.d/nginx.conf pour y insérer :

[Lire]

Postfix – Spécifier une IP différente en fonction du domaine de l'émetteur

sender_dependent_default_transport_maps va permettre, en fonction de l’émetteur de l’email sur votre serveur de spécifier une IP précise.

echo "/@domain-src-1\.ltd$/ domain_src_1:"  > /usr/local/etc/postfix/outgoingips.regexp
echo "/@domain-src-2\.ltd$/ domain_src_2:" >> /usr/local/etc/postfix/outgoingips.regexp
echo "/@domain-src-3\.ltd$/ domain_src_3:" >> /usr/local/etc/postfix/outgoingips.regexp

Création des routes, ajouter dans master.cf les " entrées " suivante

domain_src_1   unix -       -       n       -       -       smtp
    -o smtp_bind_address=192.168.0.1
    -o smtp_helo_name=domain-src-1.ltd
    -o syslog_name=postfix-domain_src_1
domain_src_2   unix -       -       n       -       -       smtp
    -o smtp_bind_address=192.168.0.2
    -o smtp_helo_name=domain-src-2.ltd
    -o syslog_name=postfix-domain_src_2
domain_src_3   unix -       -       n       -       -       smtp
    -o smtp_bind_address=192.168.0.3
    -o smtp_helo_name=domain-src-3.ltd
    -o syslog_name=postfix-domain_src_3

Puis ajouter dans main.cf :

[Lire]

Détail sur l'utilisation de la mémoire vive par MySQL

L’utilisation maximum de la mémoire vive par MySQL se calcule de la manière suivante d’après mysqltuner.pl :

key_buffer_size + max_tmp_table_size + ( read_buffer_size + read_rnd_buffer_size + sort_buffer_size + thread_stack + join_buffer_size ) * max_connections

max_tmp_table_size : si tmp_table_size > max_heap_table_size -> max_heap_table_size sinon tmp_table_size

Configurer Varnish pour Drupal

Dans cet article, uniquement les spécificité de configuration pour Drupal seront indiqué

Dans la vcl_recv, on nettoie les cookies si vous ne l’avez pas déjà fait :

set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|has_js)=[^;]*", "");
set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");
if (req.http.Cookie ~ "^\s*$") {
    unset req.http.Cookie;
}

On spécifie ce qu’il faut cacher, ou pas :

if (req.url ~ "^/sites/") {
    unset req.http.Cookie;
}
if (req.url ~ "^/misc/") {
    unset req.http.Cookie;
}
if (req.url ~ "^/modules/.*\.(js|css)\?") {
    unset req.http.Cookie;
}
if (req.url ~ "cron.php") {
    return (pass);
}

Import/Export MySQL "rapide"

export.sh

Les données sont exporté avec mysqldump et le paramètre -T

  • -T : Creates tab separated textfile for each table to given path. (creates .sql and .txt files). NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon.

Ce script doit donc etre exécuté directement sur le serveur MySQL

Export

#!/bin/bash
DST='/var/backup/mysql/dump

for bdd in `mysql --skip-column-names -B -e "show databases;" | egrep -v "^information_schema$|^mysql$"`; do
        echo -ne $bdd
        mysql --skip-column-names -B -e "SHOW CREATE DATABASE $bdd;" | cut -d" " -f2- > $DST/create-$bdd.sql
        for table in `mysql --skip-column-names -B $bdd -e "show tables;"`; do
                mkdir $DST/$bdd 2>/dev/null 1>&2
                chown mysql:mysql $DST/$bdd
                echo -ne "."
                mysqldump -T $DST/$bdd/ $bdd $table
        done
        echo -ne "\r\n"
done

Import

#!/bin/bash
SRC='/var/backup/mysql

for bdd in `ls -1 $SRC`; do
        echo -ne $bdd
        for table in `ls -1 $SRC/$bdd | awk -F. '{print $1}' | sort | uniq`; do
                mysql $bdd -e " SET foreign_key_checks = 0;
                                SOURCE $SRC/$bdd/$table.sql;
                                LOAD DATA INFILE '$SRC/$bdd/$table.txt
                                INTO TABLE $table;
                                SET foreign_key_checks = 1;"
                echo -ne "."
        done
        echo -ne "\r\n"
done

Lister toutes les tables/base

Cette requête va lister toutes les bases/tables du serveur MySQL en ignorant les " bases " performance_schema et information_schema mais aussi en filtrant les tables dont le nom commence par tmp_ et la table test.

SELECT table_schema, table_name
 FROM information_schema.tables
 WHERE table_schema NOT IN ('performance_schema','information_schema')
  AND table_name NOT REGEXP '^tmp_|^test$
 ORDER BY table_schema;

Vous pouvez filtrer sur tout ce qui est dans la table " tables "

desc tables;
+-----------------+---------------------+------+-----+---------+-------+
| Field           | Type                | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG   | varchar(512)        | YES  |     | NULL    |       |
| TABLE_SCHEMA    | varchar(64)         | NO   |     |         |       |
| TABLE_NAME      | varchar(64)         | NO   |     |         |       |
| TABLE_TYPE      | varchar(64)         | NO   |     |         |       |
| ENGINE          | varchar(64)         | YES  |     | NULL    |       |
| VERSION         | bigint(21) unsigned | YES  |     | NULL    |       |
| ROW_FORMAT      | varchar(10)         | YES  |     | NULL    |       |
| TABLE_ROWS      | bigint(21) unsigned | YES  |     | NULL    |       |
| AVG_ROW_LENGTH  | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_LENGTH     | bigint(21) unsigned | YES  |     | NULL    |       |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |
| INDEX_LENGTH    | bigint(21) unsigned | YES  |     | NULL    |       |
| DATA_FREE       | bigint(21) unsigned | YES  |     | NULL    |       |
| AUTO_INCREMENT  | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_TIME     | datetime            | YES  |     | NULL    |       |
| UPDATE_TIME     | datetime            | YES  |     | NULL    |       |
| CHECK_TIME      | datetime            | YES  |     | NULL    |       |
| TABLE_COLLATION | varchar(32)         | YES  |     | NULL    |       |
| CHECKSUM        | bigint(21) unsigned | YES  |     | NULL    |       |
| CREATE_OPTIONS  | varchar(255)        | YES  |     | NULL    |       |
| TABLE_COMMENT   | varchar(80)         | NO   |     |         |       |
+-----------------+---------------------+------+-----+---------+-------+

Lister les tables en InnoDB/MyISAM

Voici la requête SQL :

SELECT table_schema, table_name, engine
FROM information_schema.tables
WHERE table_schema NOT IN ('performance_schema','information_schema')
AND engine != 'NULL
ORDER BY table_schema;