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 Bruno Michel (site web personnel) . Évalué à 4 (+0/-0).
Pas de soucis
Ici, ça fera très bien l'affaire.
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'environnementRAILS_ENV
(cf https://github.com/nono/admin-linuxfr.org/blob/master/init.d/unicorn#L17).[^] # Re: Ok, essayons de corriger les erreurs
Posté par zedS . Évalué à 2 (+0/-0).
J'utilise bien l'environnement de développement.
Mon fichier /etc/init.d/unicorn :
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 …
[^] # Re: Ok, essayons de corriger les erreurs
Posté par Bruno Michel (site web personnel) . Évalué à 4 (+0/-0).
Ok, ma supposition n'était pas la bonne. Allons voir ce qui se passe du coté de nginx :
errors.log
) si des messages font références à ces fichiers ?[^] # Re: Ok, essayons de corriger les erreurs
Posté par zedS . Évalué à 1 (+0/-0).
J'ai mis la configuration et les logs sur github : https://github.com/zedzedtop/linuxfr.org/tree/master/nginx
C'est la même que sur tes dépôts mis à part quelques changement sur les répertoires
Il me met bien les erreurs dans
error.log
mais je ne vois pas du tout dans la configuration où il pourrait y avoir une exception pour les fichiers css et js[^] # Re: Ok, essayons de corriger les erreurs
Posté par Bruno Michel (site web personnel) . Évalué à 3 (+0/-0).
Ça devrait mieux marcher si tu retires ces lignes :
[^] # Re: Ok, essayons de corriger les erreurs
Posté par zedS . Évalué à 1 (+0/-0).
Merci beaucoup, cela fonctionne \o/
J'avais testé de virer le expire, mais j'avais pas vu l'autre ….
# c'est encore moi !
Posté par zedS . É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 aussicfg := 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)
[^] # Re: c'est encore moi !
Posté par Bruno Michel (site web personnel) . Évalué à 3 (+0/-0).
En fait, c'est tout bête : la bibliothèque redis a été mise en jour entre le moment où j'ai compilé pour la dernière fois img et tes tests. En particulier, l'option
Network
a été ajoutée. Du coup, ta solution est la bonne, cf https://github.com/nono/img-LinuxFr.org/commit/232b1806ba87d8f770e20d52f7b867c33409fdd1.# Une derniere question !
Posté par zedS . Évalué à 1 (+0/-0).
J'ai presque finis la mise en place de la vm (enfin j’espère !)
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 Bruno Michel (site web personnel) . Évalué à 3 (+0/-0).
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.
Bizarre, si tu tapes
$redis.keys('readings/*')
dans la console Rails (./script/rails console
), ça te dit quoi ?[^] # Re: Une derniere question !
Posté par zedS . É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 viainsserv
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
[^] # Re: Une derniere question !
Posté par Bruno Michel (site web personnel) . Évalué à 3 (+0/-0).
Si, c'est fait. Cf https://github.com/nono/linuxfr.org/commit/944e94eff73b8dc1a60d90c060b55bb6a11231a0
# Configuration Ansible
Posté par nud . É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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.