Quick Tip: Solve skipping audio in Wine »
Created at: 14.10.2009 06:57, source: Hackido, tagged: pulseaudio karmic wine ubuntu
If you're using Ubuntu Karmic Koala or Jaunty Jackalope then you may be familiar with Ubuntu's decision to use Pulseaudio to handle sound. Although there are lots of shortcomings with Pulseaudio, the ability to set different sound levels in different apps seems to be a big win. Unfortunately, ever since moving over, my audio performance in wine has been terrible. It skips, sounds scratchy, and eventually just stops. Here's how to fix it.
First thing you'll need to do is install a new software source. Launch the Software sources application and add these two lines:deb http://ppa.launchpad.net/neil-aldur/ppa/ubuntu karmic main
deb-src http://ppa.launchpad.net/neil-aldur/ppa/ubuntu karmic main
Once done, run this command from terminal to add the correct keysudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys D3E49C82
Finally, update your sources and install a new version of wine.sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get remove wine
sudo apt-get install wine1.2
Assuming the you have an existing wine app that you run from the .wine directory, simply select "Configure Wine" from the Applications menu. Click on the Audio tab and unselect whichever current sound driver you are using (probably Alsa or OSS) and instead select the PulseAudio driver.
If you click Test Sound and hear something then you're good to go! Quit the winecfg application and go use wine again! If all goes well, your skipping audio should be gone. Many thanks to Neil Wilson for the good work!
more »
Quick Tip: Nginx and cap deploy:web:disable »
Created at: 04.06.2009 06:31, source: Hackido, tagged: rails nginx jaunty jackalope ubuntu
If you've followed my instructions for installing Ruby on Rails in Ubuntu you may have felt ambitious and also gotten Capistrano working too. The only issue is that, by default, nginx doesn't work with Capistrano's web:disable task. In order to get that working, you'll need to get your system folder setup, add a snippet of code below your server block and then restart nginx.
1. First let's add that snipped of code to nginx. If you installed nginx via phusion, then your configuration file is in /opt/nginx/conf/nginx.conf. Use any editor to add these lines within the server{} block:if (-f $document_root/system/maintenance.html) {
rewrite ^(.*)$ /system/maintenance.html break;
}
2. Now that this is done, give nginx a restart:sudo /etc/init.d/nginx stop
sudo /etc/init.d/nginx start
You can now try disabling the application using the capistrano task:cap deploy:web:disable
3. If you get an error, that says:Net::SFTP::StatusException (Net::SFTP::StatusException open /var/www/my_app/shared/system/maintenance.html (2, "no such file"))
Then you'll need to create a system folder. So log into your remote server and make sure that the you have a system folder with the right permissions setup.mkdir -p /var/www/my_app/shared/system
Try it again:cap deploy:web:disable
If it worked this time then you're done! Just don't forget to enable the server again using:cap deploy:web:enable
Otherwise, be sure to check out the error message (most like a permission issue).
more »
Update your rails stack from Intrepid to Jaunty »
Created at: 05.05.2009 06:23, source: Hackido, tagged: ruby rails jaunty jackalope ubuntu
If you've got a Rails Stack built on top of Intrepid Ibex and you want to update it to Jaunty, I've got some good news in that it's pretty easy. Depending on what you have installed though you may need to do a little extra repairing. Here's a quick step by step detailing my experience.
The first thing you must do is make sure your system is up to date:sudo apt-get update
sudo apt-get dist-upgrade
Install any packages that are out of date. After that, time to get the update manager:sudo apt-get install update-manager-core
Since we're upgrading from Intrepid Ibex to Jaunty Jackalope there shouldn't be a reason to modify any other files like you might when upgraded from the LTS. So get straight to the matter by running this command:sudo do-release-upgrade
Follow the on-screen instructions. If you're not an advanced user, I'll recommend just taking whatever defaults you are prompted with. Once you're done, reboot!
A couple of things went wrong with my upgrade. First, my Passenger Phusion install went awry. This was 100% my fault though for not upgrading the right way. Just in case you missed it, follow the instructions on the official blog.
The second thing I needed to fix was my rmagick install. A key library got removed and so it was back to the drawing board. Luckily, I found some easy instructions courtesy of Rob Britton.sudo apt-get install libmagickwand-dev
sudo gem uninstall rmagick
sudo gem install rmagick --no-ri --no-rdoc
And with that you should be done, and hopefully enjoying your upgraded stack. It also couldn't hurt to do a sudo gem update just in case you have some old crud hanging around.
more »
Install Ruby Rails on Ubuntu 9.04 Jaunty Jackalope »
Created at: 20.04.2009 15:56, source: Hackido, tagged: ruby rails jaunty jackalope ubuntu
It's getting easier to install Ruby on Rails all the time. I thought about skipping actually writing this tutorial until I heard that Phusion Passenger 2.2.0 supported Nginx. I was pretty psyched and so ran off to do an install with that new stack. If you want a head start on it or need a step by step tutorial then by all means click through for instructions.
Update: Version for Karmic Koala now posted.
Step 1: As usual, the first thing we'll want to do is make sure your version of Ubuntu is up to date.:sudo apt-get update
sudo apt-get dist-upgrade
Step 2: We'll be installing some software that needs to be built so we'll need to get packages required for compiling. Luckily, you can type this single command and get everything you need:sudo apt-get install build-essential
Step 3: Once you've got the tools, it's time to install MySQL and Ruby. If you're using SQLite you may not need all this stuff. Otherwise, just copy and paste this command into your terminal if you're in a hurry.sudo apt-get install ruby ri rdoc mysql-server libmysql-ruby ruby1.8-dev irb1.8 libdbd-mysql-perl libdbi-perl libmysql-ruby1.8 libmysqlclient15off libnet-daemon-perl libplrpc-perl libreadline-ruby1.8 libruby1.8 mysql-client-5.0 mysql-common mysql-server-5.0 rdoc1.8 ri1.8 ruby1.8 irb libopenssl-ruby libopenssl-ruby1.8 libhtml-template-perl mysql-server-core-5.0
If you hadn't previously installed MySQL you'll be asked to set a root password. You don't have to, of course (it will bug you no fewer than 3 times if you opt not to) but I strongly recommend it. You'll need this password when you populate your rails config/database.yml file so be sure not to forget it.
Step 4: Grab the latest ruby gems and install them. As always be sure to check rubyforge.org to make sure you're grabbing the latest one. As of this writing it's 1.3.4 but it never hurts to confirm.wget http://rubyforge.org/frs/download.php/57643/rubygems-1.3.4.tgz
tar xvzf rubygems-1.3.4.tgz
cd rubygems-1.3.4
sudo ruby setup.rb
Once it's done you can remove the .tgz file and erase the rubygems-1.3.4 directory too.
Step 5: On the command line, type gem -v. if you get this message we need to make some symlinks:The program 'gem' can be found in the following packages:
* rubygems1.8
* rubygems1.9
Try: sudo apt-get install
-bash: gem: command not found
Let's create those symlinks now: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
Step 6: Install Ruby on Rails! You can leave off the --no-rdoc and --no-ri switches if you're on a machine with plenty of ram. But just in case you've got a more modest setup (say 256MB or less) I'd just use the following:sudo gem install rails --no-rdoc --no-ri
If you're just doing local development then you are basically done. You may want to install additional gems (such as mongrel). If you want to deploy Ruby on Rails onto a server then it's time to setup Nginx and Phusion.
Step 7: The folks responsible for Phusion (Hongli Lai & Ninh Bui) have done a remarkable job. They truly understand what it means to make using your product easy for customers. It's one reason we love Phusion. Nginx doesn't support loadable modules like Apache does, so Phusion will download, compile, and install it for you. What could be easier? To get started, let's download the packages we'll need:sudo apt-get install libc6 libpcre3 libpcre3-dev libpcrecpp0 libssl0.9.8 libssl-dev zlib1g zlib1g-dev lsb-base
Step 8: We're going to create a directory for your application. In anticipation of Capistrano, let's put it in /var/www/myapp/current. Swap out the myapp with anything you like.sudo mkdir -p /var/www/myapp/current
If you've got an existing Rails application, it doesn't hurt to populate that directory now. Just make sure that the root to the public directory is /var/www/myapp/current/public. Don't forget to chown it for www-data:sudo chown -R www-data:www-data /var/www/myapp/current/
Step 9: Now it's time to install Phusion Passenger and let it do it's magic. It's critical that you have Phusion Passenger 2.2.1 or greater installed. This may not work with 2.2.0.sudo gem install passenger
sudo passenger-install-nginx-module
At this point you'll be greeted with two options. The first will allow Passenger to do all the work while the second, for advanced users, allows you to point Phusion to your pre-installed Nginx. We're going to make life easy on ourselves and choose option 1. I'd also recommend keeping the default path (/opt/nginx).
The Nginx configuration file (nginx.conf) file is in /opt/nginx/conf/ They've done you the favor of adding the lines you need to get going. Defining the configuration file is beyond the scope of this tutorial, but I've included a sample file which you can download. This file assumes your application is in /var/www/myapp/current.
Sample nginx.conf file for Ruby on Rails, Nginx, Phusion Passenger.
Step 10: Time to make some Nginx tweaks for Ubuntu/Debian. If you're used to running nginx as installed by Debian or Ubuntu then you might notice that you've lost the familiar way to start and stop nginx. Gone is /etc/init.d/nginx stop and /etc/init.d/nginx/start. To get it back, copy (or download) this into a file called nginx in /etc/init.d/ (as root)#! /bin/sh
### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO
PATH=/opt/nginx/sbin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/sbin/nginx
NAME=nginx
DESC=nginx
test -x $DAEMON || exit 0
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
start-stop-daemon --stop --quiet --pidfile \
/opt/nginx/logs/$NAME.pid --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --pidfile \
/opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
;;
reload)
echo -n "Reloading $DESC configuration: "
start-stop-daemon --stop --signal HUP --quiet --pidfile /opt/nginx/logs/$NAME.pid \
--exec $DAEMON
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0
Next, let's set the permissions and make nginx load on a reboot:sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults
Now you should be able to start and stop nginx using the command you're used to:sudo /etc/init.d/nginx start
Bonus step In case it's not already installed, let's grab the perquisites and then install the mysql gem. This will improve performance on your webserver:sudo apt-get install libmysqlclient-dev
sudo gem install mysql --no-rdoc --no-ri
Troubleshooting If things didn't go smoothly, here are some things to check:
1. There's an error log for nginx in /opt/nginx/logs/ Try looking to see if you get any hints there.
2. If you see a 403 forbidden error, make sure you have permissions set correctly. I'm running Nginx as www-data and I've set the group/user owners of my rails app to match using the chown -R www-data:www-data command. It doesn't hurt to confirm it.
3. Try running your rails app in development mode using the standard script/server. If it doesn't work there then it obviously won't work in production mode either
For help, you should check out the great railsforum or Mailing list front-end.
more »
