Autoriser un utilisateur à redémarrer apache ou nginx

Dans le cadre de l’hébergement de sites web, il peut être intéressant de donner la possibilité à l’utilisateur de recharger la configuration ou de redémarrer le serveur web.
Ceci lui permets d’être autonome dans l’ajout ou le changement de ses noms de domaines.

La procédure est relativement simple, voici comment procéder avec Ubuntu pour autoriser par exemple l’utilisateur herve a éxécuter ces commandes.

Connectez vous en root et exécuter la commande suivante :

visudo

Dans le fichier édité rajouter la ligne suivante :

Pour apache :

herve ALL=(ALL) /usr/sbin/service apache2 reload,/usr/sbin/service apache2 restart

Pour nginx :

herve ALL=(ALL) /usr/sbin/service nginx reload,/usr/sbin/service nginx restart

Votre user peut à présent exécuter ces commandes directement depuis son compte sous la forme :

sudo service apache2 restart

Les autres commandes restent bien inaccessibles à l’utilisateur :

Sorry, user test is not allowed to execute '/bin/su'

Autoriser un utilisateur à redémarrer apache ou nginx Lire la suite »

Créer des utilisateurs virtuels avec proftpd

Si vous hébergez plusieurs sites sur votre serveur, il peut être utile de créer des utilisateurs ftp spécifiques pour chacun d’entre eux.
Ces utilisateurs ne nécessitent pas d’avoir un compte user linux sur le serveur, nous allons donc utiliser la fonctionnalité de création d’user virtuel de proftpd.
( Tout en conservant l’authentification des users linux standard) avec ubuntu 14.04

Pour commencer il faut éditer le fichier /etc/proftpd/proftpd.conf

Rechercher la ligne Authorder et saisir les informations suivantes :

Authorder mod_auth_file.c mod_auth_unix.c #Connexion via fichier utilisateur et utilisateurs linux
AuthUserFile /etc/proftpd/ftpd.passwd #Nom du fichier des mots de passe

Nous allons ensuite créer ce fichier ftpd.passwd et lui mettre les droits adéquats

sudo touch /etc/proftpd/ftpd.passwd
sudo chmod 440 /etc/proftpd/ftpd.passwd
sudo chown proftpd:root /etc/proftpd/ftpd.passwd

Créer des utilisateurs virtuels avec proftpd Lire la suite »

Nginx et Apache : redirection sans www vers www

Pour uniformiser les urls de votre site web et éviter les duplications de contenu  dans le référencement de votre site.
Voici des extrait de code pour ceux qui souhaitent rediriger le nom de domaine sans les www, vers les www avec les serveurs nginx et Apache.

Par exemple si nous souhaitons rediriger le domaine mysite.com vers www.mysite.com

Nginx :
Dans le fichier de configuration du nom de domaine

#Noeud serveur pour le domaine sans www
server {
    listen       80;
    server_name  mysite.com;
    return       301 $scheme://www.mysite.com$request_uri; #redirection 301 vers le domaine avec les www ( http et https gérés )
}
#Noeud serveur pour le domaine avec www
server {
    listen       80;
    server_name  www.mysite.com;
    ...
}

Nginx et Apache : redirection sans www vers www Lire la suite »

Alternative à phpMyAdmin : Adminer

Un petit article pour présenter un outil qui m’a fait gagner pas mal de temps récemment : Adminer
Cet outil, tout comme PhpMyAdmin permets de gérer les bases de données de votre hébergement via une interface web.

En général, phpmyadmin est installé directement par l’hébergeur et c’est l’outil utilisé par défaut pour gérer les bases de données.
Cependant il peut arriver que des hébergeurs ne le proposent pas.
Dans ce cas l’utilisation d’Adminer est la solution la plus simple et la plus rapide.

Comment ça marche ? :

  • Télécharger le fichier adminer.php depuis le site https://www.adminer.org/
  • Envoyer le via ftp n’importe ou sur votre hébergement.
  • Accéder au fichier depuis un navigateur web

Adminer

Et oui rien de plus à faire 🙂

Note :
Pour plus de sécurité renommez ce fichier en autre chose que adminer.php 😉…

Alternative à phpMyAdmin : Adminer Lire la suite »

Cmder : Ajouter des alias

En remplacement de l’invite de commande windows standard, j’utilise l’excellente console alternative Cmder : http://cmder.net/

Celle-ci implémente des commandes linux indispensables qui vont vous faciliter la vie ( ls, git , ssh … )
Elle permet également de gérer des alias qui vous ferons gagner un temps précieux.
Le fonctionnement est légèrement différent d’une console linux standard, puisqu’il ne faut pas éditer le fichier .bashrc

Les modifications sont à apporter dans le dossier ou Cmder est installé, dans le fichier /config/aliases

Vous pouvez par exemple simplifier vos connexion ssh en ajoutant des alias tel que :

sshherve= ssh [email protected] -i "C:\Users\myuser\.ssh\my_key"

Cmder : Ajouter des alias Lire la suite »

Console Prestashop

Tout ceux qui travaillent sous Magento ou Symfony le save, la ligne de commande est la meilleure amie du développeur pour gagner du temps 🙂
J’utilise très régulièrement l’outil Magerun : https://github.com/netz98/n98-magerun  qui permets de réaliser pleins d’actions depuis la ligne de commande

Ce type d’outil n’existe pas (encore) sous Prestashop.
Ceci arrivera sans doute pour les prochaines versions, comme Symfony est amené à devenir le cœur de la solution :-).

En attendant voici donc un nouvel outil de console pour Prestashop.
Il est basé sur le composant console de Symfony2 et disponible sur mon compte github : https://github.com/nenes25/prestashop_console

Pour l’utiliser les prérequis sont les suivants :

  • accès ssh à votre hébergement
  • composer installé

Voici comment l’installer rapidement.

Edit : Utiliser plutôt le nouveau mode de fonctionnement : https://www.h-hennes.fr/blog/2016/09/19/prestahop-console-nouvelle-version/

Clonez le dépôt à la racine de votre site, ceci créera un dossier « PrestashopConsole »

git clone https://github.com/nenes25/prestashop_console.git PrestashopConsole

Rendez-vous dans le dossier et installer les composants avec composer

composer install

Puis vous pouvez lancer la console, et voir les commandes disponibles.…

Console Prestashop Lire la suite »

Magento : Mauvais calcul des frais de ports dans le checkout

Note : Cet article s’applique uniquement aux versions de Magento inférieures à la 1.6

Sur une version 1.5 de Magento j’ai été confronté au comportement d’erreur suivant :

Pour un panier comportant un bon de réduction.
Les frais de ports devant être offerts à partir de X euros.

  • les frais de ports n’étaient pas calculés correctement dans le checkout lors de l’affichage des méthodes de livraisons
  • Les frais de ports étaient calculés correctement dans l’estimation des frais de port du panier
  • Les frais de ports étaient correct dans le résumé de la commande.
  • Si l’adresse de livraison étaient différente de l’adresse de livraison , le calcul était correct.

Après analyse du code, il s’avère que les frais de ports ne sont pas recalculés si on conserve la même adresse de livraison.
Voici comment corriger cela.

Il faut surcharger la fonction saveBilling du fichier app/code/core/Mage/Checkout/Model/Type/Onepage.php.
Pour cela, nous pouvons au choix faire un override du modèle (meilleure solution ) ou déplacer ce fichier dans le codePool local.…

Magento : Mauvais calcul des frais de ports dans le checkout Lire la suite »

Magento : Créer un format d’adresse particulier

L’affichage des adresses dans magento est via gérée des formats configurables.
Les formats par défaut sont visibles depuis la configuration dans « système/configuration/clients/configuration/adresses/ »

Formats d'adresses

 

Cependant il est également possible de créer facilement vos propres formats d’adresses.
Pour cela il suffit de suivre les éléments suivants lors de la création de votre module.

Pour notre exemple je souhaite rajouter un format d’adresse « short ».
Dans le fichier de configuration (config.xml )de votre module rajouter le code suivant entre les balises <global> et </global>

 <!-- Nouveau format d'adresse pour le checkout -->
        <customer>
            <address>
                <formats>
                    <short> <!--Nom du format -->
                        <title>Short</title> <!-- Titre de du format -->
                    </short>
                </formats>
            </address>
        </customer>

 

Puis dans le noeud default

    <customer>
        <address_templates>
          <!--

Magento : Créer un format d’adresse particulier Lire la suite »

Magento : Ajouter un block dans une page via les observers

Voyons ensemble aujourd’hui comment ajouter un block de contenu dans une page magento via les observers.
Pour l’exemple on va se baser sur la problématique suivante :
Je souhaite afficher un message particulier sur la page du panier pour les clients qui ne sont pas connectés.
Le contenu du message doit être gérable dans le backoffice via un block cms.

En analysant la structure du fichier de layout checkout.xml pour la page panier, on constate qu’il existe un noeud de type core/text_list dans lequel nous allons inserer le contenu.

<checkout_cart_index>
...
<block type="core/text_list" name="additional.product.info" translate="label">
<label>Additional Product Info</label>
</block>
</checkout_cart_index>

Pour réaliser cela nous allons créer un module. ( je ne détaille pas la procédure ) qui va se baser sur l’événement : controller_action_layout_generate_blocks_after
via le code suivant dans le fichier config.xml

<events>
 <controller_action_layout_generate_blocks_after>
  <observers>
   <test_add_block_layout_xml>
    <class>Hhennes_Tests_Model_Observer</class>
    <method>testAddBlockToLayoutXml</method>
   </test_add_block_layout_xml>
  </observers>
 </controller_action_layout_generate_blocks_after>
</events>

Puis voici le code de l’observer :

<?php

Magento : Ajouter un block dans une page via les observers Lire la suite »

Magento : Surcharger config.xml ou system.xml

Le système d’override de Magento est très puissant et relativement facile à mettre en place pour les Blocks , Helper et modèles.

En effet ( même si ce n’est pas la méthode recommandée) , il est possible de copier le fichier à surcharger de son arborescence initiale vers le codePool local, et d’y réaliser directement les modifications.

Ex pour le module Cms :
app/code/core/Mage/Cms/Block/Page.php vers app/code/core/Mage/Cms/Block/Page.php
app/code/core/Mage/Cms/Helper/Page.php vers app/code/core/Mage/Cms/Helper/Page.php
app/code/core/Mage/Cms/Model/Page.php vers app/code/core/Mage/Cms/Model/Page.php

Cette surcharge permets également de surcharger les modules placés dans le codePool Community, car si un fichier avec la même arborescence existe dans le codePool local, c’est toujours lui qui sera utilisé.

En revanche pour surcharger un fichier config.xml ou system.xml , il va être nécessaire de créer un module.
( Je ne détaille pas la création de celui-ci )

Commençons par le fichier config.xml

Le principe de l’override est simple, nous allons créer dans le fichier config.xml

Magento : Surcharger config.xml ou system.xml Lire la suite »