[quote:d90d5e35fb="zee_man78"]
sajnos meg mindig nem megy, szokasos internal server error. cache-t, history-t kitoroltem a bongeszombol, szoval az nem lehet gond!
Nem, ez nem is ilyesmi gond :( Apache error logot néztél? Abból néha kiderül, mi baja van a scripttel... ez amúgy valószínűleg azt jelenti, hogy már próbálná CGIként kezelni, de nem megy neki. Gondolom az nem is kérdés, hogy chmod +x scriptem.rb megvolt..(?).. bár asszem akkor access errort dobna. Nézz idevágó error.log részt, és akár írd is meg ide nekem, hátha együtt kihámozunk belőle valamit.
[quote:d90d5e35fb="zee_man78"]
mi az a .htaccess?? a ruby-s oldalakon mindig talaltam valami hivatkozast ra, probaltam megkeresni, de nem talaltam sehol a konyvtarszerkezetben (marmint a /www/ konyvtaramon belul!)
Az arra való, hogy az egyes könyvtárakban ha kell, külön meg lehessen változtatni az apache configot (bizonyos szintig). Tehát csinálsz egy általánosan jó apache configot, ez megy a httpd.conf-ba, és ott megmondhatod hogy melyik könyvtárakban lehet ezt felülbírálni (AllowOverride), majd azokban a könyvtárakban, ha akarod, egy .htaccess file-ba írhatsz apache config direktívákat, amik felüldefiniálják a httpd.conf-ban foglaltakat, vagy új direktívákat vezetnek be. Előnye még az is, hogy nem kell restartolni az apacsot hogy életbe lépjenek, elég csak megváltoztatni őket és reload-ot nyomni a böngészőben.
Amúgy nagyon primitív debug, de ha parancssorból megeteted a rubyval a szóbanforgó scriptet (ruby rest.rb), mit szól?
probalkozom ezzel az "uj" nyelvvel megismerkedni. minden jol mukodik(kodott) addig amig nem probaltam meg az apache2-om ala betenni, hogy vegre web-es alkalmazasokat csinaljak!
a lenyeg, hogy feltelepitettem a csomagokat (remelem mindet)
ruby1.8, eruby, apache2mod_ruby ... etc
megneztem, hogy a /etc/apache2/modul-avaliable/ruby.load ott van e. ott.
meg minden....
de sajnos amikor bongeszommel raallok a kiszemelt allomanyra: pl; index.rb
ez tortenik: :( Not Found
The requested URL /cgi-bin/eruby/prgs/cgi-bin/index.rb was not found on this server.
Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-15 mod_ruby/1.2.4 Ruby/1.8.2(2005-04-11) Server at xyz.blah Port 80
a programjaim a /www/prgs/cgi-bin/ -ben vannak.
tudom, hogy en szurtam el valamit, de nem tudom, hogy hol!
koszi,
zM
ps.: a php-s programok teljesen jol mennek cgi-bin-en kivul is meg minden!
probalkozom ezzel az "uj" nyelvvel megismerkedni. minden jol mukodik(kodott) addig amig nem probaltam meg az apache2-om ala betenni, hogy vegre web-es alkalmazasokat csinaljak!
a lenyeg, hogy feltelepitettem a csomagokat (remelem mindet)
ruby1.8, eruby, apache2mod_ruby ... etc
megneztem, hogy a /etc/apache2/modul-avaliable/ruby.load ott van e. ott.
meg minden....
de sajnos amikor bongeszommel raallok a kiszemelt allomanyra: pl; index.rb
ez tortenik: :( Not Found
The requested URL /cgi-bin/eruby/prgs/cgi-bin/index.rb was not found on this server.
Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-15 mod_ruby/1.2.4 Ruby/1.8.2(2005-04-11) Server at xyz.blah Port 80
a programjaim a /www/prgs/cgi-bin/ -ben vannak.
tudom, hogy en szurtam el valamit, de nem tudom, hogy hol!
koszi,
zM
ps.: a php-s programok teljesen jol mennek cgi-bin-en kivul is meg minden!
No, én elég sokat játszottam rubyval és rails-szel, nekem így megy:
[code:1:ce01a695fe]
# If the ruby module is installed, this will be enabled.
<IfModule mod_ruby.c>
# for Apache::RubyRun
RubyRequire apache/ruby-run
RubySafeLevel 0
# exec files under /ruby as ruby scripts.
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options +ExecCGI
</Location>
nnnna, kezdjuk talan az apache error logjaval (bocsanat, legutobb elfelejtettem!):
[code:1:32f5edf263]
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: /www/ruby/: Is a directory - /www/ruby/ (Errno::EISDIR)
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `load'
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler'
[/code:1:32f5edf263]
index.rb probak konzolbol:
ha eruby-val futtatom az logikusan csak kinyomja... OK!
ha siman probalom futtatni (<% - %> nelkul !!!):
ruby index.rb
[code:1:32f5edf263]
(offline mode: enter name=value pairs on standard input)
/usr/lib/ruby/1.8/cgi.rb:1081:in `readlines': Interrupt
from /usr/lib/ruby/1.8/cgi.rb:1081:in `read_from_cmdline'
from /usr/lib/ruby/1.8/cgi.rb:1118:in `initialize_query'
from /usr/lib/ruby/1.8/cgi.rb:2269:in `initialize'
from index.rb:3:in `new'
from index.rb:3
[/code:1:32f5edf263]
es ha rakok bele <% %>:
[code:1:32f5edf263]
index.rb:1: syntax error
index.rb:7: unterminated string meets end of file
[/code:1:32f5edf263]
koszi megegyszer mindent!
nem is gondoltam, hogy ez a ruby ennyire ismeretlen! mar '95 ota van!
koszi. ennyit meg eletemben nem irtam az apache2 konf-jaba! remelem oda kellett ;)
a lenyeg, hogy most azt irta ki (firefox bongeszo), hogy :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
stbstb...
kiprobaltam lynx-szel is, az meg nem mond semmit, csak:
HTTP request sent; waiting for response.
az nem lehet, hogy az a baj, hogy apache2-esem van?
koszi,
zM
ps: a ruby file-okat most a /www/ruby-bol probalom hivni! (a rails-t meg fel se raktam! egyelore egy 'hello! world!'-ot szeretnek latni :D )
Nem, nekem is apache2-es fut :) méghozzá stabilan mod_rubyval és erubyval, céges szerveren.
Az Internal Server error arra utal, hogy a cgi-ként futtatott ruby scripteddel nincs rendben valami (nem fut le, vagy nem szabványos kimenetet generál). Tájékozódj az apache error logból hogy mizu, amúgy meg muti a scripted, hátha azzal van a baj.
Van ugye a ruby, és van az eruby. A sima ruby (.rb) cgi-ként fut le, az eruby (.rhtml, a config szerint) viszont az eruby értelmezővel, ami azt csinálja, hogy a php mintájára átnyom mindent a fileból a kimenetre, kivéve a <% %> és a <%= %> közötti részeket, amiket értelmez.
A mod_ruby azért jó, mert apache-közeli funkciókat is nyújt a ruby cgi-dnek.
nnnna, kezdjuk talan az apache error logjaval (bocsanat, legutobb elfelejtettem!):
[code:1:7a4e3c0aa6]
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: /www/ruby/: Is a directory - /www/ruby/ (Errno::EISDIR)
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `load'
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler'
[/code:1:7a4e3c0aa6]
index.rb probak konzolbol:
ha eruby-val futtatom az logikusan csak kinyomja... OK!
ha siman probalom futtatni (<% - %> nelkul !!!):
ruby index.rb
[code:1:7a4e3c0aa6]
(offline mode: enter name=value pairs on standard input)
/usr/lib/ruby/1.8/cgi.rb:1081:in `readlines': Interrupt
from /usr/lib/ruby/1.8/cgi.rb:1081:in `read_from_cmdline'
from /usr/lib/ruby/1.8/cgi.rb:1118:in `initialize_query'
from /usr/lib/ruby/1.8/cgi.rb:2269:in `initialize'
from index.rb:3:in `new'
from index.rb:3
[/code:1:7a4e3c0aa6]
es ha rakok bele <% %>:
[code:1:7a4e3c0aa6]
index.rb:1: syntax error
index.rb:7: unterminated string meets end of file
[/code:1:7a4e3c0aa6]
koszi megegyszer mindent!
nem is gondoltam, hogy ez a ruby ennyire ismeretlen! mar '95 ota van!
zM
Nnnno.
Az apache error: megmondom őszintén, nem értem :D mármint értem nyelvtanilag, csak ötletem sincs miért sírhat. /www/ruby vagy /var/www/ruby a könyvtárkiosztás? Mert ha az utóbbi, akkor nem teljes a Directory direktívádnál az elérési út, ez lehet baj.
Parancssori teszt: Szól is érte, hogy név-érték párokat vár. Gondolom ctrl-c-zted :) ctrl-d-vel próbálkozz, az az EOF stdinre :)
sima rubynak ne tegyél bele semmiképp <% -t, azt csak az eruby eszi meg, neki viszont muszáj odatenni.
Mindenesetre az, hogy az eruby megeszi, azt jelzi hogy a ruby háza táján minden kerek, és ez jó :)
Az ExecCGI könyvtáránál nézd meg, hogy teljes út legyen megadva, ennyi még a tippem.
Hja, még valami :)
A ruby ismeretlen itthon és nyugaton, bár a rails miatt egyre jobban beindul, de odaát rizskedvelő szigetlakó barátainknál már nagyon befutott, joggal :)
[code:1:47743259e4]
<Directory /www/ruby>
AllowOverride All
</Directory>
[/code:1:47743259e4]
koszi a turelmedet!
zM
ui.: a programjaim a /www/ruby alatt lennenek. ( nincs benne cgi-bin!? ) azert nem raktam, mert a PHP-nek sem kellett vegul! lehet, hogy ez a gond? :oops:
az apache-om alulra a hibauzenet ala most mar ezt irja ki:
[code:1:96b6fb6b68]
Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-15 mod_ruby/1.2.4 Ruby/1.8.2(2005-04-11) Server at delldeb.hom Port 80
[/code:1:96b6fb6b68]
[code:1:0724d8061a]
<Directory /www/ruby>
AllowOverride All
</Directory>
[/code:1:0724d8061a]
koszi a turelmedet!
zM
ui.: a programjaim a /www/ruby alatt lennenek. ( nincs benne cgi-bin!? ) azert nem raktam, mert a PHP-nek sem kellett vegul! lehet, hogy ez a gond? :oops:
Először is szívesen, nem gond, én is sokat szenvedtem a rubyval az elején.
No. Az első válaszomban van egy komplett apache config részlet, szedd ki a saját Addtype soraidat és másold a httpd.conf végére amit én írtam. Ha megfigyeled, ott más és több van.
Más. Az ExecCgi azt mondja meg egy könyvtárra, hogy lehetnek benne CGI scriptek (futtathatók benne).
Esetedben pl. a megfelelő apache direktíva (feltéve hogy a /var/www jogos) :
<Directory /var/www/ruby>
Options ExecCGI
</Directory>
Ill. ha van már erre a könyvtárra Directory direktíva, tedd az Options mögé hogy ExecCGI.
A php nem CGI mechanizmussal fut (futhat úgy is akár, de nem ez a szokásos), hanem úgy, hogy amikor az apache php scripttel találkozik, némi infó keretében átadja a php értelmezőnek, amit a sebesség miatt a memóriában tart. Ilyen az eruby is kicsit, a php-re hajaz. Esetedben a scriptet amit írtam ne tedd <% és %> közé, mert nem eruby script, hanem sima ruby, ami majd CGI mechanizmussal hajtódik végre (félig).
Tehát amit tanácsolok:
1, szedj ki minden saját ruby configot a httpd.conf-ból (kivéve a mod_ruby betöltését)
2, tedd be azt a hosszú config-részletet a httpd.conf-ba amit én írtam az első válaszomban
3, állítsd be az ExecCGI-t a könyvtárra ahol a .rb vagy .rbx scriptek lesznek (/var/www/ruby)
4, apachectl restart
5, mentsd el az előzőleg általam írott kódrészletet <% és %> nélkül mondjuk test.rb néven a /var/www/ruby alá
6, böngésző, http://localhost/ruby/test.rb
7, örülj (remélhetőleg :D )
Van ugye a ruby, és van az eruby. A sima ruby (.rb) cgi-ként fut le, az eruby (.rhtml, a config szerint) viszont az eruby értelmezővel, ami azt csinálja, hogy a php mintájára átnyom mindent a fileból a kimenetre, kivéve a <% %> és a <%= %> közötti részeket, amiket értelmez.
A mod_ruby azért jó, mert apache-közeli funkciókat is nyújt a ruby cgi-dnek.
valaki rúgjon fejbe, de nem ugyanúgy lenne értelmes, mint ahogyan Perl alatt is van (Rubyban bár fejlesztek, nem használtam még sem az ERubyt sem a mod_ruby-t ellenben a mod_perlt és Apache::ASP-t már sokat)?
ezek szerint tehát lehetne:
1) Ruby progi -- CGI-ként futtatható
2) ERuby progi -- CGI-ként vagy mod_ruby környezetben futtatható (csak tippelek, ha valaki megerősítené vagy tagadná, azt jónéven venném). ha előbbi, akkor lassabb lesz, mivel minden egyes lekéréskor újra fordul maga a progi és elkészül maga a (X)HTML file is.
3) mod_ruby progi -- ez esetben létezik egy az Apache által futtatott egy vagy több interpreter, amely minden egyes scriptet amit ezen keresztül futtatnak (Ochronus mester már elmondta volt, hogyan) lefordít, majd innentől már csak a fordított progit futtatja, azaz ez igen nagyon be tudja durrantani a progidat, mivel (child-onként (bár ez állítható)) csak egyszer fordul le a progi, onnantól a natív bináris fut - mmm :)
mod_perl esetén ez annyiban húzós, hogy a Perlt úgy találták ki, hogy a programban minden változó alapból globális változó, azaz külön kell megszabni, ha lokális vagy scope-lokális változót akarsz (Perl elég egy bonyolult téma, nem fogok belemerülni).
ez mod_perl esetén azért rizikós, mert ha a te serveredre felkerül egy halom mod_perl núbi és azok mind globális változókat használnak, akkor azon kívűl, hogy egymás változóit fogják olvasgatni (hacsak KÜLÖN meg nem adja az ember, hogy a globális változók törlődjenek, mivel a desctructorok SEM futnak le), a serveredet úgy megrogyasztják, hogy sírni fogsz te is és a servered is... nem jó dolog, ezért jó ha kontrollálod őket :)
mod_ruby esetén ez nem tudom mennyire áll fenn, de a Ruby esetén lokális és instance változók is vannak, így annyira nem vészes - ennek persze érdemes utánajárni. mivel itt már késő este van és beteg vok mint állat (begfáztab) és lázas, megsatöbbi, ennek holnapig nem fogok utánajárni, mivel azonban érdekel a téma, ha más nem jár utána akkor én utána fogok.
üdv és sikereket nektök.
sajat ruby maszat apache2.conf-bol kiszedve, most jelenleg igy neznek ki a beallitasaim:
[code:1:78110c2013]
# If the ruby module is installed, this will be enabled.
# RUBY Ruby ruby
#
<IfModule mod_ruby.c>
# for Apache::RubyRun
RubyRequire apache/ruby-run
RubySafeLevel 0
# exec files under /ruby as ruby scripts.
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options +ExecCGI
</Location>
az apache2 ruby.load-ban ez van
[code:1:78110c2013]
LoadModule ruby_module /usr/lib/apache2/modules/mod_ruby.so
[/code:1:78110c2013]
megneztem, a file ott van!
sajnos meg mindig nem megy, szokasos internal server error. cache-t, history-t kitoroltem a bongeszombol, szoval az nem lehet gond!
mi az a .htaccess?? a ruby-s oldalakon mindig talaltam valami hivatkozast ra, probaltam megkeresni, de nem talaltam sehol a konyvtarszerkezetben (marmint a /www/ konyvtaramon belul!)
Hozzászólások
[quote:d90d5e35fb="zee_man78"]
sajnos meg mindig nem megy, szokasos internal server error. cache-t, history-t kitoroltem a bongeszombol, szoval az nem lehet gond!
Nem, ez nem is ilyesmi gond :( Apache error logot néztél? Abból néha kiderül, mi baja van a scripttel... ez amúgy valószínűleg azt jelenti, hogy már próbálná CGIként kezelni, de nem megy neki. Gondolom az nem is kérdés, hogy chmod +x scriptem.rb megvolt..(?).. bár asszem akkor access errort dobna. Nézz idevágó error.log részt, és akár írd is meg ide nekem, hátha együtt kihámozunk belőle valamit.
[quote:d90d5e35fb="zee_man78"]
mi az a .htaccess?? a ruby-s oldalakon mindig talaltam valami hivatkozast ra, probaltam megkeresni, de nem talaltam sehol a konyvtarszerkezetben (marmint a /www/ konyvtaramon belul!)
Az arra való, hogy az egyes könyvtárakban ha kell, külön meg lehessen változtatni az apache configot (bizonyos szintig). Tehát csinálsz egy általánosan jó apache configot, ez megy a httpd.conf-ba, és ott megmondhatod hogy melyik könyvtárakban lehet ezt felülbírálni (AllowOverride), majd azokban a könyvtárakban, ha akarod, egy .htaccess file-ba írhatsz apache config direktívákat, amik felüldefiniálják a httpd.conf-ban foglaltakat, vagy új direktívákat vezetnek be. Előnye még az is, hogy nem kell restartolni az apacsot hogy életbe lépjenek, elég csak megváltoztatni őket és reload-ot nyomni a böngészőben.
Amúgy nagyon primitív debug, de ha parancssorból megeteted a rubyval a szóbanforgó scriptet (ruby rest.rb), mit szól?
Üdv,
Ochronus
hali mindenkinek,
probalkozom ezzel az "uj" nyelvvel megismerkedni. minden jol mukodik(kodott) addig amig nem probaltam meg az apache2-om ala betenni, hogy vegre web-es alkalmazasokat csinaljak!
a lenyeg, hogy feltelepitettem a csomagokat (remelem mindet)
ruby1.8, eruby, apache2mod_ruby ... etc
beallitottam az apache2.conf-ot
[code:1:4e492630bd]
AddType application/x-httpd-eruby .rb
Action application/x-httpd-eruby /cgi-bin/eruby
...
DirectoryIndes index.html ... index.rb
[/code:1:4e492630bd]
megneztem, hogy a /etc/apache2/modul-avaliable/ruby.load ott van e. ott.
meg minden....
de sajnos amikor bongeszommel raallok a kiszemelt allomanyra: pl; index.rb
ez tortenik: :(
Not Found
The requested URL /cgi-bin/eruby/prgs/cgi-bin/index.rb was not found on this server.
Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-15 mod_ruby/1.2.4 Ruby/1.8.2(2005-04-11) Server at xyz.blah Port 80
a programjaim a /www/prgs/cgi-bin/ -ben vannak.
tudom, hogy en szurtam el valamit, de nem tudom, hogy hol!
koszi,
zM
ps.: a php-s programok teljesen jol mennek cgi-bin-en kivul is meg minden!
[quote:ce01a695fe="zee_man78"]hali mindenkinek,
probalkozom ezzel az "uj" nyelvvel megismerkedni. minden jol mukodik(kodott) addig amig nem probaltam meg az apache2-om ala betenni, hogy vegre web-es alkalmazasokat csinaljak!
a lenyeg, hogy feltelepitettem a csomagokat (remelem mindet)
ruby1.8, eruby, apache2mod_ruby ... etc
beallitottam az apache2.conf-ot
[code:1:ce01a695fe]
AddType application/x-httpd-eruby .rb
Action application/x-httpd-eruby /cgi-bin/eruby
...
DirectoryIndes index.html ... index.rb
[/code:1:ce01a695fe]
megneztem, hogy a /etc/apache2/modul-avaliable/ruby.load ott van e. ott.
meg minden....
de sajnos amikor bongeszommel raallok a kiszemelt allomanyra: pl; index.rb
ez tortenik: :(
Not Found
The requested URL /cgi-bin/eruby/prgs/cgi-bin/index.rb was not found on this server.
Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-15 mod_ruby/1.2.4 Ruby/1.8.2(2005-04-11) Server at xyz.blah Port 80
a programjaim a /www/prgs/cgi-bin/ -ben vannak.
tudom, hogy en szurtam el valamit, de nem tudom, hogy hol!
koszi,
zM
ps.: a php-s programok teljesen jol mennek cgi-bin-en kivul is meg minden!
No, én elég sokat játszottam rubyval és rails-szel, nekem így megy:
[code:1:ce01a695fe]
# If the ruby module is installed, this will be enabled.
<IfModule mod_ruby.c>
# for Apache::RubyRun
RubyRequire apache/ruby-run
RubySafeLevel 0
# exec files under /ruby as ruby scripts.
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options +ExecCGI
</Location>
# exec *.rbx as ruby scripts.
<Files *.rbx>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
# for Apache::ERubyRun
RubyRequire apache/eruby-run
# handle files under /eruby as eRuby files by eruby.
<Location /eruby>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Location>
# handle *.rhtml as eruby files.
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
<Files *.rb>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
# for Apache::ERbRun
RubyRequire apache/erb-run
# handle files under /erb as eRuby files by ERb.
<Location /erb>
SetHandler ruby-object
RubyHandler Apache::ERbRun.instance
</Location>
# # for debug
# RubyRequire auto-reload
</IfModule>
<Directory /home/ochronus/public_html/ruby>
AllowOverride All
</Directory>
[/code:1:ce01a695fe]
Az utolsó AllowOverride a rails saját .htaccess filejai miatt kellett.
Amúgy végre valaki aki rubyzni szeretne :) Nagyon jó nyelv, tudom ajánlnani. Iszonyat hatékony és gyönyörű egyszerre. Ritka kincs :)
szia ochronus,
koszi. ennyit meg eletemben nem irtam az apache2 konf-jaba! remelem oda kellett ;)
a lenyeg, hogy most azt irta ki (firefox bongeszo), hogy :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
stbstb...
kiprobaltam lynx-szel is, az meg nem mond semmit, csak:
HTTP request sent; waiting for response.
az nem lehet, hogy az a baj, hogy apache2-esem van?
koszi,
zM
ps: a ruby file-okat most a /www/ruby-bol probalom hivni! (a rails-t meg fel se raktam! egyelore egy 'hello! world!'-ot szeretnek latni :D )
szia megen ;)
nnnna, kezdjuk talan az apache error logjaval (bocsanat, legutobb elfelejtettem!):
[code:1:32f5edf263]
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: /www/ruby/: Is a directory - /www/ruby/ (Errno::EISDIR)
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `load'
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler'
[/code:1:32f5edf263]
index.rb probak konzolbol:
ha eruby-val futtatom az logikusan csak kinyomja... OK!
ha siman probalom futtatni (<% - %> nelkul !!!):
ruby index.rb
[code:1:32f5edf263]
(offline mode: enter name=value pairs on standard input)
/usr/lib/ruby/1.8/cgi.rb:1081:in `readlines': Interrupt
from /usr/lib/ruby/1.8/cgi.rb:1081:in `read_from_cmdline'
from /usr/lib/ruby/1.8/cgi.rb:1118:in `initialize_query'
from /usr/lib/ruby/1.8/cgi.rb:2269:in `initialize'
from index.rb:3:in `new'
from index.rb:3
[/code:1:32f5edf263]
es ha rakok bele <% %>:
[code:1:32f5edf263]
index.rb:1: syntax error
index.rb:7: unterminated string meets end of file
[/code:1:32f5edf263]
koszi megegyszer mindent!
nem is gondoltam, hogy ez a ruby ennyire ismeretlen! mar '95 ota van!
zM
[quote:784bf836b5="zee_man78"]szia ochronus,
koszi. ennyit meg eletemben nem irtam az apache2 konf-jaba! remelem oda kellett ;)
a lenyeg, hogy most azt irta ki (firefox bongeszo), hogy :
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
stbstb...
kiprobaltam lynx-szel is, az meg nem mond semmit, csak:
HTTP request sent; waiting for response.
az nem lehet, hogy az a baj, hogy apache2-esem van?
koszi,
zM
ps: a ruby file-okat most a /www/ruby-bol probalom hivni! (a rails-t meg fel se raktam! egyelore egy 'hello! world!'-ot szeretnek latni :D )
Nem, nekem is apache2-es fut :) méghozzá stabilan mod_rubyval és erubyval, céges szerveren.
Az Internal Server error arra utal, hogy a cgi-ként futtatott ruby scripteddel nincs rendben valami (nem fut le, vagy nem szabványos kimenetet generál). Tájékozódj az apache error logból hogy mizu, amúgy meg muti a scripted, hátha azzal van a baj.
Kis adalék:
Van ugye a ruby, és van az eruby. A sima ruby (.rb) cgi-ként fut le, az eruby (.rhtml, a config szerint) viszont az eruby értelmezővel, ami azt csinálja, hogy a php mintájára átnyom mindent a fileból a kimenetre, kivéve a <% %> és a <%= %> közötti részeket, amiket értelmez.
A mod_ruby azért jó, mert apache-közeli funkciókat is nyújt a ruby cgi-dnek.
ERuby bővebben:
http://wiki.modruby.net/en/?eRubySyntax
mod_ruby bővebben:
http://wiki.modruby.net/en/?ClassReferenceManual
És amit kihagytam még:
az ExecCGI-t be kell kapcsolni arra a könyvtárra, ahol .rb/.rbx fileokat akarsz futtatni.
Íme egy minta mod_ruby script:
[code:1:3d703445af]
require "cgi"
cgi = CGI.new
print cgi.header("type"=>"text/plain")
print "Uff"
[/code:1:3d703445af]
[quote:7a4e3c0aa6="zee_man78"]szia megen ;)
nnnna, kezdjuk talan az apache error logjaval (bocsanat, legutobb elfelejtettem!):
[code:1:7a4e3c0aa6]
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: /www/ruby/: Is a directory - /www/ruby/ (Errno::EISDIR)
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `load'
[Wed Oct 12 06:57:41 2005] [error] mod_ruby: from /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler'
[/code:1:7a4e3c0aa6]
index.rb probak konzolbol:
ha eruby-val futtatom az logikusan csak kinyomja... OK!
ha siman probalom futtatni (<% - %> nelkul !!!):
ruby index.rb
[code:1:7a4e3c0aa6]
(offline mode: enter name=value pairs on standard input)
/usr/lib/ruby/1.8/cgi.rb:1081:in `readlines': Interrupt
from /usr/lib/ruby/1.8/cgi.rb:1081:in `read_from_cmdline'
from /usr/lib/ruby/1.8/cgi.rb:1118:in `initialize_query'
from /usr/lib/ruby/1.8/cgi.rb:2269:in `initialize'
from index.rb:3:in `new'
from index.rb:3
[/code:1:7a4e3c0aa6]
es ha rakok bele <% %>:
[code:1:7a4e3c0aa6]
index.rb:1: syntax error
index.rb:7: unterminated string meets end of file
[/code:1:7a4e3c0aa6]
koszi megegyszer mindent!
nem is gondoltam, hogy ez a ruby ennyire ismeretlen! mar '95 ota van!
zM
Nnnno.
Az apache error: megmondom őszintén, nem értem :D mármint értem nyelvtanilag, csak ötletem sincs miért sírhat. /www/ruby vagy /var/www/ruby a könyvtárkiosztás? Mert ha az utóbbi, akkor nem teljes a Directory direktívádnál az elérési út, ez lehet baj.
Parancssori teszt: Szól is érte, hogy név-érték párokat vár. Gondolom ctrl-c-zted :) ctrl-d-vel próbálkozz, az az EOF stdinre :)
sima rubynak ne tegyél bele semmiképp <% -t, azt csak az eruby eszi meg, neki viszont muszáj odatenni.
Mindenesetre az, hogy az eruby megeszi, azt jelzi hogy a ruby háza táján minden kerek, és ez jó :)
Az ExecCGI könyvtáránál nézd meg, hogy teljes út legyen megadva, ennyi még a tippem.
Sok szerencsét :)[/b]
Hja, még valami :)
A ruby ismeretlen itthon és nyugaton, bár a rails miatt egyre jobban beindul, de odaát rizskedvelő szigetlakó barátainknál már nagyon befutott, joggal :)
hali,
meg a sinekhez el sem jutottam :)
igen, a konytaram a /www/ruby -ban van!
igazad volt, eruby-val lefut a szkript (parancssorbol!!) ha ctr+d nyomok, szoval az jo!
internal server error!
azt hiszem irok ennek a ruby-s gyereknek, akitol olvastam ezt az egeszet, aztan majd meglatjuk mi lesz.
mindenesetre koszonom a faradozasodat, es majd persze felteszem ide, hogy mi volt a megoldas ( ha van ;) )
zM
[code:1:47743259e4]
AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/eruby
[/code:1:47743259e4]
->
Forbidden
You don't have permission to access /ruby/index.rhtml on this server.
nyilvan atallitottam a jogosultsagokat, akkor meg az internal server error jott ki!
tudom, nem illik mas tollaval ekeskedni, de itt a script ;)
[code:1:47743259e4]
<%
require "cgi"
cgi = CGI.new
print cgi.header("type"=>"text/plain")
print "Uff"
%>
[/code:1:47743259e4]
ez most mar nekem mindenben van, rb-tol kezdve rhtml-ig ;)
mi az az ExecCGI?? (nem vagyok egy apache guru :( bocs )
mire beallitottam a PHP-t az is volt egy szep kis menet ... nem adom fel :D
egyebek:
[code:1:47743259e4]
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.rb index.rhtml
[/code:1:47743259e4]
je, meg meg ez is:
[code:1:47743259e4]
<Directory /www/ruby>
AllowOverride All
</Directory>
[/code:1:47743259e4]
koszi a turelmedet!
zM
ui.: a programjaim a /www/ruby alatt lennenek. ( nincs benne cgi-bin!? ) azert nem raktam, mert a PHP-nek sem kellett vegul! lehet, hogy ez a gond? :oops:
ja, es meg valami:
az apache-om alulra a hibauzenet ala most mar ezt irja ki:
[code:1:96b6fb6b68]
Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-15 mod_ruby/1.2.4 Ruby/1.8.2(2005-04-11) Server at delldeb.hom Port 80
[/code:1:96b6fb6b68]
eddig azt hiszem a mod_ruby nem volt ott!
zM
[quote:0724d8061a="zee_man78"][code:1:0724d8061a]
AddType application/x-httpd-eruby .rhtml
Action application/x-httpd-eruby /cgi-bin/eruby
[/code:1:0724d8061a]
->
Forbidden
You don't have permission to access /ruby/index.rhtml on this server.
nyilvan atallitottam a jogosultsagokat, akkor meg az internal server error jott ki!
tudom, nem illik mas tollaval ekeskedni, de itt a script ;)
[code:1:0724d8061a]
<%
require "cgi"
cgi = CGI.new
print cgi.header("type"=>"text/plain")
print "Uff"
%>
[/code:1:0724d8061a]
ez most mar nekem mindenben van, rb-tol kezdve rhtml-ig ;)
mi az az ExecCGI?? (nem vagyok egy apache guru :( bocs )
mire beallitottam a PHP-t az is volt egy szep kis menet ... nem adom fel :D
egyebek:
[code:1:0724d8061a]
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.rb index.rhtml
[/code:1:0724d8061a]
je, meg meg ez is:
[code:1:0724d8061a]
<Directory /www/ruby>
AllowOverride All
</Directory>
[/code:1:0724d8061a]
koszi a turelmedet!
zM
ui.: a programjaim a /www/ruby alatt lennenek. ( nincs benne cgi-bin!? ) azert nem raktam, mert a PHP-nek sem kellett vegul! lehet, hogy ez a gond? :oops:
Először is szívesen, nem gond, én is sokat szenvedtem a rubyval az elején.
No. Az első válaszomban van egy komplett apache config részlet, szedd ki a saját Addtype soraidat és másold a httpd.conf végére amit én írtam. Ha megfigyeled, ott más és több van.
Más. Az ExecCgi azt mondja meg egy könyvtárra, hogy lehetnek benne CGI scriptek (futtathatók benne).
Esetedben pl. a megfelelő apache direktíva (feltéve hogy a /var/www jogos) :
<Directory /var/www/ruby>
Options ExecCGI
</Directory>
Ill. ha van már erre a könyvtárra Directory direktíva, tedd az Options mögé hogy ExecCGI.
A php nem CGI mechanizmussal fut (futhat úgy is akár, de nem ez a szokásos), hanem úgy, hogy amikor az apache php scripttel találkozik, némi infó keretében átadja a php értelmezőnek, amit a sebesség miatt a memóriában tart. Ilyen az eruby is kicsit, a php-re hajaz. Esetedben a scriptet amit írtam ne tedd <% és %> közé, mert nem eruby script, hanem sima ruby, ami majd CGI mechanizmussal hajtódik végre (félig).
Tehát amit tanácsolok:
1, szedj ki minden saját ruby configot a httpd.conf-ból (kivéve a mod_ruby betöltését)
2, tedd be azt a hosszú config-részletet a httpd.conf-ba amit én írtam az első válaszomban
3, állítsd be az ExecCGI-t a könyvtárra ahol a .rb vagy .rbx scriptek lesznek (/var/www/ruby)
4, apachectl restart
5, mentsd el az előzőleg általam írott kódrészletet <% és %> nélkül mondjuk test.rb néven a /var/www/ruby alá
6, böngésző, http://localhost/ruby/test.rb
7, örülj (remélhetőleg :D )
Üdv,
Ochronus
hello ochronus,
remelem azert egyszer majd megkapod ezt az uzenetet :)
tobb napon at tobb forumra is feliratkoztam (probaltam komolyan japanra is!!!) de senki nem tudott segiteni ...
aztan egy hirtelen otlettol vezerelve a legegyszerubb dolgot csinaltam amit el tudok kepzelni:
atneveztem a konyvtarat
[code:1:3db49db8cd]
mv /www/ruby /www/rubi
[/code:1:3db49db8cd]
es innentol kezdve megy a script!!!
koszonom sokadszorra is a segitseget, es remelem ha valakinek van hasnolo problemaja, akkor ez segit neki!
"a vonat nem var ... :)"
udv,
zM
[quote:7e39f275d9="Ochronus"]Kis adalék:
Van ugye a ruby, és van az eruby. A sima ruby (.rb) cgi-ként fut le, az eruby (.rhtml, a config szerint) viszont az eruby értelmezővel, ami azt csinálja, hogy a php mintájára átnyom mindent a fileból a kimenetre, kivéve a <% %> és a <%= %> közötti részeket, amiket értelmez.
A mod_ruby azért jó, mert apache-közeli funkciókat is nyújt a ruby cgi-dnek.
ERuby bővebben:
http://wiki.modruby.net/en/?eRubySyntax
mod_ruby bővebben:
http://wiki.modruby.net/en/?ClassReferenceManual
És amit kihagytam még:
az ExecCGI-t be kell kapcsolni arra a könyvtárra, ahol .rb/.rbx fileokat akarsz futtatni.
Íme egy minta mod_ruby script:
[code:1:7e39f275d9]
require "cgi"
cgi = CGI.new
print cgi.header("type"=>"text/plain")
print "Uff"
[/code:1:7e39f275d9]
valaki rúgjon fejbe, de nem ugyanúgy lenne értelmes, mint ahogyan Perl alatt is van (Rubyban bár fejlesztek, nem használtam még sem az ERubyt sem a mod_ruby-t ellenben a mod_perlt és Apache::ASP-t már sokat)?
ezek szerint tehát lehetne:
1) Ruby progi -- CGI-ként futtatható
2) ERuby progi -- CGI-ként vagy mod_ruby környezetben futtatható (csak tippelek, ha valaki megerősítené vagy tagadná, azt jónéven venném). ha előbbi, akkor lassabb lesz, mivel minden egyes lekéréskor újra fordul maga a progi és elkészül maga a (X)HTML file is.
3) mod_ruby progi -- ez esetben létezik egy az Apache által futtatott egy vagy több interpreter, amely minden egyes scriptet amit ezen keresztül futtatnak (Ochronus mester már elmondta volt, hogyan) lefordít, majd innentől már csak a fordított progit futtatja, azaz ez igen nagyon be tudja durrantani a progidat, mivel (child-onként (bár ez állítható)) csak egyszer fordul le a progi, onnantól a natív bináris fut - mmm :)
mod_perl esetén ez annyiban húzós, hogy a Perlt úgy találták ki, hogy a programban minden változó alapból globális változó, azaz külön kell megszabni, ha lokális vagy scope-lokális változót akarsz (Perl elég egy bonyolult téma, nem fogok belemerülni).
ez mod_perl esetén azért rizikós, mert ha a te serveredre felkerül egy halom mod_perl núbi és azok mind globális változókat használnak, akkor azon kívűl, hogy egymás változóit fogják olvasgatni (hacsak KÜLÖN meg nem adja az ember, hogy a globális változók törlődjenek, mivel a desctructorok SEM futnak le), a serveredet úgy megrogyasztják, hogy sírni fogsz te is és a servered is... nem jó dolog, ezért jó ha kontrollálod őket :)
mod_ruby esetén ez nem tudom mennyire áll fenn, de a Ruby esetén lokális és instance változók is vannak, így annyira nem vészes - ennek persze érdemes utánajárni. mivel itt már késő este van és beteg vok mint állat (begfáztab) és lázas, megsatöbbi, ennek holnapig nem fogok utánajárni, mivel azonban érdekel a téma, ha más nem jár utána akkor én utána fogok.
üdv és sikereket nektök.
szia ochronus,
sajat ruby maszat apache2.conf-bol kiszedve, most jelenleg igy neznek ki a beallitasaim:
[code:1:78110c2013]
# If the ruby module is installed, this will be enabled.
# RUBY Ruby ruby
#
<IfModule mod_ruby.c>
# for Apache::RubyRun
RubyRequire apache/ruby-run
RubySafeLevel 0
# exec files under /ruby as ruby scripts.
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
Options +ExecCGI
</Location>
# exec *.rbx as ruby scripts.
<Files *.rbx>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
# for Apache::ERubyRun
RubyRequire apache/eruby-run
# handle files under /eruby as eRuby files by eruby.
<Location /eruby>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Location>
# handle *.rhtml as eruby files.
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
<Files *.rb>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
# for Apache::ERbRun
RubyRequire apache/erb-run
# handle files under /erb as eRuby files by ERb.
<Location /erb>
SetHandler ruby-object
RubyHandler Apache::ERbRun.instance
</Location>
# # for debug
# RubyRequire auto-reload
</IfModule>
<Directory /www/ruby>
AllowOverride All
Options ExecCGI
</Directory>
#
# end ruby set-ups
#
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.rb index.rhtml
[/code:1:78110c2013]
az apache2 ruby.load-ban ez van
[code:1:78110c2013]
LoadModule ruby_module /usr/lib/apache2/modules/mod_ruby.so
[/code:1:78110c2013]
megneztem, a file ott van!
sajnos meg mindig nem megy, szokasos internal server error. cache-t, history-t kitoroltem a bongeszombol, szoval az nem lehet gond!
mi az a .htaccess?? a ruby-s oldalakon mindig talaltam valami hivatkozast ra, probaltam megkeresni, de nem talaltam sehol a konyvtarszerkezetben (marmint a /www/ konyvtaramon belul!)
zM
[quote:70f42ed9e9="zee_man78"]hello ochronus,
remelem azert egyszer majd megkapod ezt az uzenetet :)
tobb napon at tobb forumra is feliratkoztam (probaltam komolyan japanra is!!!) de senki nem tudott segiteni ...
aztan egy hirtelen otlettol vezerelve a legegyszerubb dolgot csinaltam amit el tudok kepzelni:
atneveztem a konyvtarat
[code:1:70f42ed9e9]
mv /www/ruby /www/rubi
[/code:1:70f42ed9e9]
es innentol kezdve megy a script!!!
koszonom sokadszorra is a segitseget, es remelem ha valakinek van hasnolo problemaja, akkor ez segit neki!
"a vonat nem var ... :)"
udv,
zM
:D:D:D:D no comment :D nyilván valami ütközés volt két config között, de hogy mi... én nem látom... a lényeg hogy megy :D
Szívesen segítettem, kár hogy érdemben nem sikerült :)
További jó rubyzást,
Ochronus