Suivi - Aide et documentation Machine virtuelle de développement

#1041 Posté par . État de l'entrée : corrigée
Tags : aucun
8
13
nov.
2012

Le but est de proposer une machine virtuelle complète pour le développement du site. (Voir mon journal)

J'ai pas mal avancé :

  • Le site est en service via unicorn
  • la tribune (board) est en service également
  • le site est accessible sur le port 80 via nginx
  • la rotation des logs est en place

Il me reste quelques erreurs que je n'arrive pas à corriger (rien trouver sur les différents dépôts) :

  • je n'ai plus de css : 2012/11/13 13:37:44 [error] 19818#0: *21 open() "/home/linuxfr/development/current/public/assets/application.css" failed (2: No such file or directory), client: 192.168.1.57, server: linuxfr.org, request: "GET /assets/application.css HTTP/1.1", host: "192.168.1.64", referrer: "http://192.168.1.64/redaction"
  • j'ai la même erreur pour un fichier "application.js"

Un petit peu d'aide serait la bienvenue.

ps: je ne sais pas trop si je devais poster ici ou toujours dans le journal, désolé si je me suis trompé.

  • # Ok, essayons de corriger les erreurs

    Posté par (page perso) . Évalué à  4 (+0/-0) .

    Un petit peu d'aide serait la bienvenue.

    Pas de soucis

    je ne sais pas trop si je devais poster ici ou toujours dans le journal

    Ici, ça fera très bien l'affaire.

    je n'ai plus de css
    j'ai la même erreur pour un fichier "application.js"

    Ruby on Rails possède plusieurs environnements (development, test et production par défaut) et chaque environnement a une configuration différente (ça se règle dans config/environments/<nom_de_l_env>.rb).

    D'autre part, les fichiers CSS et JS sont générés : les sources sont du Sass pour l'un et du CoffeeScript pour l'autre.

    Sur l'environnement de dév, la génération des fichiers CSS et JS se fait à chaque requête (avec un cache pour éviter que ce soit trop lent). Par contre, sur l'environnement de production, cette génération se fait au déploiement avec une tâche particulière (bundle exec rake assets:precompile) mais on n'essaye plus de les générer après coup s'il en manque.

    J'imagine que c'est l'environnement de production qui est utilisé ici. Je recommande de modifier ça pour utiliser l'environnement de development, qui, comme son nom l'indique, convient mieux pour du développement. Typiquement, ça se fait en modifiant la variable d'environnement RAILS_ENV (cf https://github.com/nono/admin-linuxfr.org/blob/master/init.d/unicorn#L17).

    • [^] # Re: Ok, essayons de corriger les erreurs

      Posté par . Évalué à  2 (+0/-0) .

      J'utilise bien l'environnement de développement.

      Mon fichier /etc/init.d/unicorn :

      PATH=/bin:/usr/bin:/sbin:/usr/sbin
      USER=linuxfr
      CONTAINER=
      HOME=/home/$USER/$CONTAINER
      RAILS_ENV=development
      DAEMON=unicorn
      DAEMON_ARGS="-c $HOME/$RAILS_ENV/current/config/unicorn.rb -D"
      PIDFILE=$HOME/$RAILS_ENV/shared/pids/unicorn.pid
      
      

      Il a l'air de bien prendre en compte cela puisque j'ai bien un fichier "development.log" dans "current/log" et il utilise bien la base mysql "linuxfr_rails". Si je mets une erreur dans le fichier development.rb, le serveur ne se lance pas (c'est moche comme test mais ça a le mérite de fonctionner)

      Je me demande si le soucis ne vient pas de nginx : si je mets l'option "config.assets.debug = true" dans le fichier d'environnement, rien n’apparais dans les logs alors que si je lance le serveur à la main ( bundle exec rails server thin) j'ai bien des lignes supplémentaire dans les logs. J'ai l'impression que le client ne "demande" pas les pages à unicorn.

      Je ne sais pas si je suis très clair dans mes explications …

  • # c'est encore moi !

    Posté par . Évalué à  1 (+0/-0) .

    J'ai essayé d'installer le serveur de cache des images.
    Après quelques petits soucis, j'arrive bien à l'installer et le lancer directement en console.
    Par contre ça ne fonctionne pas j'ai un beau 404 : je tape direct sur le serveur go, il est lancé via les options -a 0.0.0.0:8000 -l /home/linuxfr/development/logs/img/img.log -d /home/linuxfr/development/img/ -r 127.0.0.1:6379

    Je vais faire quelques modifications dans le source pour avoir un peu plus de log sur l'erreur, et la je trouve (après une bonne heure de galère quand même) qu'il n'arrive pas à se connecter au serveur redis (dial: unknown network).

    Si je remplace cette partie de code :

    cfg := redis.Config{Database: db, Address: host, PoolCapacity: 4}
    connection = redis.NewClient(cfg)

    par le code donné dans la doc de redis pour go cela fonctionne:

    conf := redis.DefaultConfig()
    conf.Database = 0 // Database number
    connection = redis.NewClient(conf)

    Si j'ajoute l'option network cela fonctionne aussi

    cfg := redis.Config{Database: db, Address: host, Network: "tcp", PoolCapacity: 4}
    connection = redis.NewClient(cfg)

    Après plusieurs test sur les différentes options, il apparait que toute option non précisée dans le constructeur redis.Config{} est vide par la suite.

    J'ai du mal à croire que l'erreur ne soit que chez moi …
    Du coup j'ai un truc fonctionnel mais j'aimerais bien savoir d'où vient le problème !

    ps: pour voir tout les bouts de code rajoutés dans le code d'origine c'est sur github (c'est moche, je préviens dessuite)

  • # Une derniere question !

    Posté par . Évalué à  1 (+0/-0) .

    J'ai presque finis la mise en place de la vm (enfin j’espère !)

    • le service pour la tribune est fonctionnel
    • le service pour les images également
    • j'ai créé des données de test : un peu de tout
    • j'ai fais un petit script pour réinstaller le site avec la dernière version ou à partir de sa propre url github

    Il me reste un petit probléme : Il faut que je commente dans le fichier unicorn.rb la ligne Rails.cache.instance_variable_get(:@data).client.reconnect (tout en bas) sinon j'ai comme erreur :

    undefined method `client' for nil:NilClass (NoMethodError)
    /home/linuxfr//development/current/config/unicorn.rb:45:in `block in reload'

    Est ce du au service "share" que je n'ai pas installé ?

    J'ai un autre soucis, lié peut être au précèdent : lorsqu'un utilisateur visite quelque chose, les commentaires ne sont pas marqués comme lu.

    • [^] # Re: Une derniere question !

      Posté par (page perso) . Évalué à  3 (+0/-0) .

      Il faut que je commente dans le fichier unicorn.rb la ligne Rails.cache.instance_variable_get(:@data).client.reconnect

      C'est normal. Cette ligne sert à forcer le cache de Rails (en l’occurrence une connexion Redis) à se reconnecter pour éviter le mélanger d'informations entre les différentes instances d'unicorn. Mais en mode développement, le cache de Rails n'est pas initialisé, d'où l'erreur.

      lorsqu'un utilisateur visite quelque chose, les commentaires ne sont pas marqués comme lu.

      Bizarre, si tu tapes $redis.keys('readings/*') dans la console Rails (./script/rails console), ça te dit quoi ?

      • [^] # Re: Une derniere question !

        Posté par . Évalué à  1 (+0/-0) .

        Merci beaucoup pour toutes tes réponses !

        Pour le problème de cache, il ne serait pas possible de rajouter une condition pour voir si le cache est initialisé ?

        Pour redis, je n'ai plus eu le probléme mais du coup je me suis un peu penché dessus (je ne connaissais pas du tout). J'ai pu résoudre mes soucis et rajouter des données redis au script de réinstallation (en particulier les images et les liens).

        J'ai eu des soucis avec l'ordre de lancement des services, en particulier Redis qui devait être initialisé avant. J'ai enlevé les service via update-rc.d, mise à jour les script d'init.d en ajoutant la dépendance redis dans board, img et unicorn, puis remis les service via insserv

        Je pense être au bout du tunnel, tout fonctionne correctement, la réinstallation du site également (voir le dépot https://github.com/zedzedtop/LinuxFr-DevData).

        Ma VM est très grosse je trouve (2.2Go utilisé) mais je ne sais pas trop quoi supprimé pour faire de la place sans poser de problèmes. J'ai suivi bêtement ce manuel : http://www.isalo.org/wiki.debian-fr/index.php?title=Nettoyer_sa_Debian#Debfoster

  • # Configuration Ansible

    Posté par . Évalué à  2 (+0/-0) .

    Juste pour mentionner dans le contexte de cette entrée du suivi mon journal sur une config ansible pour créer une machine virtuelle "LinuxFR", et le dépôt git associé:

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.