In dit artikel en videozelfstudie leer je hoe je een eenvoudige Fedora-server opzet voor Rails en PostgreSQL-implementaties. Eerst stellen we Apache en PostgreSQL in. Vervolgens gebruiken we phpPgAdmin om de gebruikers en databases van onze toepassing te maken. Daarna stellen we het Ruby-platform in met Passenger om onze applicatie uit te voeren. Zodra alle componenten zijn geïnstalleerd, bereiden we onze aanvraag voor inzet voor met behulp van Capistrano.
Ik zal u laten zien hoe u Capistrano kunt gebruiken om taken op afstand te automatiseren en van andere functies te profiteren.
Er is altijd veel verwarring rond het inzetten van Rails-applicaties. Deze tutorial hoopt hier wat van uit te sorteren. De meeste mensen kennen LAMP: Linux, Apache, MySQL en PHP. We zullen LAPR instellen: Linux, Apache, PostgreSQL en Ruby. Het instellen van een LAPR-server lijkt sterk op het instellen van een LAMP-server. De enige rimpel is dat Rails met Apache praat. Gelukkig is er Passenger aka mod \ _rails. De passagier is als mod \ _php. Het maakt het draaien van Rails-applicaties eenvoudig als taart. Om een Rails-applicatie via Apache uit te voeren, maakt u een virtuele host die de documentroot naar de openbare map van de toepassing wijst en u op rails rijdt.
Capistrano is een ander deel waar mensen misschien niet bekend mee zijn. Capistrano is een Ruby-juweeltje dat is ontworpen om taken uit te voeren op een of meer externe machines. U hebt SSH-toegang nodig om Capistrano te gebruiken. Capistrano, liefkozend bekend als Cap, automatiseert het implementatieproces. We kunnen de cap gebruiken om onze code uit een repo te halen en naar de server te pushen, de server te stoppen / starten / herstarten, aangepaste taken te schrijven die vereist zijn door onze applicatie (denk aan vereiste edelstenen) of een onderhoudspagina uit / in te schakelen. Het gebruik van een dop is niet vereist maar het verslaat zeker het gebruik van FTP om alle bestanden te kopiëren! Cap's echte kracht komt van de mogelijkheid om aangepaste taken in Ruby te schrijven om de server te manipuleren. Ik heb veel applicaties geschreven die uploads van gebruikersbestanden toestaan. Aan de serverkant moet een map worden gemaakt met de juiste machtigingen om de uploads te laten slagen. Het is eenvoudig genoeg om een hoofdtaak te schrijven om de map te maken en de rechten in te stellen. Als u ooit van server wisselt, kunt u gewoon de hoofdtaak uitvoeren om de server opnieuw in te stellen. Er zijn veel dingen die je met Capistrano kunt doen. Je zou deze hele tutorial zelfs kunnen automatiseren om een willekeurig aantal machines tegelijk in te stellen!
Om deze tutorial te voltooien, heb je SSH + sudo-toegang nodig. Als u niet over een reserveserver beschikt, kunt u er een maken in VirtualBox. U kunt eenvoudig een nieuwe VM maken en deze met uw hostsysteem verbinden. Ik deed dit voor de tutorial. Wanneer u uw virtuele machine start, zorg er dan voor dat u een overbrugde adapter gebruikt, zodat uw VM een IP krijgt op hetzelfde subnet. Ik ben begonnen met een nieuwe installatie zonder enige aanpassing. Als u toegang hebt tot een VPS zoals SliceHost, kunt u deze instructies ook gebruiken.
Zorg ervoor dat u de screencast bekijkt voordat u de onderstaande code analyseert.
$ sudo adduser -m-ontwikkelaar $ sudo passwd-deployer $ sudo visudo-installer ALL = (ALL) NOPASSWD: ALL $ su deployer $ mkdir ~ / .ssh $ touch ~ / .ssh / authorized_keys2 $ chmod -R 0700 ~ / .ssh # kopie uw openbare sleutel en plak deze in de authorized $ keys $ file sshd start
$ sudo yum groupinstall "PostgreSQL Database" $ sudo service postgresql initdb $ sudo service postgresql start $ su - postgres $ psql -d template1 $ verander gebruiker postgres met wachtwoord 'yourpostgresuserpassword'; $ \ q # Vervang ident in /var/usr/lib/pgsql/data/pg_hba.conf met md5 $ passwd postgres # stel extra beveiliging in /etc/phpPgAdmin/config.inc.php in op false # add 'Allow from YOUR_IP_HERE' naar vhost in /etc/httpd/conf.d/phpPgAdmin.conf # http inschakelen in de firewall $ sudo yum install httpd $ sudo service httpd start $ sudo service postgresql herstarten
$ sudo yum groupinstall Ruby $ sudo yum install rubygems $ sudo gem install gemcutter $ sudo yum install postgresql-devel $ sudo gem install pg $ sudo gem install passenger $ yum install gcc-c ++ httpd-devel apr-devel $ sudo passenger-install- apache2-module # maak dit bestand /etc/http/conf.d/passenger.conf aan met deze inhoud: LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger. dus PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9 PassengerRuby / usr / bin / ruby $ sudo setenforce 0 $ sudo service httpd restart
$ sudo mkdir / var / www / html / apps $ sudo chown -gebruiker: apache / var / www / html / apps $ sudo yum install git # maak op dit punt uw databases aan in 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 # update dat bestanden conttents naar:Servernaam www.nettuts-demo.com DocumentRoot / var / www / html / apps / nettuts-demo / actueel / openbaar Opties FollowSymLinks Toestaan van alle opties -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: repository, "git: // github.com/Adman65/Nettuts-Capistrano-Deployments.git" set: user,: deployer set: deploy_to, "/ var / www / html / apps / # application "set: use_sudo, false set: scm,: git role: web," 192.168.1.112 "# Uw HTTP-server, Apache / etc-rol: app," 192.168.1.112 "# # Dit kan hetzelfde zijn als uw 'Web'-serverrol: db, "192.168.1.112",: primary => true # Dit is waar Rails-migraties de rol uitvoeren: db, "192.168.1.112" default_run_options [: pty] = ware naamruimte: deploy do task : start doen; eindopdracht: stop do; eind taak: restart,: roles =>: app,: except => : no_release => true do run "# try_sudo touch # File.join (current_path, 'tmp', 'restart.txt') "end desc" Installeert vereiste edelstenen "taak: edelstenen,: rollen =>: app wordt uitgevoerd" cd # current_path && sudo rake edelstenen: installeer RAILS_ENV = productie "einde na" deploy: setup "," deploy: edelstenen "vóór "deploy", "deploy: web: disable" na "deploy", "deploy: web: enable" end