GNU/Linux >> Tutoriels Linux >  >> Linux

Ruby on Rails sur Azure App Service (sites Web) avec Linux (et Ubuntu sur Windows 10)

Exécuter Ruby on Rails sur Windows a toujours été nul. La plupart des gens de Ruby/Rails sont des utilisateurs Mac et Linux et ne se sont pas concentrés sur l'utilisation de Rails pour le développement quotidien sur Windows. Un certain nombre de volontaires ont déployé des efforts héroïques pour faire fonctionner Rails avec des projets tels que RailsInstaller, mais les modules natifs et les dépendances causent presque toujours des problèmes. De plus, lorsque vous allez déployer votre application Rails, vous utilisez probablement un hôte Linux, vous pouvez donc rencontrer des différences entre les systèmes d'exploitation.

Avance rapide jusqu'à aujourd'hui et Windows 10 a le "sous-système Linux pour Windows" (WSL) basé sur Ubuntu et le shell bash natif, ce qui signifie que vous pouvez exécuter de vrais binaires Linux elf sur Windows de manière native sans machine virtuelle ... vous devriez donc faire votre Développement Rails basé sur Windows dans Bash sous Windows.

Le développement de Ruby on Rails est excellent sur Windows 10 car vous avez Windows 10 qui gère la partie de l'interface utilisateur "Windows" et bash et Ubuntu qui gère le shell.

Après l'avoir configuré, je souhaite que git déploie mon application sur Azure, facilement.

Développer sur Ruby on Rails sous Windows 10 à l'aide de WSL

Les gens de Rails et Ruby peuvent apt-get update et apt-get install ruby, ils peuvent installer rbenv ou rvm comme ils le souhaitent. De nos jours, rbenv est préféré.

Une fois que vous avez installé Ubuntu sur Windows 10, vous pouvez rapidement installer "rbenv" comme celui-ci dans Bash. Ici, je reçois 2.3.0.

~$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
~$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
~$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
~$ exec $SHELL
~$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
~$ echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
~$ exec $SHELL
~$ rbenv install 2.3.0
~$ rbenv global 2.3.0
~$ ruby -v
~$ gem install bundler
~$ rbenv reshash

Voici une capture d'écran à mi-parcours sur mon SurfaceBook. Cette étape de construction/installation prend un certain temps et touche beaucoup le disque, pour votre information.

À ce stade, j'ai Ruby, maintenant j'ai besoin de Rails, ainsi que de NodeJs pour le Rails Asset Pipeline. Vous pouvez modifier les versions selon vos besoins.

@ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ gem install rails -v 5.0.1

Vous voudrez probablement aussi PostgresSQL ou MySQL ou Mongo, ou vous pouvez utiliser une base de données Cloud comme Azure DocumentDB.

Lorsque vous développez sur Windows et Linux en même temps, vous souhaiterez probablement conserver votre code à un endroit ou à l'autre, pas aux deux. J'utilise le point de montage automatique que WSL crée à /mnt/c donc pour cet exemple je suis à /mnt/c/Users/scott/Desktop/RailsonAzure qui correspond à un dossier sur mon bureau Windows. Vous pouvez être n'importe où, soyez simplement conscient de vos paramètres CR/LF et restez dans un seul monde.

J'ai fait un "rails neufs". et l'a fait fonctionner localement. Ici, vous pouvez voir Visual Studio Code avec les extensions Ruby et mon projet ouvert à côté de Bash sous Windows.

Une fois que j'ai exécuté une application Rails et que je suis capable de développer proprement, en sautant entre Visual Studio Code sous Windows et l'invite Bash dans Ubuntu, je souhaite déployer l'application sur le Web.

Comme il s'agit d'une simple application de rails par défaut "Hello World", je ne peux pas la déployer quelque part où l'environnement Rails est en production. Il n'y a pas de route dans routes.rb (le message Yay ! You're on Rails est uniquement en phase de développement) et il n'y a pas de jeu de variables d'environnement SECRET_KEY_BASE utilisé pour vérifier les cookies signés. Je vais devoir ajouter ces deux choses. Je vais rapidement modifier routes.rb pour utiliser uniquement la page d'accueil par défaut pour cette démo, comme ceci :

Rails.application.routes.draw do
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
    get '/' => "rails/welcome#index"
end

Et j'ajouterai SECRET_KEY_BASE en tant que variable App Setting/ENV dans le portail Azure lorsque je créerai mon backend, ci-dessous.

Déploiement de l'application Ruby on Rails sur Azure App Service sous Linux

Dans le menu Nouveau du portail Azure, choisissez Application Web sur Linux (en avant-première au moment où j'ai écrit ceci) à partir de l'option Web + Mobile. Cela créera un plan de service d'application contenant une application. Il existe de nombreuses piles d'applications que vous pouvez utiliser ici, notamment node.js, PHP, .NET Core et Ruby.

REMARQUE : Quelques points de glossaire et de définition. Azure App Service est Azure PaaS (Platform as a Service). Vous exécutez Web Apps sur Azure App Service. Un forfait Azure App Service est la machine virtuelle sous-jacente (sall, medium, large, etc.) qui héberge n nombre de services d'application/sites Web. J'ai 20 services d'application/sites Web exécutés dans le cadre d'un plan de service d'application avec une petite machine virtuelle. Par défaut, il s'agit de Windows qui peut exécuter Php, Python, Node, .NET, etc. Dans cet article de blog, j'utilise un plan App Service qui exécute Linux et héberge des conteneurs Docker. L'application My Rails vivra à l'intérieur de ce service d'application et vous pouvez trouver les Dockerfiles et d'autres informations ici https://github.com/Azure-App-Service/ruby ou utiliser votre propre image Docker.

Ici, vous pouvez voir mon Azure App Service que je vais maintenant déployer à l'aide de Git. Je pourrais aussi FTP.

Je suis allé dans les options de déploiement et j'ai configuré une reproduction git locale (vers Azure). Maintenant, je peux voir cela sous Aperçu.

Sur mon bash local, j'ajoute azur en tant que télécommande. Cela peut être configuré quelle que soit la configuration de votre flux de travail. Dans ce cas, Git est FTP pour le code.

$ git add remote azure https://[email protected]:443/RubyOnAzureAppService.git
$ git add .
$ git commit -m "initial"
$ git push azure master

Cela démarre le déploiement lorsque le code est transmis à Azure.

IMPORTANT :Je vais également ajouter "RAILS_ENV=production" et un SECRET_KEY_BASE=à mes paramètres d'application Azure. Vous pouvez créer un nouveau secret avec "rake secret".

Si je rencontre des problèmes, je peux activer la journalisation des applications, la journalisation du serveur Web et les messages d'erreur détaillés sous Journaux de diagnostic, puis FTP dans App Service et consulter les journaux.

Tout est dans Aperçu, vous rencontrerez donc probablement des problèmes. Ils mettent très souvent à jour les systèmes sous-jacents. Quelques pièges que j'ai trouvé :

  • Le déploiement/redéploiement nécessite un redémarrage explicite du site, aujourd'hui. J'ai entendu dire que ce serait bientôt corrigé.
  • J'ai dû récupérer les fichiers journaux via FTP. Ils vont exposer les journaux dans le portail.
  • J'ai utilisé le site "sidecar" Kudu sur monsite.scm .azurewebsite.net pour obtenir un accès shell au conteneur Kudu, mais j'aimerais pouvoir accéder en ssh ou accéder au conteneur en cours d'exécution à partir du portail Azure un jour.

Cela dit, si vous souhaitez plus de détails internes sur la façon dont cela fonctionne, vous pouvez regarder une session de Connect () l'année dernière avec le développeur Nazim Lala. Merci à James Christianson pour son aide au débogage !

Parrain : Saviez-vous que VSTS peut s'intégrer étroitement à Octopus Deploy ? Regardez Damian Brady et Brian A. Randell vous montrer comment automatiser les déploiements de VSTS à Octopus Deploy, et faire une démonstration du nouveau tableau de bord VSTS Octopus Deploy widget. Regarder maintenant


Linux
  1. Surveillance des hôtes Linux et Windows avec Glances

  2. Installer Linux Mint avec Windows 8 | Double démarrage Windows 8 et Linux Mint 12

  3. Erreurs avec Vagrant et Ubuntu 12.10 avec RVM ?

  4. Afficher le numéro de service DELL et le code de service express sous Linux et Windows

  5. Comment attraper Ctrl + C sur Windows et Linux avec Qt

Ruby on Rails sur Windows n'est pas seulement possible, c'est fabuleux en utilisant WSL2 et VS Code

Développement Web et techniques avancées avec Linux sur Windows (WSL)

Ubuntu maintenant dans le Windows Store :mises à jour de Linux sur Windows 10 et conseils importants

Accès à distance à Windows 10 via Ubuntu Linux et Vise Versa

Les 20 meilleurs hébergements Web Linux pour les sites personnels et les entreprises

Comment installer et configurer le service Gogs Git sur Ubuntu Linux