After repeating these operations many times in various setups, I decided to create a public set of instructions and share them with the world. This should be suitable for most of the simple web sites, utilizing Ruby on Rails or PHP.
The setup works on Ubuntu 10.04 Server LTS (scheduled end of life April 2015). Other components of the setup are Nginx as the web server, Phusion Passenger as application server.
I’m using this setup most often on Linode VPS, however none of the instructions are Linode specific.
Continue reading “Setting up and securing web server (+MySQL +Rails/PHP) on Ubuntu 10.04 LTS”
vim is a natural choice when you’re starting a new programming project (if you’re emacs or textmate adept – you can stop reading now 🙂 If you’re starting a Ruby on Rails project there are a couple of scripts/configurations you might want to install to make development with vim an even more pleasant experience.
1. Rails.vim by Tim Pope
To install just copy autoload/rails.vim, plugin/rails.vim, and doc/rails.txt to corresponding directories in ~/.vim
Vim scripts section has a full description of the functionality. Some highlights:
- Easy navigation between models, controllers and views with :Rmodel, :Rview, :Rcontroller commands
- Syntax highlighting
- CTRL-X CTRL-U for autocompletion
- :Rtree for project tree (see item 2)
2. NERD Tree by Marty Grenfell
Another must-have. Provides you with an easy way to navigate your project tree. Rails.vim nicely integrates with this one.
3. Colour schemas
If you want to save your eyes – use dark background when developing. Personally I prefer one of the standard vim themes – Desert , but Ocean Deep is also very good.
Copy theme file to ~/.vim/colors and then use
command to apply it.
I got a new hard drive for my laptop and decided to make a leap of faith and move to 64-bit version of Ubuntu, since I had to install a fresh system anyway.
In case you didn’t know – Adobe doesn’t have stable Flash player version for 64-bit Linux. Adobe Labs offer preview release codenamed “Square” for 64-bit platforms. It can’t be installed via standard Ubuntu repositories, so get ready to get your hands dirty in the terminal.
To install 64-bit Flash player plugin do the following:
1. Download the latest version of the plugin at http://labs.adobe.com/downloads/flashplayer10_square.html (currently it is v.10.2 preview 3 from November 30th, 2010)
2. Go to your downloads directory and extract the plugin binary
tar xvzf flashplayer10_2_p3_64bit_linux_111710.tar.gz
3. Create a directory for browser plugins in your users home directory
mkdir -p ~/.mozilla/plugins
4. Move extracted in step 2 Flash player plugin binary to its new location
mv libflashplayer.so ~/.mozilla/plugins
5. Close all browser windows and restart the browser.
6. In Firefox or Chrome go to about:plugins to verify that there’s Shockwave Flash plugin available
According to Evan Weaver from Twitter it is possible for a typical production Rails app on Ruby 1.8 to recover 20% to 40% of user CPU by simply adjusting Ruby garbage collector settings. In August I set out on a quest to verify that statement on HeiaHeia servers. Results have really exceeded my expectations. Time to execute application tests locally decreased by 46%. On production servers CPU utilisation decreased by almost 40%.
While installing new Joomla modules I came across this PHP error (yep, still have to deal with PHP occasionally). I had PHP compiled from source on Ubuntu 10.04 as per earlier instructions. Quick check of phpinfo() indicated that while gd module was compiled in, it didn’t have JPEG support:
GD Support enabled
GD Version bundled (2.0.34 compatible)
GIF Read Support enabled
GIF Create Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
Making sure that JPEG libraries are installed
sudo aptitude install libjpeg libjpeg-dev
and reconfiguring PHP with –with-jpeg-dir flag (the rest of the compilation process remains the same as here)
./configure --enable-fastcgi --enable-fpm --with-mcrypt --with-zlib
--enable-mbstring --with-openssl --with-mysql --with-mysql-sock
--with-gd --without-sqlite --disable-pdo --with-jpeg-dir=/usr/lib
and then restarting nginx
sudo /etc/init.d/nginx restart
helped to solve the problem.
If you’re planning to run Rails applications on Nginx using Phusion Passenger, and do it on Ubuntu Linux, here’s what needs to be done.
Even though there’s Ubuntu nginx package available (which works perfectly when you’re running PHP apps using FCGI), if you want to take into use Phusion Passenger, you’ll need to recompile Nginx from sources.
Instructions below were verified on Ubuntu 10.04 (Lucid Lynx) Server Edition.
Continue reading “Running Rails applications using Nginx with Passenger on Ubuntu Server”
Have you moved your site from Apache to Nginx and now your FastCGI (php-cgi/spawn-fcgi) processes die/hang/crash periodically and your users see “HTTP 502 Bad gateway” or “HTTP 504 Gateway timeout” instead of a website?
I have faced this problem and found a relatively simple and robust solution. Here’s how I did it on Ubuntu 9.10 (Karmic Koala) and 10.04 (Lucid Lynx) server edition.
Continue reading “Moving Joomla, WordPress and other PHP/FastCGI apps to Nginx”
This will create a new user ‘gitosis’ and prepare a structure for repositories in /srv/gitosis. Now let’s initialize a gitosis-admin repo – it is used for managing repositories and access
Of course there’s always an option to use github. And if you’re working on an open source project, or want to concentrate on coding and not system administration, github is a lot better option than setting up and managing your own git server (I’ve been so impressed by @defunkt‘s presentation on #frozenrails, that started recommending github to everyone 🙂 But if you already pay for a virtual machine somewhere (like Linode), then setting up your own git server might be a viable option, especially that it is sooo easy.
The following instructions have been verified on Ubuntu 10.04 Lucid Lynx, but should work at least on Ubuntu 9.04 and 9.10 just as well.
Continue reading “Setting up your own git server on Ubuntu”
One of our development servers went down today. Problems started with deployment script that claimed that claimed “No space left on device”, although partition was not nearly full. If you ever run into such trouble – most likely you have too many small or 0-sized files on your disk, and while you have enough disk space, you have exhausted all available Inodes. Below is the solution for this problem.
Continue reading “No space left on device – running out of Inodes”
This was the second time I upgrade firmware on my iPhone, and second time I ran into the same problem. In the middle of the update iTunes reports “Unknown error” and iPhone dies (well, goes into recovery mode, but it is not much help). If that happened to you, don’t panic! To make this geeky combination (Ubuntu 9.04, VMware, iTunes and iPhone software update) work, there’s a little trick you need to do. Continue reading “Upgrading iPhone firmware using VMWare and Ubuntu 9.04”