Schloss auf einem Hügel
Rufposten
 
Text. Bild. Ton.
Diese Seite berichtet von München aus über Multimedia, digitales Storytelling und Kunst im Netz. Und stellt eigene Entwicklungen in diesem Bereich vor.

Rufposten wird betrieben von Matthias Eberl.
Über mich
Kontakt
Kurse



»Put up some data.
Suggest someone else does.
Manage a subject area.
Write some software.
Send us suggestions.
Tell your friends.«
Tim Berners-Lee, der Erfinder des World Wide Web, auf einer der ersten Seiten im WWW.





RSS Feed





Pageflow Installationsnotizen

Hab es endlich geschafft, das Multimedia-Tool Pageflow auf meinem Hoster Uberspace zu installieren. Hier sind meine Installationsnotizen, auf Grundlage der Original-Anleitung, die natürlich anders ist, weil es dort um einen Root-Server geht. Meine Notizen sind allerdings mit Vorbehalt zu benutzen. Ich habe keine Ahnung von Ruby on Rails und schon gar nicht von dem, was ich da in die Shell eingegeben habe.

Ruby 1.9.3 aktivieren

[rufpost@vega ~]$ cat <<'__EOF__' >> ~/.bash_profile
> export PATH=/package/host/localhost/ruby-1.9.3/bin:$PATH
> export PATH=$HOME/.gem/ruby/1.9.1/bin:$PATH
> __EOF__
[rufpost@vega ~]$ . ~/.bash_profile


Rails installieren
[rufpost@vega ~]$ export LANG=en_US.UTF-8
[rufpost@vega ~]$ gem install --user-install --version 4.0.2 rails

Gems immer lokal ausführen:
[rufpost@vega ~]$ echo "gem: --user-install --no-rdoc --no-ri" > ~/.gemrc

Projekt anlegen
[rufpost@vega ~]$ rails new pf_test --skip-bundle --database=mysql
[rufpost@vega ~]$ cd pf_test

Bundler konfigurieren
[rufpost@vega pf_test]$ bundle config path ~/.gem

Pfad für SQLite ändern (Ist das nötig? Besser mal machen)
$ bundle config build.sqlite3 \
--with-sqlite3-include=/package/host/localhost/sqlite-3/include \
--with-sqlite3-lib=/package/host/localhost/sqlite-3/lib

An die Datei "Gemfile" folgende Zeilen anhängen

gem 'pageflow'
gem 'activeadmin', :git => 'https://github.com/codevise/active_admin.git', :branch => 'rails4'
gem 'ransack'
gem 'inherited_resources', '1.4.1'
gem 'formtastic', '2.3.0.rc2'
# Danke an Jonas Pasche von Uberspace für diesen Fix!
gem 'resque-scheduler', '~> 2.5.5'


Pageflow installieren
[rufpost@vega pf_test]$ bundle install
[rufpost@vega pf_test]$ bundle exec rails generate pageflow:install

Die Datenbank-Konfiguration editieren - sie liegt in der Datei ~/pf_test/config/database.yml. Braucht man wirklich Test und Development? Hab sie mal mit angelegt.

development:
  adapter: mysql2
  encoding: utf8
  database: rufpost_pf_development
  pool: 5
  username: rufpost
  password: ***
  socket: /var/lib/mysql/mysql.sock

test:
  adapter: mysql2
  encoding: utf8
  database: rufpost_pf_test
  pool: 5
  username: rufpost
  password: ***
  socket: /var/lib/mysql/mysql.sock

production:
  adapter: mysql2
  encoding: utf8
  database: rufpost_pf_production
  pool: 5
  username: rufpost
  password: ***
  socket: /var/lib/mysql/mysql.sock


Redis aufsetzen
[rufpost@vega ~]$ uberspace-setup-redis

Die eine Zeile in der Datei ~/pf_test/config/initializers/resque.rb wir folgt ändern bzw. auskommentieren:
# Resque.redis = ENV.fetch('REDIS_URL', 'localhost:6379')
Resque.redis = Redis.new(:path => "/home/rufpost/.redis/sock")

Redis läuft nun als Daemon. Wenn irgendwas schief läuft, kann man den Dienst wie folgt neu starten:
[rufpost@vega ~]$ svc -du ~/service/redis

Environment auswählen
[rufpost@vega pf_test]$ export RAILS_ENV=production

Datenbank erstellen und befüllen (kein Ahnung, ob man das Environment bei allen angeben muss, aber bei dem Teil gab es immer Probleme):
[rufpost@vega pf_test]$ bundle exec rake db:create RAILS_ENV=production
[rufpost@vega pf_test]$ bundle exec rake db:migrate RAILS_ENV=production
[rufpost@vega pf_test]$ bundle exec rake db:seed RAILS_ENV=production

Pfad zum ausführen von Gems via Shell angeben
export PATH=$HOME/.gem/bin:$PATH

Passenger lokal installieren, also nach /home/rufpost/.gem/ruby/1.9.1/gems
[rufpost@vega ~]$ cd ..
[rufpost@vega ~]$ gem install passenger

Subdomain Ordner anlegen
[rufpost@vega ~]$ cd /var/www/virtual/rufpost
[rufpost@vega ~]$ mkdir pageflow.rufposten.de

.htaccess in diesem Subdomain-Ordner anlegen, diesen Text erstellen. Vorher eine eigene Portnummer auswählen und auf Verfügbarkeit testen
RewriteEngine On
RewriteRule (.*) http://localhost:00000/$1 [P]

Subdomain registrieren
[rufpost@vega ~]$ uberspace-add-domain -d pageflow.rufposten.de -w

Optional: Stylesheets etc. für den Production-Server prekompilieren ... sonst funktioniert das Layout nur auf Development
rake assets:precompile

Passenger testweise im Projectverzeichnis starten. Dabei natürlich die oben selbst gewählte Portnummer verwenden.
[rufpost@vega pf_test]$ passenger start --port 00000

Falls vorher noch nicht geschehen: Dienste bei deinem Uberspace aktivieren:
[rufpost@vega ~]$ uberspace-setup-svscan

Passenger als Dienst einrichten
[rufpost@vega ~]$ uberspace-setup-service mein_passenger ~/.gem/ruby/1.9.1/bin/passenger

Den Aufruf des Dienstes noch mit Verzweichniswechsel, Environment und deinem Port ergänzen. Dazu den letzten Abschnitt der Datei ~/service/mein_passenger/run wie folgt ergänzen/editieren:
# Now let's go!
export RAILS_ENV=production
cd ~/pf_test/
exec /home/rufpost/.gem/ruby/1.9.1/bin/passenger start --port 00000 2>&1

Endlich! Pageflow starten. Sollte nun unter der Subdomain aufrufbar sein.
[rufpost@vega]$ svc -du ~/service/mein_passenger

Resque wird von Pageflow nach dem Hochladen von Multimediadateien benötigt, bevor die Videos an Amazon und dann an Zencoder rausgehen. Da die Dienste nicht zum Abrufen der Reportagen, sondern nur beim Hochladen von neuen Dateien benötigt werden, habe ich es mir einfach gemacht und starte beide händisch in jeweils einem eigenen Shell-Fenster, bevor ich eine Reportage bearbeite.
[rufpost@vega pf_test]$ QUEUE=* rake resque:work RAILS_ENV=production
[rufpost@vega pf_test]$ QUEUE=* rake resque:scheduler RAILS_ENV=production

Amazon S3 und Zencoder anlegen und konfigurieren. Bei Amazon AWS Account anlegen und für jedes Environment zwei Buckets erstellen

Der Anleitung weiter folgen und die Buckets konfigurieren.

Die Namen der Buckets, das AWS-Host-Alias (wird bei AWS unter "Properties/Static website/Hosting/Endpoint:") angezeigt und die AWS-Keys in die Datei ~/pf_test/config/initializers/pageflow.rb eintragen. Dabei aufpassen, dass sich keine Leerzeichen vor und nach den Keys einschleichen. Den S3 Hostname sollte man nicht ändern, wenn man in Europa hostet, siehe auch dieser Forenbeitrag.
Anschließend bei Zencoder.com anmelden und dort eine Bezahlform wählen (es gibt auch einen Test-Account, bei dem die Videos nach fünf Sekunden abbrechen). Den Zencoder-Api-Key ebenfalls in die pageflow.rb eintragen. Amazon Cloudfront wird für Production NICHT benötigt.

Veröffentlicht am 03. Aug. 2014. in [/Tech] Kommentare: 1

Jewe wrote at 2015-01-03 15:00:

Super Anleitung, vielen Dank! Vor allem auch für die Links zu den Originalposts. Sehr hilfreich.

Inzwischen muss man allerdings beim anlegen des Railsprojekt explizit die Railsversion angeben, da auf dem uberspace nun standardmäßig 4.2.0 läuft.

Der Aufrug wäre dementsprechen: rails 4.0.2 new pf_test --skip-bundle --database=mysql

VG




Valid XHTML 1.0  Powered by Blosxom