Cet article et ce didacticiel vidéo vous apprendront comment configurer un serveur Fedora de base pour les déploiements Rails et PostgreSQL. Premièrement, nous allons installer Apache et PostgreSQL. Ensuite, nous utiliserons phpPgAdmin pour créer les utilisateurs et les bases de données de notre application. Après cela, nous allons configurer la plate-forme Ruby en utilisant Passenger pour exécuter notre application. Une fois tous les composants installés, nous préparerons notre application pour le déploiement à l'aide de Capistrano..
Je vais vous montrer comment utiliser Capistrano pour automatiser des tâches à distance et tirer parti d'autres fonctionnalités..
Il y a toujours beaucoup de confusion autour du déploiement d'applications Rails. Ce tutoriel espère en régler une partie. La plupart des gens connaissent LAMP: Linux, Apache, MySQL et PHP. Nous allons installer LAPR: Linux, Apache, PostgreSQL et Ruby. La configuration d’un serveur LAPR est très similaire à celle d’un serveur LAMP. La seule difficulté est que Rails parle à Apache. Heureusement, il y a Passenger aka mod \ _rails. Passager est comme mod \ _php. Il facilite grandement l’exécution des applications Rails. Pour exécuter une application Rails via Apache, créez un hôte virtuel pointant la racine du document vers le répertoire public des applications et vous roulerez sur des rails..
Capistrano est une autre partie que les gens ne connaissent peut-être pas. Capistrano est un bijou Ruby conçu pour exécuter des tâches sur une ou plusieurs machines distantes. Vous aurez besoin d’un accès SSH pour utiliser Capistrano. Capistrano, affectueusement appelé Cap, automatise le processus de déploiement. Nous pouvons utiliser cap pour extraire notre code d’un référentiel et le pousser sur le serveur, arrêter / démarrer / redémarrer le serveur, écrire les tâches personnalisées requises par notre application (pensez installer les gems nécessaires) ou désactiver / activer une page de maintenance. L'utilisation de cap n'est pas nécessaire, mais il vaut certainement mieux que d'utiliser FTP pour copier tous les fichiers! Le vrai pouvoir de Cap provient de la possibilité d'écrire des tâches personnalisées dans Ruby pour manipuler le serveur. J'ai écrit de nombreuses applications permettant le téléchargement de fichiers par l'utilisateur. Ensuite, côté serveur, certains répertoires doivent être créés avec les autorisations appropriées pour que le téléchargement soit réussi. Il est assez facile d'écrire une tâche de limitation pour créer le répertoire et définir les autorisations. Ensuite, si vous changez de serveur, vous pouvez simplement exécuter la tâche de limitation pour reconfigurer le serveur. Il y a beaucoup de choses que vous pouvez faire avec Capistrano. Vous pouvez même automatiser tout ce tutoriel pour configurer plusieurs machines à la fois.!
Pour compléter ce didacticiel, vous devez disposer d'un accès SSH + sudo. Si vous n'avez pas de serveur de rechange, vous pouvez en créer un dans VirtualBox. Vous pouvez facilement créer une nouvelle machine virtuelle et la mettre en réseau avec votre système hôte. Je l'ai fait pour le tutoriel. Lorsque vous démarrez votre machine virtuelle, veillez à utiliser un adaptateur ponté pour que votre machine virtuelle obtienne une IP sur le même sous-réseau. J'ai commencé avec une nouvelle installation sans aucune personnalisation. Si vous avez accès à un VPS comme SliceHost, vous pouvez également suivre ces instructions..
Assurez-vous de visionner le screencast avant d'analyser le code ci-dessous.
$ sudo adduser -m deployer $ sudo passwd deployer $ sudo visudo deployer TOUT = (TOUT) NOPASSWD: TOUT $ su deployer $ mkdir ~ / .ssh $ touch ~ / .ssh / autorisé_keys2 $ chmod -R 0700 ~ / .ssh # copie votre clé publique et collez-la dans le fichier registered_keys2 $ service sshd start
$ sudo yum groupinstall "Base de données PostgreSQL" $ sudo service postgresql initdb $ sudo service postgresql start $ su - postgres $ psql -d template1 $ modifiez l'utilisateur postgres avec le mot de passe 'yourpostgresuserpassword'; $ \ q # Remplacez ident dans /var/usr/lib/pgsql/data/pg_hba.conf par md5 $ passwd postgres # définissez une sécurité supplémentaire dans /etc/phpPgAdmin/config.inc.php to false # add 'Autoriser à partir de YOUR_IP_HERE' pour vhost dans /etc/httpd/conf.d/phpPgAdmin.conf # activer http dans le pare-feu $ sudo yum installer httpd $ service sudo httpd démarrer $ sudo service postgresql redémarrer
$ sudo yum groupinstall Ruby $ sudo yum installer $ sudo gem installer gemcutter $ sudo installer postgresql-devel $ sudo gem installer pg $ sudo installer gem cutter $ yum installer gcc-c ++ httpd-devel apr-devel $ sudo installer apache2-module # crée ce fichier /etc/http/conf.d/passenger.conf avec le contenu suivant: LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger. so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9 PassengerRuby / usr / bin / ruby $ sudo setenforce 0 $ service Sudo httpd restart
$ sudo mkdir / var / www / html / apps $ sudo dépliant chown: apache / var / www / html / apps $ sudo yum installez git # à ce stade, créez vos bases de données dans phpPgAdmin
# echo "Include vhost.d / *. vhost" >> /etc/httpd/conf/httpd.conf $ sudo mkdir /etc/httpd/vhost.d $ sudo touch /etc/httpd/vhost.d/nettuts-demo .vhost # met à jour les fichiers qui contiennent les éléments suivants:NomServeur www.nettuts-demo.com DocumentRoot / var / www / html / apps / nettuts-demo / actuel / public Options FollowSymLinks Autoriser à partir de toutes les options - MultiViews RewriteEngine on RewriteCond% DOCUMENT_ROOT /system/maintenance.html -f RewriteCond% SCRIPT_FILENAME! Maintenance.html RewriteRule $ /system/maintenance.html [R = 302, L]
set: application, "nettuts-demo" set: référentiel, "git: //github.com/Adman65/Nettuts-Capistrano-Deployments.git" set: utilisateur,: deployer set: deploy_to, "/ var / www / html / apps / # application "set: use_sudo, false set: scm,: rôle git: web," 192.168.1.112 "# Votre serveur HTTP, rôle Apache / etc: app," 192.168.1.112 "# Cela peut être la même chose en tant que rôle serveur 'Web': db, "192.168.1.112",: primary => true # C’est ici que les migrations Rails exécuteront le rôle: db, "192.168.1.112" default_run_options [: pty] = true espace de nom: deploy do task : commencer à faire; fin de tâche: stop do; fin de la tâche: redémarrage,: rôles =>: app,: sauf => : no_release => true exécuter "# try_sudo touch # File.join (chemin_current, 'tmp', 'restart.txt') "end desc" Installe les gemmes requises "tâche: gems,: rôles =>: l'application est exécutée" cd # chemin_current && sudo rake gems: installer RAILS_ENV = production "fin après" deploy: setup "," deploy: gems "avant "deploy", "deploy: web: disable" après "deploy", "deploy: web: enable" end