Linux

De FroggDev - Fr
Aller à : navigation, rechercher
Linux Logo

Sommaire

Introduction

Linux est le nom couramment donné à tout système d'exploitation libre fonctionnant avec le noyau Linux. C'est une implémentation libre du système UNIX respectant les spécifications POSIX. Ce système est né de la rencontre entre le mouvement du logiciel libre et le modèle de développement collaboratif et décentralisé via Internet. Son nom vient du créateur du noyau Linux, Linus Torvalds. La Free Software Foundation préfère utiliser le nom GNU/Linux, ce qui a conduit à une certaine controverse.

Les systèmes basés sur Linux sont majoritaires pour les super-ordinateurs et les smartphones. Sur les serveurs informatiques, le marché est partagé avec les autres Unix et Windows. Il est largement utilisé comme système embarqué dans les appareils électroniques : télévision, modem, GPS, etc. Il reste en revanche utilisé par une minorité des ordinateurs personnels de bureau, sa plate-forme d'origine, bien que cela tende à augmenter.

DEBIAN

Debian Logo
version de debian

nano /etc/debian_version

documentation officielle

Lien vers la documentation officielle

mailing liste des annonces de secuirté

https://lists.debian.org/debian-security-announce/

mise à jour de debian 6.0 Squeeze vers 7.0 Wheezy

Lien vers le Tutorial de mise à jour de debian 6.0 vers 7.0 wheezy

mise à jour de debian 7.0 wheezy vers 8.0 Jessie

Lien vers le Tutorial de mise à jour de debian 7.0 wheezy vers 8.0 Jessie

Configuration

Lien vers la configuration d'un serveur linux

gestion des paquets

Liste des commandes pour la gestion des packages Debian

Fichiers et répertoires importants

Lien vers la liste des fichiers & répertoires importants de Linux

Gestion des logs

Lien vers la gestion des logs

Rotation des logs

Lien vers la gestion de la roation des logs

Ajout d'un NTP Client

Lien vers l'ajout d'un client NTP

Outils pour Debian

lien vers les outils pratiques pour Debian

BASH

Bash Logo

Documentation Officielle: http://www.linuxdoc.org/HOWTO/Bash-Prog-Intro-HOWTO.html

Commandes

Liens vers les commandes principales de Bash

Environnement

Liste des variables d’environnement

Couleurs

Gestion des couleurs dans Bash

Tableaux

Gestion des tableaux

Fonctions utiles

Les fonctions utiles en bash

Sed

Liens vers les commandes principales de Sed

Rescue

Réparer un système grace à un live CD

Raccourcis dans VI
i        	= mode insertion 
   esc		= sortir du mode insertion
dd		= effacer une ligne
:		= exécuter une commande
  :q 		= exécuter la commande sortir
  :w 		= exécuter la commande sauvegarder
  :wq		= exécuter la commande sauvegarder et sortir
  :f {file}	= exécuter la commande changer le nom du fichier
  :cd {dir}	= exécuter la commande changer le répertoire courant
  :$ 		= exécuter la commande aller à la fin du fichier
  :!		= forcer la commande

par exemple

:wq!		= forcer l’écriture si le fichier est en lecture seule
:q!		= forcer la sortie sans sauvegarder le fichier
Commandes FTP
bin	= passer en mode binaire
ascii	= passer en mode ascii
passive = passer en mode passive
active	= passer en mode active
ls	= liste des fichiers coté serveur
cd	= changer de répertoire coté serveur
lcd 	= changer de répertoire coté client
get	= télécharger un fichier du serveur
put	= envoyé un fichier vers le serveur
mkdir 	= créer un répertoire sur le serveur
rmdir   = supprimer un répertoire sur le serveur
bye	= quitter le client

APACHE

Apache Logo

doc officielle: http://httpd.apache.org/docs/current/fr/

doc officielle: http://httpd.apache.org/docs/2.4/mod/core.html

a propos de la sécurité : http://www.petefreitag.com/item/505.cfm

Général

  • variables d'environement
/etc/apache2/envars

par exemple

#user apache
export APACHE_RUN_USER=www-data
#group apache
export APACHE_RUN_GROUP=www-data
#default log dir
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
#default lang
export LANG=C
  • redémarer le service
apache2ctl restart
Or
sudo service apache2 restart
Or
sudo /etc/init.d/apache2 restart
  • liste des sites
/etc/apache2/sites-available/{SiteName}			available site files
/etc/apache2/sites-enabled/{SiteName}			enabled site files
a2ensite /etc/apache2/sites-available/{SiteName}	enable a site
a2dissite /etc/apache2/sites-available/{SiteName}	disable a site

ou visualiser avec la commande

apachectl -S

ou

apache2ctl -t -DDUMP_VHOSTS
  • Liste des modules
apachectl -M
  • plus d'informations

https://httpd.apache.org/docs/2.4/fr/configuring.html

Directives in the configuration files are case-insensitive, but arguments to directives are often case sensitive.

Virtual Host

Virtual host defini les sites web disponibles, ainsi que leur configuration

  • configuration de base
#-------------#
# [ FROGGCV ] #
#-------------#
<VirtualHost *:80>
# [ Server Domain ] (Can be an IP)
ServerName cv.frogg.fr
# [ Server Root ]
DocumentRoot /var/www/cv/
</VirtualHost>

Modules

commandes

apache2ctl -M			#Liste des modules installés
a2enmod {moduleName}		#Activé un module 
a2dismod {moduleName}		#Désactivé un module


liste

liste des modules apache : http://httpd.apache.org/docs/2.4/fr/mod/

mod security (Debian 8)

  • installation
apt-get install libapache2-mod-security2
  • fichier de configuration
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
  • configuration

remplacer

SecRuleEngine DetectionOnly

par

SecRuleEngine On

Erreurs personnalisées

  • /etc/apache2/conf.d/localized-error-pages
ErrorDocument 404 /404.htm		#exemple pour changer la page 404
  • partagé les pages d'erreur entre tous les serveurs virtuels
# [ Error documents ]
ErrorDocument 404 /errors/404.htm
ErrorDocument 403 /errors/403.htm

# allow errors pages to be visible from any virtual host
Alias /errors/404.htm /var/www/errors/404.htm
Alias /errors/404.png /var/www/errors/404.png
Alias /errors/403.htm /var/www/errors/403.htm
Alias /errors/403.png /var/www/errors/403.png

Logs personnalisés

# [ Log level ]
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
# LogLevel debug rewrite:trace8 = max level, all is loged
#LogLevel debug rewrite:trace8
LogLevel warn

# [ Log format ]
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# [ Error Logs ]
ErrorLog ${APACHE_LOG_DIR}/error.log

# [ Logs Exeptions ] #add env=!dontlog to log line

# - hack rules
SetEnvIfNoCase Request_URI "\/phppath\/|\/wp-content\/|\/wp-config\.php|\/force-download\.php|\/wp-admin\/|\/MyAdmin\/|\/myadmin\/|\/pma\/|\/phpmy$
SetEnvIf Request_URI "hack\.htm" hacklog
SetEnvIf User-agent "^-?$" hacklog
SetEnvIf Remote_Addr "^(127\.0\.0\.1|192\.168\.0\.1)$" !hacklog

# - Special rules
SetEnvIfNoCase Request_URI "piwik\.php" piwiklog
SetEnvIfNoCase Request_URI "frogglogin\.php" loginlog
SetEnvIfNoCase User-agent "bot|spider|coccoc|slurp" botlog

# - Exeption
SetEnvIfNoCase Request_URI "\/phppath\/|\/wp-content\/|\/wp-config\.php|\/force-download\.php|\/wp-admin\/" dontlog
SetEnvIfNoCase Request_URI "piwik\.php|frogglogin\.php|hack\.htm" dontlog
SetEnvIfNoCase Request_URI "\.jpg$|\.jpeg$|\.gif$|\.png$|\.ico$|\.icon$|\.css$|\.js$|\.woff$|\.woff2$" dontlog
SetEnvIfNoCase User-agent  "bot|spider|coccoc|slurp" dontlog
SetEnvIfNoCase User-agent  "^-?$" dontlog

# ==[ All Logs ]==
#CustomLog ${APACHE_LOG_DIR}/full_access.log vhost_combined
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined env=!dontlog
CustomLog ${APACHE_LOG_DIR}/bot.log vhost_combined env=botlog
CustomLog ${APACHE_LOG_DIR}/piwik.log vhost_combined env=piwiklog
CustomLog ${APACHE_LOG_DIR}/login.log vhost_combined env=loginlog
CustomLog ${APACHE_LOG_DIR}/hack.log vhost_combined env=hacklog

Header

  • autoriser les requêtes cross-domain
Header set Access-Control-Allow-Origin "*"
  • connexion persistante
Header set Connection keep-alive 
  • Supprimer le cache
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Sat, 02 Aug 1980 15:15:00 GMT"
  • Ajouter du cache
<FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz|ttf)$">
Header set Cache-Control "max-age=2797200, public"
</FilesMatch>
<FilesMatch "\\.(css)$">
Header set Cache-Control "max-age=2797200, public"
</FilesMatch>
<FilesMatch "\\.(js)$">
Header set Cache-Control "max-age=2797200, private"
</FilesMatch>
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=86400, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
#Header unset Cache-Control
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Sat, 02 Aug 1980 15:15:00 GMT"
</FilesMatch>

Redirection

Mod Alias

active les redirections

a2enmod alias

doc officielle

https://httpd.apache.org/docs/2.4/fr/mod/mod_alias.html

Alias

Met en correspondance des URLs avec des chemins du système de fichiers

Alias /frogglogin/frogglogin.php /opt/notwww/frogglogin/frogglogin.php

AliasMatch

Met en correspondance des URLs avec le système de fichiers en faisant intervenir les expressions rationnelles

AliasMatch "(?i)^/frogglogin/image(.*)" "/opt/notwww/frogglogin/img/image$1"

Redirect

Envoie une redirection externe demandant au client d'effectuer une autre requête avec une URL différente

  • permanent redirige avec le statu (301) identique a RedirectPermanent
  • temp redirige avec le statu (302) C'est l'option par défaut identique a RedirectTemp
  • seeother redirige avec le statu (303)
  • gone redirige avec le statu (410)
Redirect Permanent /wiki_en/ https://en.wiki.frogg.fr/

RedirectMatch

Envoie une redirection externe faisant appel aux expressions rationnelles pour la mise en correspondance de l'URL courante

RedirectMatch permanent ^/$ https://cv.frogg.fr/

avec une expression régulière négative

RedirectMatch 301 ^/(?!server-status)(.*) http://cv.frogg.fr/$1

Mod Rewrite

activer la réecriture d'url

a2enmod rewrite

doc officielle

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

Regle de réecriture

  • RewriteCond : condition
  • Structure : {Commande} {Cas} {mots clés} [options]
  • RewriteRule : règle
  • Structure : {Commande} {Mots clés} {Résultat} [options]
RewriteCond %{HTTP_USER_AGENT} (bot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (spider) [NC]
RewriteRule ^(.*)$ /errors/nobots.htm [L,R=301]

Réecriture de paramètre

l'expression régulière de RewriteCond est récupérée dans %1 instead of $1

RewriteCond %{QUERY_STRING} ^page.php?id=(.*)
RewriteRule .* /%1/ [L,R=301]

Liste des drapeaux

doc officielle : https://httpd.apache.org/docs/2.4/rewrite/flags.html

[CO]	Cookie
[DPI]	Discardpath
[E]	Env Variable
[END]	Terminate
[F]	Forbiden
[G]	Gone (410)
[H]	Handler
[L]	Last
[N]	Next
[NC]	No case
[NE]	Noescape
[NS]	Nosubreq
[OR]	Conditional OR
[P]	Proxy
[PT]	Passthrough
[QSA]	Query string append
[QSD]	Qsdiscard
[R=302]	Redirect=code
[S]	Skip
[T]	Type

liste des codes http

https://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

exemples

  • cas pour forcer le https

redirige tout le trafique de http vers https

RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
#OU
RewriteCond %{SERVER_PORT} ^80$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Apache ne conseille pas cette syntaxe https://httpd.apache.org/docs/2.4/rewrite/avoid.html

  • cas d'un changement de nom de domaine ou d'adresse par exemple

redirige le trafique de l'ancien site vers le nouveau (code 301 = Redirection permanente)

RewriteEngine on
RewriteRule (.*) http://www.ima.umn.edu/~arnaud.marsiglietti/$1 [R=301,L]
  • cas de sécurité pour éviter les bot avec user-agent vide ou qui renvoie -

redirige vers une page spéciale et retourne un code 200 grâce au proxy [P]

RewriteCond %{HTTP_USER_AGENT} ^-?$
RewriteCond %{REQUEST_URI} !errors\/noua.htm
RewriteRule (.*) /errors/noua.htm [P]
  • case de réécriture d'url

redirige le trafique si le document demandé n'existe pas

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [L]

Web Proxy

  • activer le proxy web
a2enmod proxy
ad2enmod proxy_http
  • doc officielle

https://httpd.apache.org/docs/2.4/fr/mod/mod_proxy.html

https://httpd.apache.org/docs/2.4/fr/mod/mod_proxy_http.html

  • exemple
<VirtualHost *:80>
# [ Server Domain ]
ServerName demo.frogg.fr
# [ Server Root ]
DocumentRoot /var/www/demo/
# [ Proxy Redirect ] + exeption on /errors folder
ProxyPass /errors !
ProxyPass / http://192.168.0.100/
ProxyPassReverse /  http://192.168.0.100/
</VirtualHost>
  • exemple avec RewriteRule
<VirtualHost *:80>
# [ Server Domain ]
ServerName demo.frogg.fr
# [ Server Root ]
DocumentRoot /var/www/demo/
# [ Proxy Redirect ]
RewriteRule (.*) http://192.168.0.100/$1 [P]
</VirtualHost>
  • exemple avec RewriteRule & Auth
<VirtualHost *:80>
# [ Server Domain ]
ServerName demo.frogg.fr
# [ Server Root ]
DocumentRoot /var/www/demo/
# [ Basic Auth ]
<Location />
    Order Allow,Deny
    Allow from all
    AuthName "Authentification utilisateur"
    AuthType Basic
    AuthUserFile /opt/web/passwd
    Require valid-user
</Location>
# [ Proxy Redirect ]
RewriteRule (.*) http://192.168.0.100/$1 [P]
</VirtualHost>

Https/ssl

  • activer le mode ssl
a2enmod ssl
  • doc Officielle

http://www.modssl.org/docs/2.4/ssl_reference.html

  • doc non officielle

http://www.onlamp.com/pub/a/onlamp/2008/03/04/step-by-step-configuring-ssl-under-apache.html https://raymii.org/s/tutorials/Strong_SSL_Security_On_Apache2.html

  • certificat gratuit

https://cert.startcom.org/?lang=fr

  • testeur de ssl

https://www.ssllabs.com/ssltest/

  • evite apache de demander la clée à chaque reboot
openssl rsa -in mysql.home.frogg.fr.key -out mysql.home.frogg.fr.key
  • générer les fichiers soit même
#Create self signed certificat
openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout myOwn.pem -out myOwn.pem
#Create key file
openssl genrsa -des3 -out myOwn.key 2048
#Create csr file
openssl req -new -key myOwn.key -out myOwn.csr

ou

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
  • tester si le certificat s'applique à un domaine alternatif
openssl x509 -in /etc/apache2/ssl-certs/domain.com.crt -noout -text | grep -A1 "Subject Alternative"

résultat:

X509v3 Subject Alternative Name: DNS:domain.com, DNS:www.domain.com
  • Configuration
# [ HTTPS Site ]

SSLRandomSeed startup file:/dev/urandom 1024
SSLRandomSeed connect file:/dev/urandom 1024

<VirtualHost *:443>

SSLEngine on
SSLOptions +StrictRequire
SSLProxyEngine off
SSLHonorCipherOrder on

#SSL Compression (CRIME attack)
SSLCompression off

#HSTS
Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

SSLCertificateFile /opt/web/ssl/home.frogg.fr.crt
SSLCertificateKeyFile /opt/web/ssl/home.frogg.fr.key
SSLCertificateChainFile /opt/web/ssl/sub.class1.server.ca.pem

<Directory />
    SSLRequireSSL
</Directory>

<IfModule mime.c>
    AddType application/x-x509-ca-cert      .crt
    AddType application/x-pkcs7-crl         .crl
</IfModule>

# [ Access Logs ]
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel alert
#LogLevel alert rewrite:trace1
CustomLog ${APACHE_LOG_DIR}/access_ssl.log combined env=!dontlog
CustomLog ${APACHE_LOG_DIR}/bot.log combined env=botlog
CustomLog ${APACHE_LOG_DIR}/piwik.log combined env=piwiklog
CustomLog ${APACHE_LOG_DIR}/login.log combined env=loginlog
#special ssl request
CustomLog ${APACHE_LOG_DIR}/ssl_request.log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" env=!dontlog
</VirtualHost>

Authentification

  • doc officielle

http://httpd.apache.org/docs/2.4/fr/howto/auth.html

  • exemple d'authentification basique
<Location /secure>
   AuthType basic
   AuthName "private area"
   AuthUserFile /www/etc/passfile
   Require valid-user
</Location>

ajouter/modifier un utilisateur dans le ficher des utilisateurs

htpasswd -b -m /www/etc/passfile {User} {Pass}

.htaccess

si un fichier .htaccess est crée dans un répertoire avec des instructions de configuration apache, ces instructions vont ré-écraser la configuration globale d'apache. Il est conseillé d'utiliser la configuration apache qui elle est chargée en mémoire plutôt que des .htacess qui ajoutent des accès disque à chaque sollicitation d'une page. La plus part du temps les .htaccess sont utilisés lors de serveurs partagés.

  • activer les .htaccess (lancer la commande dans un terminal)
a2enmod rewrite
  • autorise l'instruction rewrite (All ou instructions à spécifier)
<Directory /var/www/>
     AllowOverride all
</Directory>
  • desactive les .htaccess pour certains répertoires
<Directory /var/www/example/*>
    AllowOverride None
</Directory>
  • suppression de l'acces
Deny from all
  • autorise l'accès (même à travers une identification)
satisfy any 
Allow from all #(required if Deny has been set on parents folder) 
  • identification par fichier
AuthName "user Authentification"
AuthType basic
AuthUserFile /pathToUsers/passwd
Require valid-user

(plus sur auth basic option http://httpd.apache.org/docs/2.4/fr/mod/mod_auth_basic.html)

(plus sur auth options http://httpd.apache.org/docs/2.4/fr/howto/auth.html)

  • suppression du cache
 #CACHE-CONTROL HEADERS
 <ifModule mod_headers.c>
 Header unset ETag
 Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
 Header set Pragma "no-cache"
 Header set Expires "Sat, 02 Aug 1980 15:15:00 GMT"
 </ifModule>
 
 #EXPIRES HEADERS
 <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresDefault "access plus 0 seconds"
 </IfModule>
  • forcer l'encoding des fichiers
AddCharset windows-1252 .html
AddCharset windows-1252 .php
  • redirection de trafic
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.ima\.umn\.edu/~arnaud\.marsiglietti/
RewriteRule (.*) http://www.ima.umn.edu/~arnaud.marsiglietti/$1 [R=301,L]
  • redirection si un fichier existe
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
  • répertoire de base
RewriteBase /myapp/
  • générateur de .htaccess

http://www.htaccessredirect.net/

Benchmark

  • test apache

https://httpd.apache.org/docs/2.4/programs/ab.html

ab -n 2700 -c 90 -k -H "Accept-Encoding: gzip, deflate" http://home.frogg.fr/
  • test accès disque
inotifywait -mr /var/www/

Cache

http://httpd.apache.org/docs/2.4/programs/htcacheclean.html

Support

Serveur IRC & Canal IRC

MYSQL

Base exportation/importation
mysqldump -u {User} -p{Pass} {BaseName} > dump.sql		exporter une base specifique
mysqldump -u {User} -p{Pass} --all-databases > dump.sql		exporter toute les bases
mysql -u {User} -p{Pass} {BaseName} < dump.sql			importer une base spécifique
mysql -u {User} -p{Pass} < dump.sql				importer toute les bases
supprimer un utilisateur
mysql -e "DELETE FROM user WHERE User='{Usr}'" -u root -p{mysqlRootPw} mysql
ajouter proprement un nouvel utilisateur admin
mysql -e "CREATE USER '{NewRootUsr}'@'localhost' IDENTIFIED BY '{NewRootPw}';
GRANT USAGE ON *.* TO {NewRootUsr}@localhost IDENTIFIED BY '{NewRootPw}';
FLUSH PRIVILEGES;" -u root -p{mysqlRootPw} mysql
modifier l'encoding d'une base
ALTER DATABASE froggcv CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE froggcv.page CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
copier une table
CREATE TABLE interwiki LIKE fr_interwiki; INSERT interwiki SELECT * FROM fr_interwiki;
repare database
  • erreur

mysqld: Table '{BASE/TABLE}' is marked as crashed and should be repaired

  • Attention

Il est conseillé de faire une sauvegarde avant de lancer une opération de réparation; dans certaines circonstances il est possible que surviennent une perte de données.

  • doc officielle
http://dev.mysql.com/doc/refman/5.0/en/mysqlcheck.html
  • commande de réparation
mysqlcheck -u {USER} -p{PASS} --repair --all-database
or
mysqlcheck -u {USER} -p{PASS} --auto-repair --all-database
optimisation des bases
mysqlcheck -u {USER} -p{PASS} --optimize --all-database
Erreur de démarrage
can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock' (2)
mysqld_safe
/etc/init.d/mysql restart

GIT

Projet
git clone root@192.168.0.123:/opt/git/wiki.git ./
git push (origin master)	envoyer les fichiers soumis vers la branche master du serveur de projet
git push --tags			envoyer les TAGS soumis vers la branche master du serveur de projet
git push --delete origin v1	supprime un tag du serveur git
git pull 			récupérer les derniers fichiers du serveur git
git branch -r			visualiser les branches du server git
git branch -a			visualiser les branches du server locale
git checkout name		changer la branche en cours
git clean 			supprime les fichiers qui ne sont pas liés au projet
git checkout .			supprime les modifications locales
Fichier
.gitignore			liste des fichiers à ignorer dans le projet (ne seront pas commit)
Config
git config user.name "Frogg"				configure le nom de l'utilisateur du projet git
git config user.email "admin@frogg.fr"			configure l'email de l'utilisateur du projet git
git config credential.helper cache			configure l'utilisation du cache de connexion
git config credential.helper 'cache --timeout=3600'	configure la durée du cache de connexion (en secondes) 
git config receive.denyCurrentBranch ignore		configure l'autorisation de modifier la branch master directement depuis un Git remote
git config core.editor nano				configure l'éditeur de texte par défaut pour créer/éditer les messages

ajouter --global aux commandes de config pour appliquer la config à tous les projets

Add/Commit
git add -A			ajouter tout
git add .			ajouter tout les fichiers nouveaux et modifiés mais pas les suppressions
git add -u			ajouter tout les fichiers supprimer et modifiés mais pas les nouveaux
git commit -a			soumettre la liste des ajouts
git commit --amend		changer le dernier message de soumission
git reset hooks/*		supprimer le dernier ajout
git rm --cached hooks/*		supprimer la dernière soumission 
git revert HEAD -m1 (ou -n1)	supprimer la dernière soumission
Tags
git tag -a v1 -m "Version 1"	ajouter un tag et une description
git tag				afficher tous les tags
git tag -d v1			supprimer un tag
Logs
git log				afficher les logs
git log -1			afficher le dernier log
git log --oneline		afficher les version
nettoyage du git (si trop long a répondre)
git diff --stat --cached (or can execute before git read-tree / git update-ref / git update-index )
Fichiers spéciaux
  • .git/config - Options et configuration du dépot Git
  • .gitignore - List des fichiers ignorer dans l'envoie au dépot
  • .gitattributes - permet de définir les attributs des fichiers
  • .mailmap - permet de regrouper les logs en fontion des mail utilisateurs.
  • .gitmodules - Permet de définir des sous modules
Erreurs
  • Error
HEAD is now at 11e7efe Merge "collapsibleTabs: Don't mix Arrays and jQuery objects for one property" error occurred while pulling /opt/web/wiki/common/skins/Vector
  • Cause
wrong branch
  • Solution
git checkout master git pull

EXIM Commandes admin utiles

Afficher la version actuelle:
exim -bV
Supprimer tous les mails bloqués:
exim -bpru|grep frozen|awk {’print $3′}|xargs exim -Mr
Forcer l'envoie d'un mail:
exim -M email-id
Forcer une autre queue a démarrer:
exim -qf
Forcer une autre queue a démarrer et essaye d'envoyer les mails bloqués:
exim -qff
Voir les logs d'un message:
exim -Mvl messageID
voir le corps d'un message:
exim -Mvb messageID
voir l’entête d'un message:
exim -Mvh messageID
Supprimer les emails 'bounced'
cd /var/spool/exim/input
find . -type f -iname ‘*’ -exec grep -li "Failed" {} \; -exec rm {}\;