Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/28/d561488865/htdocs/bejisanweb-wp2015/wp-includes/post-template.php on line 284

Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/28/d561488865/htdocs/bejisanweb-wp2015/wp-includes/post-template.php on line 284

Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/28/d561488865/htdocs/bejisanweb-wp2015/wp-includes/post-template.php on line 284

Warning: count(): Parameter must be an array or an object that implements Countable in /homepages/28/d561488865/htdocs/bejisanweb-wp2015/wp-includes/post-template.php on line 284

Configuration d’un serveur linux debian 7 wheezy pour un site wordpress

Vidéos Youtube pour les bases.

Bases de la console linux
Commandes de base
Install apache, mysql, phpmyadmin

Page phpmyadmin non accessible

Il se peut que la page phpmyadmin ne soit pas accessible.
Ce problème peut être dû à une mauvaise configuration de votre serveur Apache ou du paquet phpmyadmin. Après chacune des solutions suivantes, redémarrez le serveur Apache avec cette ligne de commande:
sudo /etc/init.d/apache2 restart

Problème possible : apache cherche par défaut dans « /var/www/phpmyadmin ». Il se peut que ce fichier n’existe pas. Solution : sachant que l’installation s’est faite dans « /usr/share/phpmyadmin », il suffit de créer un lien symbolique :
sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Install php
Installation Debian Desktop chez OVH
proftpd

… obligé de remettre ces commandes à chaque redémarrage du serveur

# mkdir /home/ftp/www
# mount --bind /var/www/ /home/
ftp/www

et de refaire un # sudo chown ftp:www-data /var/www

Créer des utilisateurs

Créer des utilisateurs (article original en anglais)

Ajouter un utilisateur à un groupe (ou second groupe) sur linux

  • Ajouter à un nouveau groupe

groupadd groupname

  • Ajouter un utilisateur existant à un groupe

# usermod -a -G www-data username

Changer le groupe primaire d’un utilisateur

usermod -g groupname username

  • Voir les assignations d’un groupe d’utilisateurs

Si vous essayez de comprendre les problèmes d’autorisations, vous devriez utiliser la commande « id » pour vérifier à quel groupe l’utilisateur est assigné:

id username

Cela affichera quelque chose comme ça:

uid=500(username) gid=500(username) groups=500(username), 1093(admins)

Vous pouvez aussi utiliser la commande « groups » si vous préférez, bien que cela équivaudrait à utiliser la commande …
id -Gn username

groups username

  • Voir une liste de tous les groupes

Pour voir tous les groupes sur votre système, vous pouvez utiliser la commande « groups » seule.

groups

  • Ajouter un nouvel utilisateur et assigner à un groupe en une seule commande

Parfois vous avez besoin d’ajouter un nouvel utilisateur et de lui permettre l’accès à certaines ressources ou dossier, comme par exemple ajouter un utilisateur ftp. Vous pouvez utiliser la commande « useradd »:

# useradd -G www-data username

Ensuite il faut lui assigner un mot-de-passe evidemment:

# passwd username

  • Ajouter un utilisateur à plusieurs groupes

Vous pouvez facilement ajouter un utilisateur à plusieurs groupes en l’incluant dans une liste délimitée par des virgules:

usermod -a -G ftp,admins,othergroup username

Cela couvre tout ce qu’il faut savoir sur le fait d’ajouter des utilisateurs à Linux.

# find . -exec chown username:www-data {} +

Créer les permissions pour modifier wordpress depuis l’admin (article original en anglais)

# find . -type f -exec chmod 664 {} +
# find . -type d -exec chmod
775 {} +
# chmod
660 wp-config.php

Phpmyadmin .htaccess .htpasswd

Phpmyadmin .htaccess .htpasswd (article original en anglais)

Configurer l’autorisation du fichier .htaccess dans apache.conf

sudo nano /etc/phpmyadmin/apache.conf
Dans la section directory, ajoutez la ligne “AllowOverride All” sous “Directory Index”, ce qui doit donner ceci:

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
[...]

Configurer le fichier .htaccess

Maintenant que le fichier .htaccess est autorisé, on peux configurer l’utilisateur pour lequel le mot-de-passe sera requis pour se connecter et accéder à la page de login phpmyadmin.
Commencez par créer la page .htaccess dans le dossier phpmyadmin:
sudo nano /usr/share/phpmyadmin/.htaccess
Ensuite, configurez les autorisations dans le fichier .htaccess. Copiez-collez le texte suivant:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/apache2/.phpmyadmin.htpasswd
Require valid-user

Crée le fichier htpasswd

Maintenant nous allons créer les informations valides pour l’utilisateur.
Commencez par créer le fichier htpasswd. Utilisez la commande « htpasswd », et placez le fichier dans le dossier de votre choix, tant qu’il n’est pas accessible depuis un navigateur internet. Bien que vous puissiez nommer le fichier de mot-de-passe comme vous le souhaitez, par convention nous le nommerons « .htpasswd ».
# htpasswd -c /etc/apache2/.phpmyadmin.htpasswd username
Un prompt vous demanderas de fournir et confirmer votre mot-de-passe.
Une fois le nom d’utilisateur et le mot-de-passe enregistrés, vous pouvez voir que le mot-de-passe est crypté dans le fichier.
Finissez d’appliquer les modifications en redémarrant apache:
# service apache2 restart

Vhost

Vhost on debian 7 (article original en anglais)

# sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example.com

Le vhost doit ressembler à ça

<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
[...]
DocumentRoot /var/www/example.com/public_html

redémarrer le serveur apache

service apache2 restart

Permalinks

chown -v :user "/var/www/.htaccess"
chmod -v 664 "/var/www/.htaccess"

a2enmod rewrite
/etc/init.d/apache2 restart

Rewrite des permaliens (wp dans un sous repertoire) (article original en français)

Index.php
require('./nomdusousdossier/wp-blog-header.php');

.htaccess
RewriteCond %{HTTP_HOST} ^(www.)?nomdedomaine.tld$
RewriteRule ^(/)?$ nomdusousrepertoiredublogdoncdelapagedaccueil [L]

Complement: Procédure local vers distant (article original en français)

Sous domaine

Sous domaine (article original en anglais)

# nano /etc/apache2/sites-available/default
Ajouter en bas du document
<VirtualHost *:80>
ServerName sub1.exampledomain.com
ServerAdmin webmaster@exampledomain.com
ServerAlias sub1
DocumentRoot /var/www/sub1
ErrorLog ${APACHE_LOG_DIR}/error-sub1.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access-sub1.log combined
</VirtualHost>

# service apache2 restart

POSTFIX

Postfix (smtp) (vidéo youtube)

Lien pour le code (en français)

Postfix mieux expliqué (en français)

# dpkg-reconfigure postfix

+ config (site trop long à répondre le 29/03/2016)

sudo service nginx stop
sudo apt-get remove nginx
sudo apt-get purge nginx
sudo apt-get remove nginx-core nginx-full nginx-light nginx-extras nginx-naxsi nginx-common

POSTFIX + DOVECOT 2 + MYSQL

POSTFIX + DOVECOT 2 + MYSQL (site en maintenance le 29/03/2016 – A VERIFIER)

mysql -u root -p
USE mail;
INSERT INTO domains (domain) VALUES ('example.com');
INSERT INTO forwardings users (source, destination) VALUES ('contact@example.com', 'pseudo@boiteemailperso.com');
quit

GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin mailuser'@'localhost' IDENTIFIED BY 'password'; GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin mailuser'@'localhost.localdomain' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;

File:/etc/postfix/mysql-virtual_domains.cf
user = mailuser password = mail_user_pass dbname = mail query = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1
File:/etc/postfix/mysql-virtual_forwardings.cf
user = mailuser password = mail_user_pass dbname = mail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1
File:/etc/postfix/mysql-virtual_mailboxes.cf
user = mailuser password = mail_user_pass dbname = mail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' hosts = 127.0.0.1
File:/etc/postfix/mysql-virtual_email2email.cf
user = mailuser password = mail_user_pass dbname = mail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1

Vérif versions

postconf -d | grep 'mail_version ='
dovecot --version
mysql --version
saslauthd -v

Rainloop webmail (article original en anglais)

SSL

Certificat SSL
Générer un CSR pour apache+openssl (article original en anglais)
Vérif avec un décodeur de csr
Install ssl comodo (article original en anglais)
Créer un fichier yourdomain.ca-bundle (lien mort)
Config apache pour le ssl (article original en français)
# nano /etc/apache2/sites-available/default-ssl

SSLEngine on
SSLCertificateKeyFile /etc/ssl/myserver.key
SSLCertificateFile /etc/ssl/www_econologisme_fr.crt
SSLCertificateChainFile /etc/ssl/ssl.crt/yourDomainName.ca-bundle

# service apache2 restart

Tester que cela fonctionne en allant à l’adresse : https://www.domaine.tld:443 ou https://www.domaine.tld
Installer extension wordpress pour le ssl (article original en français)

SECURISER LINUX

SECURISER LINUX (article original en français)

Ajoutez un block comme ceci dans le script init.d:
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO

CONFORT DE LECTURE

En construction… je n’ai pas réussi à l’implémenter, soit à cause d’erreur de configuration du linux, soit la solution confort de lecture est bancale

Solution Confort de lecture, lien de téléchargement

Tuto

Erreur
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
Tout mettre sur la même ligne.

Modifier ports.conf

Add this to ports.conf or http.conf and keep your above config.
<IfModule mod_ssl.c>
NameVirtualHost *:443
Listen 443
</IfModule>