20 Jul 02:08
Hosting Ruby on Rails on GoDaddy - Solved!
From: datakix <datakix@...>
Subject: Hosting Ruby on Rails on GoDaddy - Solved!
Newsgroups: gmane.comp.lang.ruby.rails
Date: 2008-07-20 00:11:50 GMT
Subject: Hosting Ruby on Rails on GoDaddy - Solved!
Newsgroups: gmane.comp.lang.ruby.rails
Date: 2008-07-20 00:11:50 GMT
Hello all, I know how very challenging it can be to host a ROR application of GoDaddy. The good news is that after 10 days of blood, sweat and tears, I finally got it to work!!! First, let me start by saying that I'm somewhat of a newbie to Rails. However, I've been programming in Java and/or C# for the last 10+ years so I've been around the block a couple times when it comes to this stuff. Secondly, this was undoubtedly one of the most challenging development tasks I've undertaken this year, so please don't feel bad if you didn't get it to work the first 10 attempts because it took me waaaaay more than that!. Well, with that said, I'm sure you're eager to get to the how-to so let's do it. Right now, I'd love to write a few paragraphs on how GoDaddy's Ruby on Rails support and documentation is abominal, but that would only be preaching to the choir... Instead, let's make some lemonadeOne more thing, please forgive and typing/spelling errors, I'm writing this in Notepad. My Setup ------------------------------------------------------------ - Linux Deluxe Plan - Windows Vista - Ruby 1.8.5-22 Final (http://rubyforge.org/frs/?group_id=167) - Gem 0.9.2 - Rails 1.1.6 (I know you're looking for 2.0 bare w/me) - FileZilla 3.0.11.1 (filezilla-project.org) - Subversion 1.4.5 (http://subversion.tigris.org/) Tip - On Vista and XP, if you uninstall a version of Ruby, restart your computer before reinstalling another version of Ruby, otherwise the Environment Variables won't get set properly. ------------------------------------------------------------ Installing Rails ------------------------------------------------------------ Ok, here is where I was REALLY confused early on, mostly because I didn't understand terminology (i.e. what is a RubyGem, what does freeezing a Gem do). I was also really confused by GoDaddy's documentation. In some places, they claim to support Rails 1.1.2, in others it's 1.1.6. Anyway, to correctly install Rails for version 1.1.6: 1. Run the Ruby185-22.exe installer. 2. Open a command prompt and type: gem install rails --version 1.1.6 That's it. [DO NOT download RubyGems 1.2.0 (or any other version) and then run "ruby setup.rb"!!!! Same goes for any other version of Rails, don't do it.] To ensure you've setup everything correctly, let's check the ROR component's versions: C:\Development\Projects\Ruby>ruby -v ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32] C:\Development\Projects\Ruby>gem -v 0.9.2 C:\Development\Projects\Ruby>rails -v Rails 1.1.6 ------------------------------------------------------------ Installing Subversion ------------------------------------------------------------ Go ahead and install Subversion if you already haven't. It's a version control system like CVS or Visual Source Safe. ------------------------------------------------------------ Creating a test project ------------------------------------------------------------ -- Let's keep it simple and create helloworld C:\Development\Projects\Ruby>rails helloworld create create app/controllers create app/helpers ... ... -- Change to the helloworld directory C:\Development\Projects\Ruby>cd helloworld -- Create a controller and some basic actions C:\Development\Projects\Ruby\helloworld>ruby script\generate controller Say hello ./script/../config/boot.rb:28:Warning: require_gem is obsolete. Use gem instead . exists app/controllers/ exists app/helpers/ create app/views/say exists test/functional/ create app/controllers/say_controller.rb create test/functional/say_controller_test.rb create app/helpers/say_helper.rb create app/views/say/hello.rhtml -- Ok, let see if it works C:\Development\Projects\Ruby\helloworld>ruby script/server ./script/../config/boot.rb:28:Warning: require_gem is obsolete. Use gem instead . => Booting WEBrick... => Rails application started on http://0.0.0.0:3000 => Ctrl-C to shutdown server; call with --help for options [2008-07-18 22:54:52] INFO WEBrick 1.3.1 [2008-07-18 22:54:52] INFO ruby 1.8.5 (2006-12-25) [i386-mswin32] [2008-07-18 22:54:52] INFO WEBrick::HTTPServer#start: pid=3680 port=3000 127.0.0.1 - - [18/Jul/2008:22:55:11 Eastern Daylight Time] "GET / HTTP/ 1.1" 200 7552 -- Open a browser to: http://localhost:3000/Say/hello Say#hello Find me in app/views/say/hello.rhtml ------------------------------------------------------------ Preparing for launch to GoDaddy ------------------------------------------------------------ Ok, just to quickly recap, all we've done so far is to install ROR, Subversion and create a very simple Rails app - nothing special. Everything is working locally, so now it's time to prepare for FTPing to GoDaddy. This is another area where I was REALLY confused initially. So before we go any further I'm going to outline and explain what we're going to do and why. 1. Freeze the application. When you "freeze" a Rails app, your application will always use that version of Rails and the associated Ruby Gems, regardless of what version is installed on the GoDaddy server. In essence, even though GoDaddy only supports version 1.1.6, by 'freezing' your application, you literally bundle your entire local environment into your application. So theoretically, you can run version 2.x.x if you 'freeze' your application before deploying. Note, I have not tried this as of yet, but I do have a 'frozen' version of Rails 1.2.6 running on GoDaddy. So if 1.2.6 runs, then it's very likely 2.x.x will run as well as long as it's frozen. 2. Make a copy of the helloworld application and rename it hellworld_godaddy. This is a best practice for me because it allows me to have a working version of my app running on Vista and a 'ready to promote' version for the Linux server. 3. Configure some files in the /public and /config directory for use on GoDaddy. EASY as 1-2-3..... Ok, go ahead and stop the WEBrick server by typing Ctrl C First, let's Freeze our application to version 1.1.6 C:\Development\Projects\Ruby\helloworld>rake rails:freeze:edge TAG=rel_1-1-6 [**** Note: this may take 30+ seconds ****] Second, copy of the helloworld application and rename it hellworld_godaddy Finally, we need to edit some files in our hellworld_godaddy directory. --> /config/environment.rb Edit the top section of /config/environment.rb to look like this: ENV['RAILS_ENV'] ||= 'development' # Specifies gem version of Rails to use when vendor/rails is not present ENV['GEM_HOME'] = '/usr/local/lib/ruby/gems-dev/1.8' RAILS_GEM_VERSION = '1.1.6' --> /public/dispatch.rb, dispatch.cgi, and dispatch.fcgi Edit the first line in all of the dispatch files to look like this: #!/usr/local/bin/ruby --> /public/.htaccess Ok, a brief pause is needed here to explain some things. .htaccess files are generally used for many reasons, but it's common in shared hosting for these files to be used to redirect to a subdirectory preventing users from knowing the real location of your application on a server. GoDaddy uses a 'Symbolic Link name' which is really just an 'alias'. So in our case we're going to create a subdirectory called 'helloworld_godaddy' and a Symbolic Link name of 'helloworld'. So all this means is that when a user goes to http://www.mywebsite.com/hellworld, they're actually referencing the data and files from the helloworld_godaddy subdirectory. The most important thing to know about this file is that it should contain a 'RewriteBase' directive which explicitly sets the base URL for per-directory rewrites. So in our case we want the base URL to be rewritten as 'helloworld'. Another useful tip is to use the .fcgi (FastCGI) protocol; this is done by simply changing the .cgi extensions to .fcgi. Edit the middle section of the .fcgi file to look like this: RewriteBase /helloworld RewriteRule ^$ index.html [QSA] RewriteRule ^([^.]+)$ $1.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] Ok, now we're almost there! The last part is the easiest
------------------------------------------------------------ Lock and Load ------------------------------------------------------------ Log into your GoDaddy account and open up the CGI Admin tool. In the 'Directory name:' textbox, type my_rails_apps. GoDaddy will automatically create an .htaccess file in the new directory. Open the file and change dispatch.cgi to dispatch.fcgi. [Note: This step is not necessary] Open up FileZilla and connect to your GoDaddy root directory. Double click the my_rails_apps directory. In the Filezilla toolbar, select Edit --> Settings --> FileTypes and change the Default transfer type to ASCII. Select your helloworld_godaddy directory, right click and select upload. *** IMPORTANT STEP *** [Note: this process will take about 2-3 minutes] (If you're new to the GoDaddy admin tool, you'll need to create an FTP user by going to Hosting Control Center --> Settings --> Manage FTP settings) (To figure out your FTP URL, username and password, go to Hosting Control Center --> Content --> FTP Client --> Click Disconnect, then Connect) (Make sure you turn on your error logs, go to Hosting Control Center -- > Settings --> Error Logs --> click the 'Update' button) Ok, now go back to the CGI Admin tool and select the 'Ruby' tag or refresh the page. In the Create Rails Symbolic Link section, click the Show Rails 'Applications link'. If all went well, you should see 'my_rails_apps/helloworld_godaddy' in the 'Choose a rails app:' drop down box. Enter a link name of 'hellworld' (no quotes), then click the 'Create' button. [Link created: helloworld is a symbolic link to my_rails_apps/ helloworld_godaddy] ------------------------------------------------------------ LIFT OFF!! ------------------------------------------------------------ The very last step is setting permissions. Reconnect to your root directory via Filezilla and open up the / my_rails_apps/helloworld_godaddy/public directory. Select the dispatch.cgi and dispatch.fcgi file, right click and select 'file attributes'. Change the numeric value 644 to 755 and click the 'Ok' button. -- Open a browser to: http://www.mysite.com/hellworld/say/hello [ALL LOWERCASE] Say#hello Find me in app/views/say/hello.rhtml ------------------------------------------------------------ CONGRATULATIONS! You've done it. For reference, I've uploaded a copy of the helloworld_godaddy directory to: http://www.mediafire.com/?9pz114mjed1 In case these instructions don't work for you, here are some instructions that helped me along my journey: http://blog.mcmoyer.com/2007/9/14/running-rails-on-godaddy-a-k-a-how-do-you-keep-a-geek-entertained http://www.ruby-forum.com/topic/104823 http://www.ruby-forum.com/topic/133394 http://www.littleredrails.com/blog/2008/01/26/setting-up-ruby-on-rails-with-godaddy/ http://www.rousette.org.uk/projects/forums/viewthread/13/#487 http://lists.rubyonrails.org/pipermail/rails/2006-July/056959.html Hope this helps. Bill Screen --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@... To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@... For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
One more thing, please forgive and typing/spelling errors, I'm writing
this in Notepad.
My Setup
------------------------------------------------------------
- Linux Deluxe Plan
- Windows Vista
- Ruby 1.8.5-22 Final (
RSS Feed