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?
Ceci est un très bon article que j'ai trouvé sur le sujet
http://blog.sudobits.com/2013/02/15/heroku-alternatives-for-deploying-Rails-applications
J'ai passé en revue les options une par une et, à mon humble avis, OpenShift est la meilleure option pour un site Web de petite taille, au moins pour le début du développement et de la création d'un POC\Prototype
Pourquoi est-ce mieux?
Y a-t-il des inconvénients?
Il se peut que la section Gemfile sous ce document https://www.openshift.com/blogs/converting-an-existing-Rails-app-to-run-on-openshift puisse résoudre ce problème ...Je vais essayer plus tard
Quelles sont les étapes à suivre pour 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 une nouvelle application , mais il était un peu difficile de comprendre comment mettre mon application déjà existante sur OpenShift
C’est la raison pour laquelle je veux expliquer que
Hypothèses - Votre application est déjà git contrôlée - Son chemin est/home/dev/MyApp - vous êtes maintenant sous/home/dev
rhc domain-create <domain name>
Créez votre application dans OpenShift en exécutant
rhc app-create -a MyApp -t Ruby-1.9 --no-git
-a définit le nom de l'application sous OpenShift - Cela peut être quelque chose de totalement différent de votre Rails nom de l'application
-t définit le type d'application - je pense que pour l'instant Ruby 1.9 est leur version la plus élevée prise en charge
--no-git dit de ne pas créer git - Parce que nous en avons déjà un
Configurez votre base de données
Installez la cartouche DB appropriée pour votre application OpenShift 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 )
Modifiez votre database.yml pour qu'il soit lié à la base de données OpenShift - Maintenant, c'est très facile car OpenShift a obtenu une grande partie de sa configuration en tant que variables d'environnement et vous pouvez simplement l'utiliser 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 localement
Git - Ajoutez le référentiel OpenShift comme l'un de vos référentiels distants et poussez-le
rhc app-show <application name>
- Cela vous montrera toutes les informations sur votre application - Copiez l'URL Gitgit remote add openshift <OpenShift repo URL>
Prenez tout ce que OpenShift ajoute en fusionnant
Courir : git merge openshift/master -s recursive -X ours
Validez les modifications: git commit -am 'adding OpenShift files
git Push openshift
C'est tout, maintenant votre application doit être déployée sur OpenShift
Comment puis-je ouvrir mon site Web déployé?
En utilisant le rhc app-show <application name>
commande, vous pouvez voir l'url de votre site Web
Ce sera généralement http://<application name>-<domain name>.rhcloud.com
Il est assez facile de le changer pour votre propre domaine
rhc alias add <app name> <your domain>
http://<application name>-<domain name>.rhcloud.com
Comment puis-je me connecter à ma machine OpenShift?
Encore une fois, en utilisant rhc app-show <application name>
vous pouvez voir l'adresse SSH Exécutez simplement ssh <SSH address>
pour se connecter
Comment exécuter automatiquement la migration et l'amorçage lors du déploiement?
Une bonne chose dans OpenShift est la possibilité d'ajouter des actions personnalisées (action-hooks) qui sont déclenchées à différentes étapes du déploiement
Vous pouvez en savoir plus à ce sujet ici https://www.openshift.com/developers/deploying-and-building-applications
Pour l'instant, je ne parlerai que du crochet d'action de déploiement
deploy
sous celui-cichmod +x deploy
Mettez du code dedans
Par exemple:
#!/bin/bash
echo "Démarrage du déploiement"
pushd $ {OPENSHIFT_REPO_DIR}>/dev/null
echo "Changer le répertoire en $ {OPENSHIFT_REPO_DIR} public"
cd $ {OPENSHIFT_REPO_DIR}
cd public
echo "Création d'un lien logiciel vers $ {OPENSHIFT_DATA_DIR} uploads nommés uploads"
ln -s $ {OPENSHIFT_DATA_DIR} uploads uploads
echo "Exécution du bundle exec rake db: migrate Rails_ENV = production"
bundle exec rake db: migrer Rails_ENV = "production"
echo "Exécution du bundle exec rake db: seed Rails_ENV = production"
bundle exec rake db: seed Rails_ENV = "production"
popd>/dev/null
git add deploy
(à l'intérieur du dossier bien sûr)Comment puis-je intégrer Carrierwave pour pouvoir télécharger des fichiers et enregistrer sur OpenShift?
Il y a deux points
Définition du chemin d'enregistrement:
Définissez le fichier initializers\carrierwave.rb sur
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
laissez les téléchargeurs tels qu'ils sont par défaut, ce qui signifie storage :file
et
def store_dir
"uploads/# {model.class.to_s.underscore}/# {monté_as}/# {model.id}"
fin
L'utilisation du dossier $ OPENSHIFT_DATA_DIR nous assurera que nous pourrons écrire les fichiers et qu'il y restera
S'assurer que le routage trouvera les fichiers:
Il m'a fallu un certain temps pour trouver cette astuce (pas trop, juste quelques heures)
Le routage Rails sait comment relier uniquement les dossiers qui se trouvent sous le dossier d'application - alors, sur la machine OpenShift, il recherchera le dossier des fichiers téléchargés (nommé uploads
dans notre cas) sous le $ {OPENSHIFT_REPO_DIR}\dossier public, c'est là que le lien logiciel que j'ai mis dans le fichier deploy devient pratique - Il triche simplement le système et le fait aller chercher ces fichier à partir d'un dossier qui ne se trouve pas dans le dossier d'application
Je sais qu'il y a beaucoup de messages sur ces problèmes et comment déployer et tout, mais je voulais juste mettre de l'ordre dedans.
Bien sûr, il pourrait y avoir des erreurs et des inexactitudes dans ce que j'ai écrit car je n'ai pas documenté chaque étape du processus, mais juste d'après ce dont je me souviens, n'hésitez pas à me corriger si je me trompe dans certains détails.
L'une des meilleures sources est la documentation OpenShift
J'espère que ces choses aideront les gens et vous feront gagner du temps et de l'argent
Prendre plaisir