Je démarre une nouvelle petite entreprise, un POC si vous le souhaitez, et je veux déployer mon application Rails gratuitement quelque part. J'ai trouvé qu'il y a Heroku, y a-t-il d'autres options?
Réponse
Trop de publicités?Oui il y a des
C'est un très bon post que j'ai trouvé sur le sujet
http://blog.sudobits.com/2013/02/15/heroku-alternatives-for-deploying-rails-applications
Je suis allé sur les options une par une et, à mon humble avis, OpenShift est la meilleure option pour une petite-moyenne site, au moins pour le début de l'élaboration et de la création d'un POC\Prototype
Pourquoi est-il mieux?
- Il vous donne ce Heroku vous donnera
- Il vous donne locales (persistant) de stockage de Sorte que vous n'avez pas besoin de payer pour les S3 sur Amazon ou équivalent - je suppose que, dans un certain moment vous souhaitez le faire (utiliser S3), mais au moins pour le début, vous n'avez pas besoin de mettre de l'argent sur elle
- Il semble que le site web est en cours d'exécution plus rapide
- Je la trouve plus souple en termes de contrôle de ce qui se passe sur la machine
Quels sont les inconvénients?
- Le seul inconvénient que j'ai pu trouver sur Openshift est qu'il semble que le déploiement prend beaucoup plus de temps, puis sur Heroku et il y a beaucoup de retard sur la première fois que vous l'adresse du site web (Mais après la première heure de travail est plus rapide - Pas liées à la mise en cache du navigateur si vous pensez que c'est la question)
Il se pourrait que le Gemfile section en vertu de ce document https://www.openshift.com/blogs/converting-an-existing-rails-app-to-run-on-openshift peut résoudre ce problème...je vais essayer plus tard
Quelles sont les démarches que je dois faire afin de déployer mon application déjà existante sur Openshift?
Dans de nombreux endroits, j'ai trouvé des explications sur la façon de créer et de déployer de nouvelles applications, mais c'était un peu dur à comprendre comment mettre mon application déjà existante sur OpenShift
C'est la raison pour laquelle je tiens à expliquer que
Hypothèses - Votre demande est git contrôlé déjà - Son chemin d'accès est /home/dev/MyApp - vous êtes maintenant dans /home/dev
- Créer compte sur Openshift https://www.openshift.com
- Utiliser les outils de ligne de commande, je l'ai trouvé beaucoup plus instructif
- Aller à https://www.openshift.com/get-started
- Suivez les étapes 1..3 pour installer et configurer les outils de ligne de commande
- cd de votre application rails dossier /home/dev/MyApp
- Créer un nouveau domaine d'application - Run :
rhc domain-create <domain name>
-
Créez votre application dans OpenShift en cours d'exécution
rhc app-create -a MyApp -t ruby-1.9 --no-git
-a définit le nom de l'application sous OpenShift - Il peut être quelque chose de totalement différent de votre application rails nom
-t indique le type de demande, je pense que pour l'instant ruby 1.9 est leur plus haute version prise en charge
--no-git dit de ne pas créer de git - Parce que nous avons déjà obtenu un
-
Configuration de votre base de données
-
Installer la DB cartouche pour votre OpenShift application en appelant
rhc cartridge add <DB cartridge type> -a <Application Name>
Par exemple :
rhc cartridge add mysql-5.1 -a MyApp
Il prend également en charge MongoDB et PostgreSQL
(voir ici https://www.openshift.com/developers/technologies)
Modifier votre base de données.yml de se relier à La base de données - Maintenant, c'est très facile depuis OpenShift a beaucoup de configuration comme des variables d'environnement et vous pouvez simplement l'utiliser partout où vous en avez besoin - Par exemple :
production: adapter: mysql encoding: utf8 database: <%=ENV['OPENSHIFT_APP_NAME']%> pool: 5 host: <%=ENV['OPENSHIFT_MYSQL_DB_HOST']%> port: <%=ENV['OPENSHIFT_MYSQL_DB_PORT']%> username: <%=ENV['OPENSHIFT_MYSQL_DB_USERNAME']%> password: <%=ENV['OPENSHIFT_MYSQL_DB_PASSWORD']%> socket: <%=ENV['OPENSHIFT_MYSQL_DB_SOCKET']%>
-
-
Assurez-vous que tout fonctionne en local
- Exécuter : 'bundle install'
- Exécuter : 'rails de s' - Voir que tout est OK
-
Git - Ajouter le OpenShift référentiel comme l'un de vos dépôts distants et de pousser à l'
- Assurez-vous que tout votre travail est mis à jour , engagés et synchronisé avec votre GitHub - Ce qui peut sauver beaucoup de mots de têtes plus tard
- Exécution :
rhc app-show <application name>
- Cela va vous montrer toutes les informations au sujet de votre demande de Copie l'URL Git - Exécution :
git remote add openshift <OpenShift repo URL>
-
Prendre toutes les OpenShift est l'ajout par la fusion
Exécution :
git merge openshift/master -s recursive -X ours
Valider les modifications :
git commit -am 'adding OpenShift files
- Le pousser pour OpenShift :
git push openshift
C'est tout , maintenant, votre application doit être déployée sur OpenShift
Comment puis-je ouvrir mon déployés de site web?
À l'aide de l' rhc app-show <application name>
commande vous pouvez voir l'url de votre site web
Il sera généralement en http://<application name>-<domain name>.rhcloud.com
Il est assez facile de le modifier pour votre propre nom de domaine
- Il suffit d'exécuter
rhc alias add <app name> <your domain>
- Puis dans votre gestion DNS - Modifier le CNAME " www " définition du point de
http://<application name>-<domain name>.rhcloud.com
Comment puis-je me connecter à mon OpenShift machine?
Encore une fois , à l'aide de rhc app-show <application name>
, vous pouvez voir l'adresse SSH
Exécutez simplement ssh <SSH address>
afin de vous connecter
Comment puis-je exécuter l'migrer et de graines automatiquement lors du déploiement?
Une bonne chose dans OpenShift est la possibilité d'ajouter des actions personnalisées (action-crochets) qui sont déclenchées dans les différentes étapes du déploiement
Vous pouvez en lire plus à ce sujet ici https://www.openshift.com/developers/deploying-and-building-applications
Pour l'instant, je ne parlerai que le déploiement de l'action-crochet
- En vertu de votre dossier d'application aller .openshift/action_hooks et créer un fichier nommé
deploy
sous - Rendre ce fichier exécutable Terme :
chmod +x deploy
-
Mettre du code dans il
Par exemple:
#!/bin/bash
echo "Démarrage de déployer"
pushd ${OPENSHIFT_REPO_DIR} > /dev/null
echo "choisissez le répertoire ${OPENSHIFT_REPO_DIR}public"
cd ${OPENSHIFT_REPO_DIR}
cd publique
echo "Création des liens symboliques à ${OPENSHIFT_DATA_DIR}uploads nommé à jour"
ln -s ${OPENSHIFT_DATA_DIR}téléchargements téléchargements
echo "bundle exec rake db:migrate RAILS_ENV=production"
bundle exec rake db:migrate RAILS_ENV="production"
echo "bundle exec rake db:graine RAILS_ENV=production"
bundle exec rake db:graine RAILS_ENV="production"
popd > /dev/null
- Le doux lien qui vous sera expliqué plus tard - il est nécessaire pour l'acheminement de trouver le Carrierwave fichiers téléchargés
- Ajouter le fichier à votre git -
git add deploy
(à partir de l'intérieur du dossier de cours) - Valider vos modifications et appuyez pour openshift à distance
Comment puis-je intégrer Carrierwave afin que je puisse télécharger des fichiers et de les enregistrer sur OpenShift?
Il y a deux points
- Où les fichiers seront sauvegardés ? - C'est facile
- Sera le routage savoir comment faire pour récupérer mes fichiers téléchargés ?
Réglage de l'enregistrement de la trajectoire:
Définir les initialiseurs\carrierwave.rb fichier
CarrierWave.configure do |config|
if Rails.env.production?
config.storage = :file
config.enable_processing = true
config.root = ENV['OPENSHIFT_DATA_DIR']
config.cache_dir = config.root + 'uploads'
end
end
laisser les téléchargeurs comme ils le sont par défaut, signification, storage :file
et
def store_dir
"uploads/#{modèle.classe.to_s.trait de soulignement}/#{mounted_as}/#{modèle.id}"
fin
L'utilisation de l' $OPENSHIFT_DATA_DIR dossier assurez-vous que nous allons être en mesure d'écrire les fichiers et qu'il va y rester
S'assurer le routage trouverez les fichiers:
Il m'a fallu un certain temps à venir avec ce truc (pas trop non plus, juste une couple d'heures)
Rails de routage sait concernent uniquement les dossiers qui se trouvent sous le dossier de l'application - soo, sur La machine, il va chercher les fichiers téléchargés dossier (nommé uploads
dans notre cas) en vertu de l' ${OPENSHIFT_REPO_DIR}\dossier public , c'est là que le doux lien que j'ai mis dans la de déployer le fichier est en train de devenir à la main - Il simplement cheats le système et de le rendre pour aller chercher ces fichiers à partir d'un dossier qui n'est pas dans le dossier de l'application
Je sais qu'il y a beaucoup de messages au sujet de ces problèmes et la façon de déployer et tout et tout, mais je voulais juste mettre un peu d'ordre dans il.
Bien sûr, il peut y avoir des erreurs et des inexactitudes dans ce que j'ai écrit car je n'ai pas documenté chaque étape de la voie, mais seulement de ce que je me souviens, n'hésitez pas à me corriger si je me trompe sur certains détails.
Un de la meilleure source est le OpenShift documentation
J'espère que ces choses vont aider les gens et vous faire économiser du temps et de l'argent
Profitez de