In diesem Artikel und Video-Tutorial erfahren Sie, wie Sie einen einfachen Fedora-Server für Rails- und PostgreSQL-Bereitstellungen einrichten. Zuerst richten wir Apache und PostgreSQL ein. Anschließend verwenden wir phpPgAdmin, um Benutzer und Datenbanken unserer Anwendung zu erstellen. Danach richten wir die Ruby-Plattform mit Passagieren ein, um unsere Anwendung auszuführen. Sobald alle Komponenten installiert sind, bereiten wir unsere Anwendung für die Bereitstellung mit Capistrano vor.
Ich zeige Ihnen, wie Sie mit Capistrano Remote-Aufgaben automatisieren und andere Funktionen nutzen können.
Bei der Implementierung von Rails-Anwendungen herrscht immer viel Verwirrung. Dieses Tutorial hofft, etwas davon zu klären. Die meisten Leute kennen LAMP: Linux, Apache, MySQL und PHP. Wir werden LAPR einrichten: Linux, Apache, PostgreSQL und Ruby. Das Einrichten eines LAPR-Servers ist dem Einrichten eines LAMP-Servers sehr ähnlich. Die einzige Falte ist, Rails dazu zu bringen, mit Apache zu sprechen. Zum Glück gibt es Passenger alias mod \ _rails. Passagier ist wie mod \ _php. Es macht das Ausführen von Rails-Anwendungen zum Kinderspiel. Um eine Rails-Anwendung über Apache auszuführen, erstellen Sie einen virtuellen Host, der das Dokumentstammverzeichnis auf das öffentliche Verzeichnis der Anwendung verweist, und Sie befinden sich auf Schienen.
Capistrano ist ein weiterer Teil, mit dem die Leute möglicherweise nicht vertraut sind. Capistrano ist ein Ruby-Edelstein, der zur Ausführung von Aufgaben auf einem oder mehreren Remote-Computern entwickelt wurde. Sie benötigen einen SSH-Zugriff, um Capistrano zu verwenden. Capistrano, auch als Cap bezeichnet, automatisiert den Bereitstellungsprozess. Mit cap können wir unseren Code aus einem Repo übernehmen und auf den Server verschieben, den Server stoppen / starten / neu starten, benutzerdefinierte Aufgaben schreiben, die für unsere Anwendung erforderlich sind (denken Sie an die Installation der erforderlichen Gems) oder deaktivieren oder aktivieren Sie eine Wartungsseite. Die Verwendung von cap ist nicht erforderlich, aber es ist sicher besser, FTP zu verwenden, um alle Dateien zu kopieren! Die wahre Leistungsfähigkeit von Caps beruht auf der Möglichkeit, benutzerdefinierte Aufgaben in Ruby zu schreiben, um den Server zu bearbeiten. Ich habe viele Anwendungen geschrieben, die das Hochladen von Benutzerdateien ermöglichen. Auf der Serverseite müssen einige Verzeichnisse mit den erforderlichen Berechtigungen erstellt werden, damit die Uploads erfolgreich sind. Es ist leicht genug, eine Cap-Task zu schreiben, um das Verzeichnis zu erstellen und die Berechtigungen festzulegen. Wenn Sie den Server wechseln, können Sie einfach den Cap-Task ausführen, um den Server erneut einzurichten. Mit Capistrano können Sie viele Dinge tun. Sie können sogar das gesamte Lernprogramm automatisieren, um eine beliebige Anzahl von Computern gleichzeitig einzurichten!
Um dieses Tutorial abzuschließen, benötigen Sie SSH + Sudo-Zugriff. Wenn Sie keinen Ersatzserver haben, können Sie in VirtualBox einen Server erstellen. Sie können einfach eine neue VM erstellen und mit Ihrem Hostsystem vernetzen. Ich habe das für das Tutorial gemacht. Stellen Sie beim Starten Ihrer virtuellen Maschine sicher, dass Sie einen überbrückten Adapter verwenden, damit Ihre VM eine IP in demselben Subnetz erhält. Ich habe mit einer Neuinstallation ohne Anpassung begonnen. Wenn Sie Zugriff auf ein VPS wie SliceHost haben, können Sie auch diese Anweisungen verwenden.
Stellen Sie sicher, dass Sie sich den Screencast ansehen, bevor Sie den folgenden Code analysieren.
$ sudo adduser -m deployer $ sudo passwd deployer $ sudo visudo deployer ALL = (ALL) NOPASSWD: ALL $ su deployer $ mkdir ~ / .ssh $ touch ~ / .ssh / authorised_keys2 $ chmod -R 0700 ~ / .ssh # copy Ihren öffentlichen Schlüssel und fügen Sie ihn in die Datei authorized_keys2 $ service sshd start ein
$ sudo yum groupinstall "PostgreSQL Database" $ sudo-Dienst postgresql initdb $ sudo-Dienst postgresql start $ su - postgres $ psql -d template1 $ alter Benutzer postgres mit Kennwort 'yourpostgresuserpassword'; $ \ q # Ident in /var/usr/lib/pgsql/data/pg_hba.conf durch md5 ersetzen $ passwd postgres # zusätzliche Sicherheit in /etc/phpPgAdmin/config.inc.php auf false setzen # add 'Zulassen von YOUR_IP_HERE' vhost in /etc/httpd/conf.d/phpPgAdmin.conf aktivieren # Aktivieren Sie http in der Firewall. $ sudo yum install httpd $ sudo-Dienst httpd start $ sudo service postgresql restart
$ sudo yum groupinstall Ruby $ sudo yum Rubygems installieren $ sudo gem installieren gemcutter $ sudo yum installieren postgresql-devel $ sudo gem installieren pg $ sudo gem installieren Passagier $ yum installieren gcc-c ++ httpd-devel apr-devel $ sudo passenger-install- apache2-module # erstellt diese Datei /etc/http/conf.d/passenger.conf mit folgendem Inhalt: 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 $ sudo service httpd restart
$ sudo mkdir / var / www / html / apps $ sudo chown deployer: apache / var / www / html / apps $ sudo yum install git # Erstellen Sie nun Ihre Datenbanken 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 # Aktualisieren Sie die folgenden Inhalte:ServerName www.nettuts-demo.com DocumentRoot / var / www / html / apps / nettuts-demo / current / public Options FollowSymLinks Zulassen von allen Optionen - 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: Benutzer,: deployer set: deploy_to, "/ var / www / html / apps / # application "set: use_sudo, false set: scm,: git role: web," 192.168.1.112 "# Ihr HTTP-Server, Apache / etc role: app," 192.168.1.112 "# Dies kann dasselbe sein als 'Web'-Serverrolle: db, "192.168.1.112",: primary => true # Hier werden Rails-Migrationen ausgeführt: db, "192.168.1.112" default_run_options [: pty] = wahrer Namespace: deploy do task : start do; Aufgabe beenden: Stop do; Task beenden: Neustart,: Rollen =>: App,: Außer => : no_release => true "# try_sudo ausführen" # File.join (aktueller_Pfad, 'tmp', 'restart.txt') ausführen "end desc" Installiert die erforderlichen Gems "task: gems,: rolls =>: app run" cd # current_path && sudo rake gems: install RAILS_ENV = production "end nach" deploy: setup "," deploy: gems "vor "deploy", "deploy: web: disable" nach "deploy", "deploy: web: enable" enden