PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Installation einer Ruby - Umgebung (Entwicklung + Server)



wodim
18.07.09, 14:58
Hallo,

ich gehe gerade nach dieser Anleitung vor, um mir eine Umgebung zu installieren:

http://www.discreetdesign.de/2008/how2-ruby-on-rails-mit-mongrel-und-apache2/

Die Probleme gingen da los:


gem install rails –include-dependencies
Das hab ich erst mal kritiklos in mein Terminal 'reinkopiert. ;) Es lief so durch (über Stunden, also hab ich nicht ständig aufgepasst):


Bulk updating Gem source index for: http://gems.rubyforge.org/
Bulk updating Gem source index for: http://gems.rubyforge.org/
Successfully installed rake-0.8.7
Successfully installed activesupport-2.3.2
Successfully installed activerecord-2.3.2
Successfully installed actionpack-2.3.2
Successfully installed actionmailer-2.3.2
Successfully installed activeresource-2.3.2
Successfully installed rails-2.3.2
Bis hierhin ok, aber dann:


ERROR: could not find –include-dependencies locally or in a repository
7 gems installed
Weiter lief's so:


Installing ri documentation for rake-0.8.7...
Installing ri documentation for activesupport-2.3.2...
Installing ri documentation for activerecord-2.3.2...
Installing ri documentation for actionpack-2.3.2...
Installing ri documentation for actionmailer-2.3.2...
Installing ri documentation for activeresource-2.3.2...
Installing RDoc documentation for rake-0.8.7...
Installing RDoc documentation for activesupport-2.3.2...
Installing RDoc documentation for activerecord-2.3.2...
Installing RDoc documentation for actionpack-2.3.2...
Installing RDoc documentation for actionmailer-2.3.2...
Installing RDoc documentation for activeresource-2.3.2...
Habe also einfach den letzen Befehl nochmal eingegeben - aber mit einem "-" statt "–" vor dem "include-dependencies" (ich nehme an, das war der Fehler):


gem install rails -include-dependencies
Diesmal ging's ganz schnell - ich nehme an, weil einiges schon ordentlich installiert ist. ;)


Bulk updating Gem source index for: http://gems.rubyforge.org/
Bulk updating Gem source index for: http://gems.rubyforge.org/
Successfully installed rake-0.8.7
Successfully installed activesupport-2.3.2
Successfully installed activerecord-2.3.2
Successfully installed actionpack-2.3.2
Successfully installed actionmailer-2.3.2
Successfully installed activeresource-2.3.2
Successfully installed rails-2.3.2
7 gems installed
Installing ri documentation for rake-0.8.7...
Installing ri documentation for activesupport-2.3.2...
Aber das war nun mein Fehler:
^C


RDoc failure in lib/active_support/vendor/tzinfo-0.3.12/tzinfo/definitions/Europe/Sofia.rb at or around line 20 column 47

Before reporting this, could you check that the file
you're documenting compiles cleanly--RDoc is not a full Ruby parser, and gets confused easily if fed invalid programs.

The internal error was:
ERROR: Interrupted
Tjajaaa - im Terminal bedeutet die gewohnte Tastenkombination ^C halt nicht "Kopieren", sondern "den laufenden Task killen". :rolleyes: Also nochmal gestartet:


gem install rails -include-dependencies

Bulk updating Gem source index for: http://gems.rubyforge.org/
Bulk updating Gem source index for: http://gems.rubyforge.org/
Successfully installed rails-2.3.2
1 gem installed
Das sah eigentlich ganz gut aus, also hab ich ihn einfach mal weitermachen lassen:


gem install daemons gem_plugin mongrel mongrel_cluster -include-dependencies


Bulk updating Gem source index for: http://gems.rubyforge.org/
Successfully installed daemons-1.0.10
Successfully installed gem_plugin-0.2.3
ERROR: Error installing mongrel:
fastthread requires RubyGems version >= 1.2
ERROR: Error installing mongrel_cluster:
fastthread requires RubyGems version >= 1.2
2 gems installed
Installing ri documentation for daemons-1.0.10...
Installing ri documentation for gem_plugin-0.2.3...
Installing RDoc documentation for daemons-1.0.10...
Installing RDoc documentation for gem_plugin-0.2.3...
Wie kann ich das "reparieren"?

Roger Wilco
18.07.09, 15:01
Indem du RubyGems in Version 1.2 oder höher installierst oder alternativ auf Mongrel verzichtest. Mit Thin oder Phusion Passenger ("mod_rails") gibt es gute Alternativen.

wodim
18.07.09, 15:13
Indem du RubyGems in Version 1.2 oder höher installierst oder alternativ auf Mongrel verzichtest.
Hm, soweit schon klar. Die Frage ist, was nun einfacher wäre (bzw. einem dummen Programmierer einfacher zu erklären ;) ). Also ich hab schon ein paar Jährchen als Coder gearbeitet (OOP, zuletzt in Smalltalk, also soll's Spaß machen, mit Ruby zu arbeiten ;) ), aber was die Administration etc. betrifft - naja, da kann ich mich nur "rantasten". ;)

Hab ich das richtig verstanden: Der "übliche" Webserver ist halt Apache (hatte auch schon mal XAMPP hier laufen, allerdings noch unter Windows - keine Probleme damit, außer dass ich PHP nicht abkann ;) ). Sind Mongrel, Thin oder Fusion Passenger nun Alternativen zum Indianer oder Ergänzungen, damit er Ruby "kann"?

Roger Wilco
18.07.09, 15:33
Mongrel und Thin sind in Ruby implementierte Web- bzw. kleine Applicationserver. Phusion Passenger ("mod_rails") ist ein Modul für den Apache httpd, um Ruby Webanwendungen, die Rack unterstützen, über den Apache httpd auszuführen.

wodim
18.07.09, 16:28
Hm, also wo stehe ich jetzt:

Apache ist installiert, ein MySQL - Datenbankserver auch, Ruby auch. RubyGems nicht "ordentlich", aber das brauchen wir ja nur für Mongrel, worauf wir also verzichten können. Dann wäre also Phusion Passenger dazuzuholen, dann müsste es gehen - oder kann's da noch Probleme mit dem Indianer geben, denn ich mir da geholt habe:


apt-get install apache2 mysql-server php5

wodim
18.07.09, 21:13
Phusion Passenger ("mod_rails") ist ein Modul für den Apache httpd, um Ruby Webanwendungen, die Rack unterstützen, über den Apache httpd auszuführen.

Ok, also bevor der "Versionen - Mischmasch" hier (aus den ingsgesamt ziemlich veralteten Quellen) noch schlimmer wird, schmeiße ich erst mal alles wieder 'raus. Und hab mich jetzt bis dahin durchgegoogelt:

http://www.anrichter.net/blog/2009/03/25/ein-passagier-auf-schienen/

Und der verweist auf diese Quellen:

http://www.modrails.com/

http://www.rubyenterpriseedition.com/

Da müssten wir doch richtig liegen, oder?

wodim
19.07.09, 00:00
Hey, die Installation ist gelaufen - bis auf diese Gems:


Installing mysql...
/opt/ruby-enterprise-1.8.6-20090610/bin/ruby /opt/ruby-enterprise-1.8.6-20090610/bin/gem install -r --no-rdoc --no-ri --no-update-sources --backtrace mysql
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/opt/ruby-enterprise-1.8.6-20090610/bin/ruby extconf.rb
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.

...
...

Installing sqlite3-ruby...
/opt/ruby-enterprise-1.8.6-20090610/bin/ruby /opt/ruby-enterprise-1.8.6-20090610/bin/gem install -r --no-rdoc --no-ri --no-update-sources --backtrace sqlite3-ruby
Building native extensions. This could take a while...
ERROR: Error installing sqlite3-ruby:
ERROR: Failed to build gem native extension.

/opt/ruby-enterprise-1.8.6-20090610/bin/ruby extconf.rb
checking for fdatasync() in -lrt... yes
checking for sqlite3.h... no

make
make: *** Keine Regel vorhanden, um das Target »ruby.h«,
benötigt von »sqlite3_api_wrap.o«, zu erstellen. Schluss.

...
...

Installing postgres...
/opt/ruby-enterprise-1.8.6-20090610/bin/ruby /opt/ruby-enterprise-1.8.6-20090610/bin/gem install -r --no-rdoc --no-ri --no-update-sources --backtrace postgres
Building native extensions. This could take a while...
ERROR: Error installing postgres:
ERROR: Failed to build gem native extension.

/opt/ruby-enterprise-1.8.6-20090610/bin/ruby extconf.rb
extconf.rb:46: command not found: pg_config --includedir
extconf.rb:53: command not found: pg_config --libdir
checking for main() in -lpq... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.

Dieselben Meldungen kommen, wenn ich sie "von Hand" installieren will, also z.B. mit


ruby gem install mysql

Wer weiß da weiter?

Roger Wilco
19.07.09, 09:40
Dir fehlt das Entwicklerpaket für MySQL. Das dürfte "mysql-devel", "libmysql-dev" oder ähnlich heißen.

wodim
19.07.09, 14:43
Dir fehlt das Entwicklerpaket für MySQL. Das dürfte "mysql-devel", "libmysql-dev" oder ähnlich heißen.

Nee - der Gag war:


aptitude install apache2-dev
Dann ließen sich die drei Gems problemlos installieren:


ruby gem install mysql
ruby gem install sqlite3-ruby
ruby gem install postgres
Für Neugierige zum Nachvollziehen, wie wir darauf kamen:

http://forum.ruby-portal.de/viewtopic.php?f=20&t=10018

Nächstes Problem: Der installierte Indianer ist natürlich noch nicht richtig konfiguriert. Ich hab schon wie wild gegoogelt, aber nichts Einschlägiges gefunden. Wenn ich versuche, ihn zu starten, meinetwegen mit:


apache2 -k start
kommt jedesmal:


apache2: bad user name ${APACHE_RUN_USER}

Wo muss ich da suchen?

Aqualung
19.07.09, 14:53
Vllt. hier (http://ubuntuforums.org/showthread.php?t=804436).
Stichwort (nicht weiter erstaunlich :) ) Aufrufender Benutzer (bei Dir warscheinlich nicht root).

wodim
19.07.09, 16:55
Hm, ich will als root rein, habe also "APACHE_RUN_USER" und "APACHE_RUN_GROUP" auf "root" gesetzt..

Da kommt beim Starten:


Syntax error on line 127 of /etc/apache2/apache2.conf:
Error:\tApache has not been designed to serve pages while\n\trunning as root. There are known race conditions that\n\twill allow any local user to read any file on the system.\n\tIf you still desire to serve pages as root then\n\tadd -DBIG_SECURITY_HOLE to the CFLAGS env variable\n\tand then rebuild the server.\n\tIt is strongly suggested that you instead modify the User\n\tdirective in your httpd.conf file to list a non-root\n\tuser.\n
Hm, Zeile 127 der /etc/apache2/apache2.conf sieht so aus:


User ${APACHE_RUN_USER}
Naja, einen Syntaxfehler kann ich da nicht erkennen ;) - aber dieser Kommentar macht mich stutzig:


# These need to be set in /etc/apache2/envvars
Heißt das, die "envvars" setzt bei jedem Start die Umgebungsvariablen neu?


export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2.pid

wodim
19.07.09, 18:08
Nee, also irgendwas mache ich prinzipiell noch falsch. Mehr kann ich aus dem Dialog, auf den du verlinkt hast, auch nicht entnehmen. ;)

Also: Ich kann Apache nur als root starten, aber in der derzeitigen Konfiguration kennt er nur den User "www-data" aus der Gruppe "www-data".

Ich wollte also eine Gruppe "www-data" und einen User "www-data" anlegen - da sagt mir das System jedesmal, "User 'www-data' gibt's schon". Sehe ich aber nirgends.

Wo liegt noch mein prinzipeller Denkfehler? ;)

Aqualung
19.07.09, 18:17
Du verwendest zum Start das Skript


/etc/init.d/apache2

?

wodim
19.07.09, 19:42
Du verwendest zum Start das Skript


/etc/init.d/apache2

?

Da bin ich mir nun gar nicht sicher. ;) Ich lasse ihn gerade mal nach Dateien mit diesem Namen suchen, bis jetzt hat er 10 gefunden - Suche läuft noch.

wodim
19.07.09, 19:46
Da bin ich mir nun gar nicht sicher. ;) Ich lasse ihn gerade mal nach Dateien mit diesem Namen suchen, bis jetzt hat er 10 gefunden - Suche läuft noch.
Ok, 20 sind's insgesamt - welche fühlt sich da nun angesprochen, wenn ich "apache2 -k start" eintippe?

Aqualung
19.07.09, 20:08
Das zuerst im $PATH gefunden wird bzw. welches von


which apache2

angezeigt wird.
Nimms mir nicht übel: Wie lange administrierst/entwickelst Du bereits bzw. schon mal über einen *nix-Elementarkurs nachgedacht?

wodim
19.07.09, 20:45
Hm, dieses Script wohl nicht - hab da mal ganz am Anfang ein "echo" eingebaut - das kommt nicht...

wodim
19.07.09, 20:50
Hm, bin mir jetzt ziemlich sicher ,dass es /usr/sbin/apache2 ist - den String "bad user name" hat er da drin gefunden - aber so kommen wir wohl nicht weiter.

wodim
19.07.09, 20:59
Wie lange administrierst/entwickelst Du bereits bzw. schon
Admin war ich mal ein paar Monate vertretungsweise vor 17 Jahren (Novell 3.11), Entwickler noch nie - von irgendwas, was mit Linux zu tun hat, meine ich - z.B. von OOP - (Windows) - Applikationen mit relationalen Datenbanken als Basis schon ein paar Jährchen. Mein aktuelles Projekt liegt auf einem etwas anderen Gebiet, wie gesagt - und da ist das Ganze, woran ich hier gerade friemele, nur Mittel zum Zweck.


mal über einen *nix-Elementarkurs nachgedacht?
Den mache ich doch gerade - learning by doing. ;)


Das zuerst im $PATH gefunden wird bzw. welches von


which apache2

angezeigt wird.
Naaaa, schaunmerdochmal...

wodim
19.07.09, 21:03
Das zuerst im $PATH gefunden wird bzw. welches von


which apache2

angezeigt wird.

Na, da haben wir's doch - genau die, die ich in Verdacht hatte:


/usr/sbin/apache2
Das ist aber kein Script, dass ich einfach so manipulieren kann.

wodim
19.07.09, 21:09
Hm, und meine $PATH sieht so aus:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Noch nicht allzuviel los da, was? ;)

wodim
19.07.09, 23:31
So, jetze machemer's über das Script:

Melina ~ # /etc/init.d/apache2 start
* Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]

Melina ~ # /etc/init.d/apache2 stop
* Stopping web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[ OK ]

Melina ~ #

Na, das sieht doch schon etwas besser aus, oder? ;)

Erst mal hab ich mir zwei Schnellstarter gebastelt, die sehen so aus:

#!/usr/bin/env xdg-open

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=true
Exec=/etc/init.d/apache2 start
Name=Start Apache
Icon=/usr/share/pixmaps/thunderbird.png

Cool wäre es ja, wenn das Terminalfenster offen bliebe - oder noch besser: Gibt's da auch so ein kleines "Kontrollpaneel", wie man's meinetwegen von XAMPP kennt? So mit "MySQLServer running/stopped", "Apache runnning/stopped", ggf. Fehlermeldungen und so?


#!/usr/bin/env xdg-open

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=true
Exec=/etc/init.d/apache2 stop
Name=Stop Apache
Icon=/usr/share/pixmaps/thunderbird.png

Was nun Domäne, IP - Adressen, Hostnamen etc. betrifft, werden wir uns wohl mal wieder etwas mit Netzwerkkonfiguration beschäftigen müssen. ;) Das hatten wir aber auch alles schon in irgendeinem anderen Forum, wo man mir auch bereitwillig geholfen hat - naja, bis mir (wie jahrelang so üblich) ein paar Typen dämlich kamen -> was ich mir nicht bieten ließ -> also wurde ich gesperrt. Finde es jetzt nicht mehr - war ja auch nicht dieses Forum, danke!

BedriddenTech
20.07.09, 14:03
Es ist zwar jetzt nicht mehr aktuell, aber für die Zukunft (und zur Vervollständigung):
Es heißt nicht
–include-dependencies (typographischer Bindestrich), und nicht
-include-dependencies (einfaches Minuszeichen), sondern
--include-dependencies

wodim
20.07.09, 15:00
Es ist zwar jetzt nicht mehr aktuell, aber für die Zukunft (und zur Vervollständigung):
Es heißt nicht
–include-dependencies (typographischer Bindestrich), und nicht
-include-dependencies (einfaches Minuszeichen), sondern
--include-dependencies
Hm, hm, darauf hab ich den Autor auch schon aufmerksam gemacht. Aber funktionert hat es mit dem "einfachen Minuszeichen". Wohl doch nicht richtig?

Also Stand der Dinge:

Der Indianer läft erst mal "gerade so". Wenn ich in meinem Browser "http://localhost/" eintippe, kommt die Seite mit dem Text "It works!" (also die /var/www/index.html).

Hm, wo fangen wir denn nun an an mit "Aufräumen" und "richtig" konfigurieren? ;) Am besten vielleicht da: Mein System zeigt mir (unter der echt "komfortablen" Oberfläche, also "Menü -> Kontrollzentrum -> Dienste") drei installierte MySQL - Server an, die automatisch als Dienste gestartet wurden. Habe ich erst mal alle deaktiviert - wie kriegen wir nun 'raus, welcher der "richtige" ist?

wodim
20.07.09, 16:15
Was nun Domäne, IP - Adressen, Hostnamen etc. betrifft, werden wir uns wohl mal wieder etwas mit Netzwerkkonfiguration beschäftigen müssen. ;) Das hatten wir aber auch alles schon in irgendeinem anderen Forum, wo man mir auch bereitwillig geholfen hat - naja, bis mir (wie jahrelang so üblich) ein paar Typen dämlich kamen -> was ich mir nicht bieten ließ -> also wurde ich gesperrt. Finde es jetzt nicht mehr - war ja auch nicht dieses Forum, danke!

Oooh - da muss ich mich korrigieren - hab's wiedergefunden

http://www.computerbase.de/forum/showthread.php?t=548765&page=2

Da habe den Mist einwandfrei ich gebaut, wie biegen wir das nun wieder gerade... :confused:

wodim
21.07.09, 00:41
So, habe jetzt alles drauf - halt die ganze Installation wiederholt, aber nicht meine Fehler. ;)

wodim
17.08.09, 15:55
So, also aktueller Stand: Ein Indianer (Apache2) und (mindestens) ein MySQL-Server laufen hier jetzt "irgendwie" (im Prinzip so, wie's "apt-get install apache2" / "php" / "mysql" "automatisch" macht). Ich hab mal spaßeshalber meine Seiten incl. Forum, Datenbank, phpMyAdmin und MySQLDumper da 'reinkopiert / installiert, das einzige, was ich ändern musste, war in der Konfiguration des Forums MySQL - DB - Username und Passwort - ähemm, das speichert phpBB alles unverschlüsselt in einer "config.php" oder so - aber bitte nicht weitersagen, das könnte mir die phpBB - Gruppe als schwere Geschäftsschädigung auslegen ;) ) . Also unter "http://localhost" "geht" das alles erst mal.

Ruby hab ich erst mal wieder 'runtergeschmissen - viel zuviel "Overhead" (für das vergleichsweise Kleinkleckerding, das ich coden will), speziell "NetBeans" (was ja "nur" ein Editor sein sollte - von wegen, das bringt meine Hardware zum Stöhnen ;) ). Da gibt's doch viel "Schlankeres" - hatte ich schon unter Win2K laufen (da war im Prinzip alles drin, Entwicklungs- und Testumgebung incl. Beispielapplikationen und "Start with Mongel"):

http://melina.kilu.de/forum/viewtopic.php?f=6&t=62&p=610#p610

Gibt's sowas Ähnliches nicht auch für Linux?