Partage
  • Partager sur Facebook
  • Partager sur Twitter

Conseils sur NGINX, Grunt, Routeur & SSH

    16 février 2017 à 20:42:47

    Bonsoir,

    J'aimerais re-développer mon site internet avec les nouvelles connaissances et technologies disponibles; mais pour cela j'aurais bien espéré avoir vos avis ainsi que quelques réponses à des questions qui me trottent dans la tête:

    • Mon code est organisé en utilisant la fonction ob_start();, dois-je utiliser un ob_end_clean(); ou un ob_end_flush();(ou encore une autre façon de vider le tampon) après la récupération de mon contenu afin d'optimiser mon code ?
      // Actuellement
      ob_start(); // Récupère le contenu de la page
      require 'templates/router.php'; // Inclus le fichier qui s'occupe de l'inclusion des pages
      $content = ob_get_clean(); // Envoi le contenu de la page
      require 'templates/defaut.php'; // Inclus le modèle de page en remplaçant le " $content "
    • Avez-vous peut-être une meilleure méthode (plus optimisée) pour inclure dans les pages que la fonction ob_start(); ?
    • Comme vous avez pu le voir ci-dessus, j'utilise un fichier " router.php ". Celui-ci n'est pas réellement un routeur optimisé et portatif (avec des class par exemple). Il inclut directement les fichiers après plusieurs vérifications; mais qui a le mérite de fonctionner parfaitement dans mon cas. Je souhaiterais seulement avoir vos conseils et recommandations sur celui-ci: 
      // Définissions des variables au début pour éviter les erreurs
      $file = null;
      $chemin = null;
      $no_exist = null;
      
      $remove_slash = substr($_GET['page'], 1); // Supprime dans l'adresse de la page le premier slash (/accueil, par exemple)
      $url_coupe = explode('/', $remove_slash); // Découpe l'adresse pour pouvoir s'occuper de chacune des parties
      
      // Chemin demandé via l'URL & comptage des paramètres dans l'URL
      $chemin = 'pages/' . $remove_slash . '.php';
      $count = count($url_coupe);
      
      // Boucle de vérification
      for ($i = 0; $i <= $count; ++$i) {
          // Vérifie si un fichier .php n'existe pas sur base du chemin
          if (!file_exists($chemin)) {
              $chemin = str_replace('.php', '', $chemin);
      
              // Vérifie si un dossier n'existe pas sur base du chemin
              if (!file_exists($chemin)) {
                  // Le fichier rechercher n'existe définitivement pas
                  $no_exist = true;
      
              // Si un dossier existe sur base du chemin
              } else {
                  // Vérifie s'il y a un slash au bout du chemin avec le dossier sinon le rajoute
                  if (!preg_match("/\/$/", $chemin)) {
                      $chemin .= '/';
                  }
      
                  // Si le dossier d'accueil existe
                  if (file_exists($chemin . 'accueil.php')) {
                      // Défini qu'on est à la racine du dossier
                      $file = true;
                  } else {
                      // Le fichier rechercher n'existe définitivement pas
                      $no_exist = true;
                  }
              }
          }
      }
      
      // Si l'URL est vide ou que le dossier a un "accueil" par défaut
      if ($file == true) {
          $chemin .= 'accueil.php';
      }
      
      // Si la page demandée n'existe pas
      if ($no_exist == true) {
          Erreur::notFound();
      }
      
      // Vérifie les permissions pour les panels
      if ($url_coupe['0'] === 'bf-admin') {
          if (!$user->isAdmin()) {
              Erreur::forbidden();
          }
      } elseif ($url_coupe['0'] === 'bf-modo') {
          if (!$user->isModo() && !$user->isAdmin()) {
              Erreur::forbidden();
          }
      }
      
      // Inclus la page demandée
      require $chemin;
      
    • Les fichiers " .php " (s'ils existent) restent accessibles dans une url du type " www.domaine.com/test.php ", mais comment empêcher ce comportement ou/et comment rediriger vers une page 404 par exemple si le fichier .php n'existe pas ?
    • Pour mon nouveau site, j'utilise " Grunt ". Toutes les installations fonctionnent, mais je me demande si ce ne serait pas possible de créer un dossier comportant tous les fichiers; car actuellement j'ai à ma racine ces nouveaux fichiers/dossiers: " Gruntfile.js, node_modules, package.json " et je ne trouve pas ça propre. Ca aurait été mieux de mettre tout cela, si c'est possible, dans un dossier " grunt/ ".
    • J'utilise ssh2_connect(); pour me connecter à mon serveur SSH, mais je n'aime pas voir mes informations SSH en clair dans les fichiers, par conséquent je me suis redirigé vers la fonction ssh2_auth_pubkey_file();http://php.net/manual/fr/function.ssh2-auth-pubkey-file.php). Mais malgré de nombreux codes, aucun ne fonctionne sous ma machine (Debian 8). J'ai vérifié les commentaires de la documentation et je suis tombé sur celui-ci:

      A été écrit il y a 4 ans:

      This function has a known bug (https://bugs.php.net/bug.php?id=58573) under some Linux installations: you can't encrypt your private key if you've compiled libssh2 using libgcrypt. According to the bug page, the solution is to rebuild libssh2 with OpenSSL. (Or don't encrypt your private key, but that seems irresponsible somehow.) This isn't a bug report -- the bug is apparently already being fixed -- but a note for others, because it took me at least an hour of Googling to realize the problem wasn't with my own code.

      Par conséquent, je ne vois pas trop comment faire car je ne comprends pas comment "rebuild libss2"... auriez-vous une idée ?

    Je suis désolé pour le nombre de question, mais je voudrais vraiment faire ça proprement ^^ ! Merci d'avance pour vos réponses (même si vous ne connaissez la réponse qu'à l'une de mes questions, ça m'aiderait déjà énormément) !

    Cordialement,

    -
    Edité par Naruhiko315 22 février 2017 à 0:59:48

    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2017 à 0:12:35

      Je relance ;) !

      Edit:

      Les erreurs sont vides et les access:

      80.*00.198.** - - [18/Feb/2017:01:56:11 +0100] "GET /page_no_router.php HTTP/1.1" 200 150 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
      
      80.*00.198.** - - [18/Feb/2017:01:56:11 +0100] "GET /favicon.ico HTTP/1.1" 302 5 "http://pvp-blastfight.fr:800/page_no_router.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
      
      80.*00.198.** - - [18/Feb/2017:01:56:11 +0100] "GET /accueil HTTP/1.1" 200 3771 "http://pvp-blastfight.fr:800/page_no_router.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
      
      80.*00.198.** - - [18/Feb/2017:01:56:14 +0100] "GET /page_router HTTP/1.1" 500 5 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"

      Cordialement,

      -
      Edité par Naruhiko315 18 février 2017 à 1:59:09

      • Partager sur Facebook
      • Partager sur Twitter
        21 février 2017 à 21:48:09

        Bonjour, par rapport à nginx j'ai une vielle configuration que j'utilisais pour un pattern contrôleur sur l'index.php avec des gestion url en php.

        # mywebsite.com server configuration
        #
            server
            {
                listen 80; #Listen for ipv4;
                #listen [::]:80 ipv6only=on ; #Listen for ipv6
                server_name www.mywebsite.com;
                return 301 $scheme://mywebsite.com$request_uri;
            }
           
            server 
            {
                    listen 80; #Listen for ipv4;
                   
        	    server_name mywebsite.com;
                    root /var/www/myroot;
        
                    location / 
                    {
                        # First attempt to serve request as file, then
                        # as directory, then fall back to displaying a 404.
        		index index.php;
                        try_files $uri @rewriteapp;
                    }
        	    
        	    location @rewriteapp 
        	    {
                	rewrite ^(.*)$ /index.php?$1 last;
           	    }
        
        	    #PROD
        	    location ~ ^/index\.php(/|$)
                    {
                        #fastcgi_pass 127.0.0.1:9000;
                        fastcgi_pass unix:/var/run/php5-fpm.sock;
                        fastcgi_split_path_info ^(.+\.php)(/.*)$;
                        include fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                        fastcgi_param HTTPS off;
        	    	internal;
                    }
        	
        	#Errors logs Handle
        		error_log /var/log/nginx/mywebsite_error.log;
        		access_log /var/log/nginx/mywebsite_access.log;
            }

        Si non coté Symfony2 avec nginx par exemple c’est plutôt bien configuré :

        http://symfony.com/doc/current/setup/web_server_configuration.html#nginx

        Bon courage.

        • Partager sur Facebook
        • Partager sur Twitter
          22 février 2017 à 0:59:07

          Merci de ta réponse, j'ai réussi a régler ce bug en rajoutant:
          ini_set('display_errors', 'on');
          error_reporting(E_ALL);
          En début de l'index.php ! J'edit mon message pour supprimer cette question ;)
          • Partager sur Facebook
          • Partager sur Twitter

          Conseils sur NGINX, Grunt, Routeur & SSH

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown