This is an update to my first post on how to setup a working environment on Amazon EC2 with Ruby on Rails, Passenger, MySQL, and Ubuntu.
Quiet a lot has changed in last three years, so I thought I’d do a quick post to improve the installation, seeing as how the old post still receives a bit of traffic.
I’m using the official Ubuntu Server 12.04 LTS ami. Here is the rundown:
# Setup Ruby on Rails, MySql, Apache + Passenger # on Amazon Ubuntu instance (12.04 LTS) # 9/7/2012 echo Updating operating system and components... sudo apt-get update -y sudo apt-get dist-upgrade -y sudo apt-get install build-essential -y sudo apt-get install libxslt-dev libxml2-dev -y sudo apt-get install curl libcurl4-openssl-dev -y sudo apt-get install zlib1g-dev libssl-dev libexpat1-dev -y echo Installing apache server, mysql utils, ruby, and git sudo apt-get install apache2 apache2-threaded-dev -y sudo apt-get install mysql-server mysql-client-core-5.5 -y sudo apt-get install git-core gitweb -y sudo apt-get install ruby1.9.2 -y sudo apt-get install imagemagick -y sudo apt-get install libmagickwand-dev -y sudo curl -L https://get.rvm.io | bash -s stable source /home/ubuntu/.rvm/scripts/rvm sudo apt-get install automake -y sudo apt-get install bison -y rvm install 1.9.2-head gem install passenger sudo passenger-install-apache2-module
A couple of big items. First, you’ll notice the addition of RVM. I found it makes my life a lot easier when managing ruby installations. Second, no gems. This is because now you’ll be managing all your gems through the bundler, which will make your life a lot easier too.
If you are using git, don’t forget to set
git config --global user.name "USERNAME" git config --global user.email "EMAIL@WEBSITE.COM"
Have been meaning to post this for a while. I have an older MBP that came with OS X version 10.4, and after upgrading to 10.6 my entire coding stack collapsed. After a couple of hours here is the solution I came up with.
First, find what processor you are running on, ie 32 or 64 bit. If you don’t know use this guide http://support.apple.com/kb/ht3696
Second, download and install the appropriate MySQL version from http://dev.mysql.com/downloads/mysql. In my case it was 64-bit MySQL 5.1.37.
After that you’ll need to install ruby gems from scratch. You can find more details in my other post How to setup RoR+Passenger+MySql+Ubuntu Server on EC2,but here is an excerpt bash script with all you need:
echo Installing ruby gems... cd /usr/local/src sudo wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz sudo tar -zvxf rubygems-1.3.5.tgz cd rubygems-1.3.5/ sudo ruby setup.rb echo Symlinking... sudo ln -s /usr/bin/gem1.8 /usr/local/bin/gem sudo ln -s /usr/bin/ruby1.8 /usr/local/bin/ruby sudo ln -s /usr/bin/rdoc1.8 /usr/local/bin/rdoc sudo ln -s /usr/bin/ri1.8 /usr/local/bin/ri sudo ln -s /usr/bin/irb1.8 /usr/local/bin/irb
Note: If you find that the gem command still won’t run try this
sudo ln -s /usr/bin/gem /usr/local/bin/gem
Finally, execute the following:
sudo gem update --system sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Note: make sure you set ARCHFLAGS flag to the appropriate architecture.
Good luck and enjoy your new OS.
I’ve been using swftools, mainly pdf2swf functionality, for a while now and installation always sucked. Google usually provides good results for common problems, but lack of a step-by-step installation guide is lacking.
Main site, http://swftools.org, has pretty good wiki for documentation and a tidy installation walkthrough. Unfortunately for me I had a ton of problems getting pdf2swf to work properly on Amazon’s AWS Ubuntu server (ami-5059be39 – ubuntu-intrepid), but fortunately for you I finally got it working and also put together this guide, which will hopefully save you some time.
Note: swftools version that comes default with aptitude would not work for me hence the need to compile from source.
Note2: this guide assumes the distro is up to date and all system libraries have been installed from Installing RoR on Ubuntu post
Get necessary libraries and extract
wget http://swftools.org/swftools-0.9.0.tar.gz tar -zvxf swftools-0.9.0.tar.gz wget http://www.ijg.org/files/jpegsrc.v7.tar.gz tar -zvxf jpegsrc.v7.tar.gz wget http://download.savannah.gnu.org/releases-noredirect/freetype/freetype-2.3.12.tar.gz tar -zvxf freetype-2.3.12.tar.gz
Note: v8 produced errors in swftools install so I grabbed v7, which worked wonderfully.
Now order of install. First we install jpeg:
cd jpegsrc.v7 sudo ./configure sudo make sudo make install
Freetype is a little trickier. For install you have to reset cache, set flags, run ranlib (not sure why but it wouldn’t work without for me, if you know I’d love an explanation)
cd freetype-2.3.12 rm -f config.cache sudo ranlib /usr/local/lib/libjpeg.a sudo ldconfig /usr/local/lib sudo LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure sudo make sudo make install
If you want to be able to convert pdf files into text you have to install xpdf. Fortunately aptitude does provide us with the right libraries this time.
sudo apt-get install xpdf-reader
And now for the final step:
cd swftools-0.9.0 sudo LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include" ./configure sudo make sudo make install
Big thanks to swftools for making this possible.
Edit (3/3/2011): Updated code formatting.
I bought an iPod Touch and was trying to hook it up to my gmail account, but kept getting “The user name or password for “imap.gmail.com” is incorrect”. I tried going through the official GMail setup but to no avail.
Triple checked to make sure IMAP support was enabled, still nothing.
Then I stumbled along a post suggesting to try unlocking captcha on my account (https://www.google.com/accounts/UnlockCaptcha). I went ahead and everything worked fine afterward. Awesome!
I’ve noticed there were some searches coming through with people asking how much it costs to host servers on Amazon’s EC2. Without going into detail, last month I ran 3 Linux instances (m1.small) with no EBS and minor S3 usage, which cost me about $200 a month.
Compared to my previous hosting company – hostmonster.com – Amazon is way more expensive. However, I now find that taking care of my server administration needs is much easier and (gasp!) fun.
I just did several projects that required a wordpress install. The setup I used was Ubuntu (ami-5059be39) on EC2, apache and mysql obviously ;). Here is a script I used to prep the system and install necessary libraries
sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install git-core sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql server sudo apt-get install phpmyadmin
Download WordPress and extract to a directory. I used /home/ubuntu/projectname.
Then sym link this directory to /var/www/projectname. When you are done, edit apache conf file, which is located at /etc/apache2/sites-enabled/projectname, to point to the deploy directory:
You can use the 000-default file if you want, but I usually rename it to the project name I’m working on to avoid confusion (or if you have more than one subdomain or website running on the same machine).
Last step, restart apache:
sudo /etc/init.d/apache 2 restart
Edit (3/3/2011): updated code formatting.
UPDATE: Please see new post for updated info.
Hello, this is my first post and I’m going to show you how to setup Ubuntu Server to run Rails/MySql/Passenger stack on Amazon’s EC2. There are a lot of tutorials out there showing how to prep Ubuntu Server or get Passenger working or one or the other, but I haven’t found anything that would walk me through the whole stack, so I put together this script to install everything I need to get my rails app running. I hope you’ll find it useful as well. Here we go.
I’m assuming you got your Amazon EC2 account setup and lunched the official Ubuntu server AMI (ami-5059be39 – ubuntu-intrepid is the latest one at the time of this writing).
If you haven’t done that check out this great post Starting Amazon EC2 with Mac OS X by Robert Sosinksi. I also highly recommend the Elasticfox Firefox plug-in to manage your EC2 instances.
SSH into your server. Go to /home/ubuntu and create setup.sh file. Copy and paste the following:
# Setup Ruby on Rails, MySql, Apache + Passenger # on Amazon Ubuntu instance (ami-5059be39 – ubuntu-intrepid) # 10/09/09 echo Updating system... sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install build-essential sudo apt-get install curl libcurl4-openssl-dev sudo apt-get install zlib1g-dev libssl-dev libexpat1-dev echo Installing tools... sudo apt-get install apache2 apache2-threaded-dev sudo apt-get install ruby ri rdoc ruby1.8-dev irb libreadline-ruby1.8 sudo apt-get install libruby1.8 libopenssl-ruby libopenssl-ruby1.8 sudo apt-get install mysql-server libmysqlclient15off mysql-client-5.0 sudo apt-get install mysql-common mysql-server-5.0 libmysqlclient-dev sudo apt-get install libmysql-ruby libmysql-ruby1.8 psmisc sudo apt-get install subversion sudo apt-get install git-core gitweb echo Installing ruby gems... cd /usr/local/src sudo wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz sudo tar -zvxf rubygems-1.3.5.tgz cd rubygems-1.3.5/ sudo ruby setup.rb echo Symlinking... sudo ln -s /usr/bin/gem1.8 /usr/local/bin/gem sudo ln -s /usr/bin/ruby1.8 /usr/local/bin/ruby sudo ln -s /usr/bin/rdoc1.8 /usr/local/bin/rdoc sudo ln -s /usr/bin/ri1.8 /usr/local/bin/ri sudo ln -s /usr/bin/irb1.8 /usr/local/bin/irb echo Installing Gems... sudo gem install sys-proctable --no-rdoc --no-ri sudo gem install rails --no-rdoc --no-ri sudo gem install mysql --no-rdoc --no-ri sudo gem install capistrano rspec rdoc --no-rdoc --no-ri sudo gem install passenger --no-rdoc --no-ri sudo gem install haml --no-rdoc --no-ri sudo gem install hpricot --no-rdoc --no-ri sudo gem install json --no-rdoc --no-ri sudo gem install newrelic_rpm --no-rdoc --no-ri sudo gem install sqlite3-ruby --no-rdoc --no-ri sudo gem install will_paginate --no-rdoc --no-ri sudo gem install authlogic --no-rdoc --no-ri sudo gem install cached_model --no-rdoc --no-ri echo Installing Phusion Passenger sudo passenger-install-apache2-module
Save the file and type sudo bash ./setup.sh to start.
Note: –no-rdoc –no-ri makes it so that no gem documentation is installed. Simply remove that line if you want to download documentation files.
Make sure to press Y when prompted. You should have plenty of space to get everything.
Let’s see what this script does now. The first part updates the system, then it installs apache, ruby, mysql server, and necessary libraries. Then we install subversion and git (if you only need one just remove the other. You are using a version control system…right?)
The next part installs ruby gems. I’ve had some trouble with aptitude so I built from source. The script just grabs rubygems source from rubyforge, extracts, and installs it. If you want to do this manually don’t forget to symlink.
Next step is to install your gems. Those listed in the script are the ones that I commonly use when starting out a rails app, but feel free to add/remove which ever you need.
Last part installs Passenger Phusion. The folks at modrails.com made it extremely easy to setup so just follow their instructions. I usually put
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4 PassengerRuby /usr/bin/ruby1.8
at the end of apache config file (/etc/apache2/apache2.conf). Then create your app-specific config file at /etc/apache2/sites-enabled/client-app
<VirtualHost *:80> ServerName 126.96.36.199 #Server ip or www.yourhostname.com DocumentRoot /home/ubuntu/yourapp/public # Rails public directory! </VirtualHost>
sudo /etc/init.d/apache2 restart
Edit (3/3/2011): updated code formatting