Sous Windows, pour savoir quel processus utilise un port, lancez la commande Get-Process
dans Powershell :
Exemple pour le port 5433
:
Get-Process -Id (Get-NetTCPConnection -LocalPort 5433).OwningProcess
Publié le :
Sous Windows, pour savoir quel processus utilise un port, lancez la commande Get-Process
dans Powershell :
Exemple pour le port 5433
:
Get-Process -Id (Get-NetTCPConnection -LocalPort 5433).OwningProcess
Publié le :
Sous Linux, l’utilitaire ncdu (pour NCurses Disk Usage) permet de trouver quel fichier ou répertoire vous bouffe tout votre espace disque.
Il est disponible sur les dépôts officiels Debian et Ubuntu et donc facile à installer.
sudo apt install ncdu
ncdu
Note : ncdu a été réécrit dans une v2 encore récente. Selon la version des dépôts, c’est peut-être la v1 qui sera installée.
Publié le :
Lorsque docker crée des réseaux virtuels entre ses conteneurs, il utilise des plages IP.
En général pas de problème, il utilise des plages non couramment utilisées.
Par contre, si ses plages habituelles ne sont pas disponibles (ou pour d'autres raisons ?),
il est possible qu'il en utilise une autre, par exemple 192.168.x.x
.
Cela peut alors être problématique, surtout si vous utilisez un VPN ou des ressources réseaux en parallèle,
car cette plage est classiquement utilisée.
On peut alors avoir un conflit d'adressage et les ressources réseaux ou du VPN peuvent ne plus être accessibles.
Pour corriger ça, une première approche consiste à killer le réseau (créé par docker) qui pose problème puis à le recréer.
Pour cela :
# Listage des réseaux créés par docker
docker network list
# Identifiez le réseau correspondant au conteneur qui a causé le problème (copiez son ID)
# Pour vérifier la plage IP qu'il utilise :
docker network inspect <ID>
# Suppression du réseau qui pose problème
docker network rm <ID>
Si cela ne suffit pas, essayez la suite de la procédure proposée ici.
Modifié le :
Publié le :
Pendant le lancement du système, des services sont démarrés.
L'ordre de lancement a une importance, car beaucoup de services ont besoin d'autres services pour fonctionner.
Sous linux il y a donc la notion de runlevel (cf. wikipédia). Les runlevels (niveau d'exécution) vont de 0 à 6 et se font un à un dans l'ordre croissant.
Il arrive qu'une erreur se produise lors du lancement d'un service à un certain runlevel, bloquant ainsi le démarrage.
Il est possible de forcer le passage au niveau suivant, même si tout n'est pas encore terminé.
Pour cela appuyez sur les touches suivantes durant l'initialisation : CTRL
+ ALT
+ F<NIVEAU>
Avec <NIVEAU>
le niveau de runlevel vers lesquels passer (ex: CTRL
+ ALT
+ F4
pour passer au niveau 4).
Modifié le :
Publié le :
Pour supprimer tous les conteneurs docker :
docker rm $(docker ps -a -q)
Pour supprimer toutes les images docker :
docker rmi $(docker images -q)
Pour supprimer tous les volumes docker :
docker volume prune
Modifié le :
Publié le :
Sous Linux, vous pouvez utiliser la commande suivante pour savoir quel processus utilise un port :
# Pour le port 80
netstat -tlnp | grep 80
Cela retournera par exemple :
tcp6 0 0 :::80 :::* LISTEN 32198/apache2
L'ID du processus étant ici 32198
.
Remarque :
Pour voir tous les processus, il sera peut-être nécessaire de lancer la commande en tant que root
(ou avec sudo
).
Modifié le :
Publié le :
Si vous voulez accéder à votre application via un contexte spécifique, il faut ajouter cette ligne dans votre virtual host apache :
Alias /mon-contexte /chemin/vers/mon_appli/web
Si votre virtual host répond au nom de domaine www.mon-site.com
par exemple,
votre site sera maintenant accessible via l'URL www.mon-site.com/mon-contexte
.
Modifié le :
Publié le :
Par défaut, les dépôts de Debian 8 propose d'installer PHP 5.6. Si vous voulez la version 7, procédez ainsi.
apt
, en tant que super administrateur :echo 'deb http://packages.dotdeb.org jessie all' > /etc/apt/sources.list.d/dotdeb.list
wget -O- https://www.dotdeb.org/dotdeb.gpg | apt-key add -
apt update
gd
, mcrypt
, php-pear
, intl
:apt-get -y install php7.0 libapache2-mod-php7.0 php-pear php7.0-gd php7.0-mcrypt php7.0-intl
Globalement, les paquets portent le même nom que ceux pour PHP 5.6.
Modifié le :
Publié le :
Pour installer la version de PHP disponible par défaut sur le dépôt (PHP 5.6 pour Debian 8), procédez comme suit. Pour installer PHP 7, suivez cet article à la place.
sudo apt-get install libapache2-mod-php5
gd
, mcrypt
, php-pear
, intl
:sudo apt-get install php5-gd php5-mcrypt php-pear php5-intl
Pour curl
, il s'agit du paquet php5-curl
.
/etc/php5/apache2/php.ini
.
À la fin de la section [Miscellaneaous]
, ajoutez la ligne suivante pour spécifier la locale à utiliser :date.timezone = "Europe/Paris"
sudo service apache2 restart
index.html
de votre site (ex : /var/www/mon-site/index.html) et
créez le fichier index.php
à la place :<?php
phpinfo();
?>
Si vous avez besoin de Composer, installez-le via ces commandes :
sudo apt-get install curl
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
# Vérification
composer --version
Modifié le :
Publié le :
Remarque :
Si vous préférez MySQL, vous pouvez suivre ce tutoriel à la place.
Il vous faudra peut-être également ajouter la ligne suivante au fichier /etc/apache2/apache2.conf
puis redémarrer Apache :
Include /etc/phpmyadmin/apache.conf
sudo apt-get install postgresql postgresql-client postgresql-doc
ls /etc/postgresql/
sudo pg_dropcluster --stop 9.4 main
sudo pg_createcluster --start -e UTF-8 9.4 main
Par défaut, PostgreSQL n'est pas accessible à distance (ex: avec votre IDE sur votre poste de dev).
Pour l'autoriser, modifiez le fichier le fichier de configuration /etc/postgresql/<version>/main/pg_hba.conf
,
en remplaçant la ligne suivante par celle du dessous :
#local all all peer
local all all trust
Redémarrez le service postgresql
:
sudo /etc/init.d/postgresql reload
Quand on utilise MySQL, on le couple souvent avec PHPMyAdmin, pour pouvoir l'administrer via une interface web. Côté PostgreSQL, il n'y a pas d'outil aussi abouti.
Adminer ne s'en tire tout de même pas si mal. D'ailleurs, il permet aussi de se connecter à plein d'autres SGBD, dont MySQL.
Pour l'installer, suivez les commandes suivantes :
sudo mkdir /var/www/adminer
sudo cd /var/www/adminer
sudo wget https://www.adminer.org/latest.php
sudo mv latest.php index.php
sudo chown -R phpuser:phpuser .
Ensuite si vous utilisez les virtual host pour votre site, ajoutez-en un pour adminer.
Pour cela créez par exemple le fichier /etc/sites-available/adminer.conf
:
<VirtualHost *:80>
ServerName db.adminer.dev
ServerAdmin webmaster@localhost
DocumentRoot /var/www/adminer
ErrorLog ${APACHE_LOG_DIR}/adminer.error.log
CustomLog ${APACHE_LOG_DIR}/adminer.access.log combined
</VirtualHost>
Remarques :
db.adminer.dev
.hosts
de votre poste de
dev pour pouvoir l'utiliser.Activez maintenant ce virtual host et redémarrez Apache :
sudo a2ensite adminer
sudo service apache2 reload
Par défaut, la base de données postgres
a été créée. Son propriétaire s'appelle aussi postgres
.
Un nouvel utilisateur système postgres
a lui aussi été créé.
sudo su - postgres
createuser --interactive mypguser
Avec les options suivantes :
Non
Oui
Non
Modifiez son mot de passe :
psql
> ALTER USER mypguser WITH PASSWORD 'new_password';
createdb -O mypguser mypgdatabase
psql mypgdatabase
> ALTER SCHEMA public OWNER TO mypguser;
sudo /etc/init.d/postgresql reload
Connectez-vous à la base avec le nouvel utilisateur :
psql -d mypgdatabase -U mypguser
Si vous n'avez pas d'erreur, alors c'est prêt (\q
pour quitter la console postgreSQL).
Modifié le :
Publié le :
Lancez simplement la commande suivante :
sudo apt-get install apache2
sudo nano /etc/apache2/conf-available/charset.conf
AddDefaultCharset UTF-8
Pour éviter des problèmes de droits, vous pouvez modifier l'utilisateur et le groupe unix utilisés par Apache.
Par défaut avec Debian, il s'agit de www-data:www-data
.
Pour en changer, modifiez le fichier /etc/apache2/envvars
avec les droits administrateur :
export APACHE_RUN_USER=phpuser
export APACHE_RUN_GROUP=phpuser
Pour activer le module rewrite
d'Apache et redémarrez Apache, utilisez ces commandes :
sudo a2enmod rewrite
sudo service apache2 restart
cd /var/www
sudo mkdir mon-site
sudo chown -R phpuser:phpuser mon-site
index.html
à l'intérieur, contenant par exemple <h1>Hello world !</h1>
Si vous souhaitez accéder à votre site via un nom de domaine spécifique (plutôt que par son IP), ou si vous en avez besoin de plusieurs pour accéder à votre application, il vous faut configurer un virtual host.
Créez un nouveau fichier .conf
dans le répertoire des sites disponibles d'Apache
/etc/apache2/sites-available/
. (Ex: /etc/apache2/sites-available/mon-site.conf).
<VirtualHost *:80>
ServerAdmin admin@mon-site.com
ServerName www.mon-site.com
ServerAlias *.mon-site.com
DocumentRoot /var/www/mon-site/
<Directory /var/www/mon-site/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/mon-site.log
ServerSignature Off
</VirtualHost>
Explications :
ServerAdmin
: Adresse email de la personne à prévenir en cas de problème côté Apache.ServerName
: Nom de domaine que vous souhaitez associer au serveur.
Il doit être dans les DNS du serveur (ou si vous êtes en mode dev, dans votre fichier /etc/hosts
).ServerAlias
: Autres domaines ou sous domaines qui prendront en compte le même fichier vHost.DocumentRoot
: Répertoire vers lequel Apache redirigera les adresses IP et ports spécifiés
plus haut (*:80).Directory
: Cette instruction permet d'ajouter des options et règles au répertoire web :
FollowSymLinks
: Active le suivi des liens symboliques dans ce répertoire.Activez votre virtual host, désactivez éventuellement celui par défaut puis redémarrez Apache :
sudo a2ensite mon-site
sudo a2dissite default
sudo service apache2 restart
Appelez la page d'accueil de votre site via un navigateur ou wget depuis votre répertoire utilisateur :
cd ~
wget mon-site.com
cat index.html
Vous devez retrouver le contenu de votre fichier index.html
:
<h1>Hello world !</h1>
Modifié le :
Publié le :
Cette suite d'articles donne un exemple d'installation d'un environnement LAPP sous Debian, destiné au développement (= pas pour la production). Il peut tout à fait servir de base pour un LAMP (= MySQL à la place de PostgreSQL)
Dans cet exemple les configurations choisies sont en italique.
root/******
apt-get install sudo
Ajoutez l'utilisateur phpuser
au groupe sudo :
adduser phpuser sudo
Par défaut, Debian 8 n'autorise pas cette connexion, ce qui est gênant lors de l'utilisation d'un outil comme WinSCP, Filezilla ou Nautilus pour explorer les fichiers.
Pour l'autoriser, modifiez le fichier /etc/ssh/sshd_config
et remplacer la ligne :
PermitRootLogin without-password
par
PermitRootLogin yes
Redémarrez ensuite le service SSH :
service ssh restart
Modifier le fichier .bashrc
permet d'améliorer l'affichage de la console et
d'ajouter des alias de commande.
.bashrc
avec nano et décommentez les lignes suivantes :alias ll='ls -l'
alias la='ls -1'
alias l='ls -CF'
Si vous voulez avoir une console colorée, décommentez la ligne suivante :
force_color_prompt=yes
et modifiez la ligne suivante en la remplaçant par celle du dessous :
#PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
PS1='\[\e[33;01m\]\u \[\033[31;01m\][\[\033[0;37m\]\w\[\033[31;01m\]] \$\[\033[00m\] '
export PATH=$PATH:/usr/sbin
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
/etc/apt/sources.list
avec nano en tant qu'administrateur :deb http://security.debian.org/ etch/updates main contrib non-free
sudo apt-get update
sudo apt-get install build-essential
Installez les outils dont vous avez besoin (ex: Screen, ...).
Publié le :
Pour connaître le poids total des fichiers (et sous-répertoires) que contient un répertoire,
vous pouvez utiliser la commande du
:
du -shL mon/repertoire
Explication :
Les options s
, h
et L
permettent respectivement de
faire la somme, afficher un poids lisible par un humain (en Ko, Mo, ...)
plutôt qu'en octets et suivre les liens symboliques (plutôt que de compter le poids du lien).
Pour connaître le nombre de fichiers il faut cette fois composer avec plusieurs commandes :
find -L mon/repertoire -type f | wc -l
Explications :
find
avec l'option -type f
permet de lister les fichiers-L
permet de suivre les liens symboliqueswc -l
compte le nombre de lignes (ici celles retournées par find
)Modifié le :
Publié le :
Si vous êtes sous une distribution avec apt d'installé, vous pouvez rechercher un paquet avec la commande suivante :
apt-cache search terme1 terme2
Remarques :
apt-cache search php.*memcach
.Si vous avez aptitude d'installé, une commande plus simple à mémoriser existe :
aptitude search terme1 terme2
Modifié le :
Publié le :
Pour créer un lien symbolique sou linux, il suffit d'utiliser la commande suivante :
ln -s chemin/vers/la/cible/du/lien chemin/vers/lien
Le premier paramètre contient le répertoire ou fichier à cibler, et le second le chemin/nom du lien à créer.
Les chemins peuvent-être relatifs ou absolus.
Modifié le :
Publié le :
Il est parfois utile de choisir avec quel utilisateur système Apache est exécuté.
Pour le modifier, éditez le fichier /etc/apache2/envvars
et modifiez les lignes suivantes :
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
www-data
est la valeur par défaut. Il suffit de mettre l'utilisateur et le groupe que vous souhaitez.
Modifié le :
Publié le :
Avec Virtualbox, on peut partager des répertoires depuis son hôte vers la machine virtuelle.
Par défaut, Virtualbox les monte dans /media/sf_<nom_partage>
et attribut le répertoire à l'utilisateur vboxsf
.
Pour monter automatiquement le répertoire à l'endroit de votre choix, vous pouvez modifiez le
fichier /etc/rc.local
, et ajouter cette ligne :
mount -o uid=500,gid=500,umask=002 --bind /media/sf_<nom_partage> /mon/repertoire/cible
Remarque :
Les options uid
et gid
permettent d'attribuer le répertoire à un utilisateur et à un groupe spécifique.
500
correspond par exemple à l'utilisateur d'Apache www-data
(la plupart du temps).
Modifié le :
Publié le :
Sous linux, vous pouvez rapidement connaître l'espace disque restant grâce à la commande :
df -h
Note : comme pour beaucoup d'autres commandes Linux, l'option -h
permet un affichage plus humain, notamment
pour le poids des fichiers (ie. 1.2mo au lieu de 1200000).
Modifié le :
Publié le :
Lorsque vous lancez les services de WampServer, il arrive qu'Apache n'arrive pas à démarrer à cause d'une erreur de syntaxe dans sa configuration.
Pour savoir quel fichier (httpd.conf
, httpd-vhosts.conf
, ...) et quelle ligne pose problème,
vous pouvez lancer Apache en ligne de commande :
cd D:\Dev\wamp\bin\apache\apache2.2.22\bin
httpd
Remarque : Adaptez le chemin en fonction d'où est installé WampServer et la version d'Apache que vous utilisez.
Exemple :
Modifié le :
Publié le :
Pour restreindre l'accès à un répertoire ou à un site entier, vous pouvez le protéger par un mot de passe :
Pour pouvoir utiliser cette fonctionnalité d'Apache, vous aurez besoin des modules suivants : mod_auth_basic, mod_authn_file et mod_authz_user.
Vous devez également générer un fichier de mots passe, via l'utilitaire htpasswd fourni avec Apache.
Il se trouve probablement dans le répertoire bin/
de votre installation apache.
Pour cela, lancez la commande suivante :
htpasswd -c /chemin/vers/un/repertoire/protege/passwords nom_utilisateur
Remarques :
passwords
dans /usr/local/apache/passwd/
.-c
.Le fichier généré pourra ressembler à a ça :
user1:.G.h/4RfP93fd
user2:RlPRITNDHefEpl
Cette configuration peut se faire au niveau de votre virtualhost :
<VirtualHost *:80>
DocumentRoot /var/www/mon_site
ServerName mon-site.com
<Directory /var/www/mon_site>
Options FollowSymLinks
Order allow,deny
allow from all
</Directory>
<Directory /var/www/mon_site/protected>
Order allow,deny
Allow from all
AllowOverride None
AuthType Basic
# Intitulé de la mire de connexion
AuthName "Acces restreint"
# Type de provider
AuthBasicProvider file
# Fichier contenant les utilisateurs et leur mots de passe cryptés
AuthUserFile /chemin/vers/mon/fichier/passwords
Require valid-user
</Directory>
</VirtualHost>
Explications :
mon_site/
) et ses sous-répertoires sont accessibles à tousprotected/
lui, est protégé par un mot de passeRemarque :
Pour plus de sécurité, il est également judicieux de passer le site en HTTPS.
Si vous voulez gérer des accès avec plusieurs utilisateurs, il est possible de les organiser par groupe.
Vous pourrez ainsi définir que tel utilisateur appartient à tel ou tel groupe, et que tel ou tel groupe à accès à tel ou tel répertoire.
Le virtualhost est alors un peu modifié :
<VirtualHost *:80>
DocumentRoot /var/www/mon_site
ServerName mon-site.com
<Directory /var/www/mon_site>
Options FollowSymLinks
Order allow,deny
allow from all
</Directory>
<Directory /var/www/mon_site/protected>
Order allow,deny
Allow from all
AllowOverride None
AuthType Basic
# Intitulé de la mire de connexion
AuthName "Acces restreint"
# Type de provider
AuthBasicProvider file
# Fichier contenant les utilisateurs et leur mots de passe cryptés
AuthUserFile /chemin/vers/mon/fichier/passwords
# Fichier contenant les groupes et leurs utilisateurs
AuthGroupFile /chemin/vers/mon/fichier/groups
Require group_name
</Directory>
</VirtualHost>
Explication :
La propriété AuthUserFile
a été ajoutée, pour définir où se trouve le fichier contenant la liste des groupes.
La règle de restriction a également changé, elle définit maintenant le nom du groupe ayant accès au répertoire.
Remarques :
Pour utiliser ce système de groupes, vous aurez besoin du module mod_authz_groupfile
d'Apache.
Le fichier groups
contient quelque chose comme ça :
group1: user1 user2
group2: user2 user3
Contrairement au fichier passwords
, il n'est pas crypté et peut donc être créé via un éditeur de texte classique.