i enable ruby and i have this in my virtualhost: Code: <IfModule mod_ruby.c> <Directory /var/www/iliketech.ir/web> Options +ExecCGI </Directory> RubyRequire apache/ruby-run #RubySafeLevel 0 AddType text/html .rb AddType text/html .rbx <Files *.rb> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> <Files *.rbx> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> </IfModule> and i put this source: Code: #!/usr/bin/ruby puts <<EOS Content-type: text/html <html><body>hi</body></html> EOS class HelloWorld def initialize(name) @name = name.capitalize end def sayHi puts "Hello #{@name}!" end end hello = HelloWorld.new("World") hello.sayHi but it doesn't run and show source when i open the url: Also is my apache mod enabled: Code: # ls /etc/apache2/mods-enabled/ access_compat.load auth_digest.load autoindex.conf deflate.conf fastcgi.load mime.load php5.load ssl.conf suphp.load actions.conf authn_core.load autoindex.load deflate.load fcgid.conf mpm_prefork.conf python.load ssl.load actions.load authn_file.load cgi.load dir.conf fcgid.load mpm_prefork.load rewrite.load status.conf alias.conf authz_core.load dav_fs.conf dir.load filter.load negotiation.conf setenvif.conf status.load alias.load authz_host.load dav_fs.load env.load include.load negotiation.load setenvif.load suexec.load auth_basic.load authz_user.load dav.load fastcgi.conf mime.conf php5.conf socache_shmcb.load suphp.conf also: Code: # apachectl -M AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-ispconfig.conf:61 Loaded Modules: core_module (static) so_module (static) watchdog_module (static) http_module (static) log_config_module (static) logio_module (static) version_module (static) unixd_module (static) access_compat_module (shared) actions_module (shared) alias_module (shared) auth_basic_module (shared) auth_digest_module (shared) authn_core_module (shared) authn_file_module (shared) authz_core_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) cgi_module (shared) dav_module (shared) dav_fs_module (shared) deflate_module (shared) dir_module (shared) env_module (shared) fastcgi_module (shared) fcgid_module (shared) filter_module (shared) include_module (shared) mime_module (shared) mpm_prefork_module (shared) negotiation_module (shared) php5_module (shared) python_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) suexec_module (shared) suphp_module (shared)
Yes of course i know when a file wants to be execute it should have enough permission but it seems apache handler doesn't work and open ruby file just like a normal text
So you did make the .rb file executeable? Edit: whopsy the following will not work unless you install/enable eRuby - my fault. Well yeah, your use of ruby is CGI like behaviour. Did you try to test ruby using this kind of code already? Code: <% 1.upto(99) do |x| puts "counting #{x} red balloons" end %> Edit2: Another thing I remember to is disable the rb extension in /etc/mime.types like described on this howto.
Sure but it's not inside tutorial and then how to? is it need to change something in ispconfig like template or whatever? No same result . it shows it as a text file YEs i did
for eruby you would need to modify the template, yes Code: RubyRequire apache/eruby-run ... <Files *.rhtml> SetHandler ruby-object RubyHandler Apache::ERubyRun.instance </Files> But this is out of scope and not solving your issue here, also requires liberubis-ruby to be installed. To be honest, I really don't know why - config looks great and appearently your mod_ruby is beeing loaded. Any errors / warnings / hints in your error.log while restarting apache? Or in the vhost error log when trying to execute the file? I guess you did but... is the file owned by the client/webgroup belonging to that domain? What if you use Code: #!/usr/bin/env ruby or just a very basic example.rb ( without #! stuff ) Code: puts "Hello World!"
How can you say it's loaded? its not in: Code: # ls /etc/apache2/mods-enabled/ access_compat.load auth_digest.load autoindex.conf deflate.conf fastcgi.load mime.load php5.load ssl.conf suphp.load actions.conf authn_core.load autoindex.load deflate.load fcgid.conf mpm_prefork.conf python.load ssl.load actions.load authn_file.load cgi.load dir.conf fcgid.load mpm_prefork.load rewrite.load status.conf alias.conf authz_core.load dav_fs.conf dir.load filter.load negotiation.conf setenvif.conf status.load alias.load authz_host.load dav_fs.load env.load include.load negotiation.load setenvif.load suexec.load auth_basic.load authz_user.load dav.load fastcgi.conf mime.conf php5.conf socache_shmcb.load suphp.conf and in: Code: # apachectl -M AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-ispconfig.conf:61 Loaded Modules: core_module (static) so_module (static) watchdog_module (static) http_module (static) log_config_module (static) logio_module (static) version_module (static) unixd_module (static) access_compat_module (shared) actions_module (shared) alias_module (shared) auth_basic_module (shared) auth_digest_module (shared) authn_core_module (shared) authn_file_module (shared) authz_core_module (shared) authz_host_module (shared) authz_user_module (shared) autoindex_module (shared) cgi_module (shared) dav_module (shared) dav_fs_module (shared) deflate_module (shared) dir_module (shared) env_module (shared) fastcgi_module (shared) fcgid_module (shared) filter_module (shared) include_module (shared) mime_module (shared) mpm_prefork_module (shared) negotiation_module (shared) php5_module (shared) python_module (shared) rewrite_module (shared) setenvif_module (shared) socache_shmcb_module (shared) ssl_module (shared) status_module (shared) suexec_module (shared) suphp_module (shared) and mod-ruby it's not longer support on ubuntu 14.04 server No i think it because if ifmodule so when mod-ruby doesn't installed then nothing run and nothing made error Yes i put it by ftp No you can see it: http://iliketech.ir/1.rb
Hmm my eyes must have tricked me - omg Ok, well then - you'd probably need to move your ruby to cgi-bin directory and run it as CGI :/ Another possible solution would be to setup passenger ... would need some modification of the templates... @till maybe it's time to write some howtos for mpm worker/event using non mod_ modules to do things and updates to the template files =) What about ISPC 3.1? I'm back in 10 minutes, getting some coffee
Thanks i'm happy to find something to change on next version of ISPconfig and help to improve it. Now i would like to install passenger and help me to change template for ruby can enabled and disabled as a feature. do you have any doc to install and config ruby module on apache ?
I'm going to do a test setup including needed changes to the template files, currently I'm drinking my coffee and preparing a test VM to work on. I'll post an update after I confirmed it's working. I assume you're using apache mpm prefork as it's still in the howtos?
Thanks and yes i did this how to: https://www.howtoforge.com/perfect-...2-php-mysql-pureftpd-bind-dovecot-ispconfig-3
Quick update, actually you either need to run your ruby files as CGI or need to build the new mod_ruby ( the old one is dead ). Nay other method would require to make a few changes and let the ruby app run / listen on an interface/port which is assumingly not what you want. My issue right now is, I'm currently not able to run ubuntu 14.x since I lack of 64bit VM right now and there's no 32bit edition available it seems. Anyway, the main difference should be the installation process, which seems to be easy in ubuntu since it's already described on the projects page https://github.com/mikeowens/mod_ruby
Update2: Ok, I did make it work - however I can't see how it supports custom headers, so probably these won't work. So I assume running ruby files as CGI might be the only option to use custom headers. I'll give an update after doing some experiments with the template files. But if you want to try this module, I did it so I share it. This is going to install the new mod_ruby package from https://github.com/mikeowens/mod_ruby This is for Debian 8 We need a few build tools and dev packages Code: apt-get install cmake libaprutil1-dev libapr1-dev ruby ruby-dev apache2-dev pbuilder debootstrap devscripts Prepare folders and build dir. Code: mkdir /usr/local/src/mod_ruby cd /usr/local/src/mod_ruby wget https://github.com/mikeowens/mod_ruby/archive/master.zip unzip master.zip cd mod_ruby-master /usr/lib/pbuilder/pbuilder-satisfydepends fakeroot debian/rules clean If you're on debian or dpkg-buildpackage step fails: modify debian/changelog Code: mod-ruby (3.0.0-3~jessie) jessie; urgency=low * Release of 3.0.0-3 -- Michael Owens <[email protected]> Mon, 14 Mar 2016 18:27:47 +0100 If you're on debian or dpkg-buildpackage step fails: modify debian/changelog.in Code: mod-ruby (${MODRUBY_RELEASE_VERSION}~jessie) jessie; urgency=low * Release of ${MODRUBY_RELEASE_VERSION} -- Michael Owens <[email protected]> ${MODRUBY_RELEASE_DATE} Building and installing .deb, please not that your .deb could have a different name - we also don't need the -git- deb file. Code: dpkg-buildpackage dpkg -i ../mod-ruby_3.0.0-3~jessie_i386.deb Enable our new mod_ruby Also remove the ruby.conf - no need to enable it global. Code: a2enmod ruby rm /etc/apache2/mods-enabled/ruby.conf Edit your /usr/local/ispconfig/server/conf/vhost.conf.master Code: # Replace <tmpl_if name='ruby' op='==' value='y'> <IfModule mod_ruby.c> <Directory {tmpl_var name='web_document_root_www'}> Options +ExecCGI </Directory> RubyRequire apache/ruby-run #RubySafeLevel 0 AddType text/html .rb AddType text/html .rbx <Files *.rb> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> <Files *.rbx> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> </IfModule> </tmpl_if> # with <tmpl_if name='ruby' op='==' value='y'> <IfModule mod_ruby.c> AddHandler ruby-handler .rsp AddHandler ruby-handler .rhtml AddHandler ruby-script-handler .rb # Set MIME types for RUBY/RHTML/Ruby files AddType text/html .rhtml .rsp .rb </IfModule> </tmpl_if> Sidenotes Code: The author of this module mentioning a quirk for ubuntu users to be placed between <IFModule ...></IFModule> : # Hack for Ubuntu. RubyConfig GEM_PATH /usr/lib/ruby/gems/2.0.0/gems/ This wasn't needed for me to run some simple ruby scripts. Also This compiles on 64bit, it will segfault, no issue on 32bit. If you need 64bit see page 2 of this thread. Also this code: #!/usr/bin/ruby puts <<EOS Content-type: text/html <html><body>hi</body></html> Will actually print out Content-type: aswell, so it might not be a real drop-in-replacement
Ruby without mod_ruby Apache Use Ruby with ISPConfig 3.0.x using CGI Edit your /usr/local/ispconfig/server/conf/vhost.conf.master Code: # Replace <tmpl_if name='ruby' op='==' value='y'> <IfModule mod_ruby.c> <Directory {tmpl_var name='web_document_root_www'}> Options +ExecCGI </Directory> RubyRequire apache/ruby-run #RubySafeLevel 0 AddType text/html .rb AddType text/html .rbx <Files *.rb> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> <Files *.rbx> SetHandler ruby-object RubyHandler Apache::RubyRun.instance </Files> </IfModule> </tmpl_if> # with <tmpl_if name='ruby' op='==' value='y'> <Directory {tmpl_var name='web_document_root_www'}> Options +ExecCGI </Directory> AddHandler cgi-script .rb </tmpl_if> Sidenotes Code: Don't forget to make your .rb executeable. Also note, this basically allows any CGI in .rb files :/
I tried to make the old mod_ruby work with 2.4 but besides I already probably broke http authentification data, error logging it segfaults ruby_call_interpreter() failed and I'm not into it too much so as many others already said: wont fix
i've got error when compile: Code: # fakeroot debian/rules clean dh_testdir dh_testroot cmake . -- The C compiler identification is GNU 4.8.4 -- The CXX compiler identification is GNU 4.8.4 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- PLATFORM: linux -- SYSTEM: Linux-3.13.0-79-generic -- VERSION: 3.13.0-79-generic -- ARCH: x86_64 -- SYSTEM: 3.13.0-79-generic (linux/debian/settings.cmake) -- LINUX_DISTRO: trusty -- RELEASE_DATE: Tue, 15 Mar 2016 16:17:50 +0330 -- VERSION: 3.0.0 -- SOVERSION: 3.0.0 -- RUBY_INCLUDE_ARCH_PATH: -- RUBY_INCLUDE_PATH: RUBY_INCLUDE_PATH-NOTFOUND -- RUBY_ARCH_DIR: /usr/lib/ruby/1.9.1/x86_64-linux -- RUBY_LIBRARY: /usr/lib/libruby-1.9.1.so.1.9.1 -- RUBY_ARCH_LIB_DIR : -- -- ------------------------------------------------------------------------------- -- BUILD_SHARED_LIBS = OFF -- CMAKE_INSTALL_PREFIX = /usr/local/src/mod_ruby/mod_ruby-master -- CMAKE_BUILD_TYPE = RelWithDebInfo -- CMAKE_MODULE_PATH = -- Project_DEPENDS = "" -- BUILD_WITH = "" -- INSTALL_DOC = ON -- Change a value with: cmake -D<Variable>=<Value> -- ------------------------------------------------------------------------------- -- CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: RUBY_INCLUDE_PATH (ADVANCED) used as include directory in directory /usr/local/src/mod_ruby/mod_ruby-master/src used as include directory in directory /usr/local/src/mod_ruby/mod_ruby-master/src used as include directory in directory /usr/local/src/mod_ruby/mod_ruby-master/src -- Configuring incomplete, errors occurred! See also "/usr/local/src/mod_ruby/mod_ruby-master/CMakeFiles/CMakeOutput.log". make: *** [clean] Error 1 Also log file: http://codepad.org/BbkIg9rR my os is: Code: # lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.4 LTS Release: 14.04 Codename: trusty
Were you been able to install all dependencies including all *-dev packages listed above? Or did APT say something could not be found so it'll continue without a specific package? I'm not sure wether all the packages are called exactly the same on Ubuntu. Another thing you could try is just setting Code: bash$ RUBY_INCLUDE_PATH=/usr/include/ruby-2.1.0 Be sure it's the correct folder - and I currently can just assume it shall work :/
YEs absolutely it installed everything otherwise i said it as an error. I have this version: Code: # ls /usr/include/ruby-1.9.1/ ruby ruby.h x86_64-linux and strange thing is define that path as variable: Code: # RUBY_INCLUDE_PATH=/usr/include/ruby-1.9.1 [email protected]:/usr/local/src/mod_ruby/mod_ruby-master# export RUBY_INCLUDE_PATH=/usr/include/ruby-1.9.1 [email protected]:/usr/local/src/mod_ruby/mod_ruby-master# echo $RUBY_INCLUDE_PATH /usr/include/ruby-1.9.1 but i get same error when i run: # fakeroot debian/rules clean Code: # fakeroot debian/rules clean dh_testdir dh_testroot cmake . -- PLATFORM: linux -- SYSTEM: Linux-3.13.0-79-generic -- VERSION: 3.13.0-79-generic -- ARCH: x86_64 -- SYSTEM: 3.13.0-79-generic (linux/debian/settings.cmake) -- LINUX_DISTRO: trusty -- RELEASE_DATE: Tue, 15 Mar 2016 18:11:59 +0330 -- VERSION: 3.0.0 -- SOVERSION: 3.0.0 -- RUBY_INCLUDE_ARCH_PATH: -- RUBY_INCLUDE_PATH: RUBY_INCLUDE_PATH-NOTFOUND -- RUBY_ARCH_DIR: /usr/lib/ruby/1.9.1/x86_64-linux -- RUBY_LIBRARY: /usr/lib/libruby-1.9.1.so.1.9.1 -- RUBY_ARCH_LIB_DIR : -- -- ------------------------------------------------------------------------------- -- BUILD_SHARED_LIBS = OFF -- CMAKE_INSTALL_PREFIX = /usr/local/src/mod_ruby/mod_ruby-master -- CMAKE_BUILD_TYPE = RelWithDebInfo -- CMAKE_MODULE_PATH = -- Project_DEPENDS = "" -- BUILD_WITH = "" -- INSTALL_DOC = ON -- Change a value with: cmake -D<Variable>=<Value> -- ------------------------------------------------------------------------------- -- CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: RUBY_INCLUDE_PATH (ADVANCED) used as include directory in directory /usr/local/src/mod_ruby/mod_ruby-master/src used as include directory in directory /usr/local/src/mod_ruby/mod_ruby-master/src used as include directory in directory /usr/local/src/mod_ruby/mod_ruby-master/src -- Configuring incomplete, errors occurred! See also "/usr/local/src/mod_ruby/mod_ruby-master/CMakeFiles/CMakeOutput.log". make: *** [clean] Error 1
A somewhat hacky way to do it, but who cares now ... it works =) edit your config/ruby.cmake Code: # After this line SET(RUBY_ARCH_LIB_DIR ${RUBY_ARCH_LIB_DIR} CACHE PATH "The Ruby arch lib dir") # add SET(RUBY_POSSIBLE_INCLUDE_PATHS "/usr/include/ruby-1.9.1") Oh and you can run the old mod_ruby on ubuntu 14.04, doesn't work as expected probably but it does the same, it will output Content-Type as text on the site the same way the new mod does.