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
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
Erreur
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
Tout mettre sur la même ligne.
Add this to ports.conf or http.conf and keep your above config.
<IfModule mod_ssl.c>
NameVirtualHost *:443
Listen 443
</IfModule>