Posts Tagged ‘unix’

nginx reverse-proxying unicorn

After the experiments detailed in my last post, I faced today the need to have clean ruby/gems environments for each project I deploy on my Amazon EC2 server. Just like on my development machine, I wish to use <code>rvm</code> to make a separate gemset for each application.

However, to be able to run each app in its own environment, using a dedicated ruby-server instance is needed. Like described in my previous post, I was using Passenger to do that. Trying to deploy a ruby-1.9.2 / rails 3.1 app, I could not get Passenger Standalone installed due to some rake > 0.9.0 incompatibilities. This required to get the last version of the Passenger gem on GitHub, what I can’t do with my current knowledge.

Since I was using Passenger to make deployment easier, I was wondering if it was still the case. And I was feeling like it was getting a very big machine running for each app, while there was surely other solutions. And sure there is! There are other ruby production-class servers which can be used: Thin, Unicorn, and surely many others. And since I’m reverse-proxying through nginx, I can use any of them.

So, from now, I’ll be using Unicorn. It’s much more easy to get it running, no need to have a complex and hazardous installation process, just add it to the Gemfile, bundle install and get it running. I think it will do the trick for now.


nginx + Rails (through Passenger) on different Rubies + PHP, all this on Amazon AWS

Hi everybody!

It’s been quite a long time since my last post… I have lots to do, I’m working on a startup project and I’ve now another blog on which I have to write. I do not spend so much time developing, and almost not any more for Cocoa…

Due to my project I’ve been switching to web application technologies, and since I’m looking in the startup ecosystem, I’ve been looking at Ruby On Rails. After having played a little with Heroku, I wanted to start with a more customized hosting experience, so I’m now testing Amazon AWS service, through their free 1-year tier (allowing a sufficient cloud hosting for my purpose).

However, since I found the road quite long to reach a working config (I’m really newbie as sysadmin), I put all the things I went through on an Evernote page, and now I’m sharing them with you. It’s raw, I’ll try to refine all this with the time, but it may help nonetheless. And feel free to ask for help, I’ll do what I can 😉

Read more…

Snow Leopard, 64bits, Ruby and MySQL

I recently started again wanting to play a little bit with the so acclaimed Ruby on Rails framework. Being on a Mac, I had not much to do to start working, with Ruby & RoR already installed with my Snow Leopard default OS X install (maybe because I’ve already installed the XCode Developer package, as well as the iPhone’s one… maybe you should check). So I was playing with my Ruby on Rails’ guide and I had already started building a project, having it displayed in my browser, so I knew the core of the install was up and ready.

Next step was to connect with MySQL. It proved not to be so simple as expected… Running rake db:migrate to check Ruby was well connected with MySQL lead to the following errors (both errors came repeatedly during my way to the solution, given below…):

  • uninitialized constant MysqlCompat::MysqlRes
  • dyld: lazy symbol binding failed: Symbol not found: _mysql_init
    Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/

After some research and tests following different articles on the net, I finally got with a working solution (however please notice that it applies to an Intel Mac with 64bits processor under Snow Leopard):

  • Install the latest x86_64 MySQL release (currently the mysql-5.1.53-osx10.6-x86_64). Several articles on the net will tell you the problems are due to the 64 bits version, you should install the 32 bits one, and so on. In my case, I tried both and it worked with the 64 bits one.
  • Make it work! Check the install documentation, connect with mysql, start the server… to be sure everything is working. A good thing would be to be able to connect to it with phpMyAdmin for example (which I did).
  • If you had already install the mysql gem (which you should have to need this page because you must have faced the previously mentioned issues…), uninstall it with sudo gem uninstall mysql.
  • The trick is then to reinstall it with the following command line: sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config which ensures the gem is installed for the 64bits architecture, matching the MySQL one.

Then, you should not face the previous problem any more, maybe some access denials due to misconfiguration in your RoR’s project “database.yml” file or your MySQL configuration. But the Ruby/MySQL connection should be OK!

Categories: Mac OS X Tips Tags: , , , , ,

Good vibes on keyboard for Mac virtualizing Linux

After advancing blindfolded for a while, I finally put my hand on the good configuration for getting Ubuntu working nicely with my little Mac’s keyboard!

Needing to do some terminal’s configuration, I can hardly use the virtualized system without being able to type these little chars: |, \, {, }, [, ] and such bizarre things…

Just cutting to the end: here is what you want to see on your Ubuntu’s keyboard settings (may not be exactly the same in English, my Ubuntu is in French and I’m making the translation, sorry in advance):

  • Apple for keyboard model,
  • France-Apple Macintosh” for keymap (France is for me naturally, you’re supposed to get your own country there),
  • Edit keymap options:
    • key(s) changing the setting: I selected “Alt+Shift”,
    • key(s) selecting the 3rd level: I chose “Any Alt key”.

And now I’m very happy since I feel almost like on Mac OS X while typing on my virtualized Ubuntu machine!

Read iTunes Connect weekly reports within Open Office or Excel

Getting these iTunes Connect’s weekly reports, but wondering how to get something useful from them? Not quite sure what to make of all this text files?

Just use this script to transform your weekly reports and read them easier in OpenOffice or Excel! What can this script do for you?

  1. Concatenate all files to get them in one big file, with one header line.
  2. Transform tabs to semi-colons, ensuring a better column recognition when opening with the worksheet editor (I was having some shifts with tabs due to spaces in my app’s names).
  3. Add the file’s date as a new column in the output file, from the files’ names, allowing to have a column indicating the week of the report in the same format all over the document. In my case indeed, the format of the dates provided by the reports are changing over the time, making it harder to get readable information from them.
  4. For French developers like me, it is better to have colons than dots in number fields, so it replaces dots by colons, in order to have numbers recognized as such. In countries preferring dots as decimal separators, you should rather remove this part of the script or you won’t be able to get numbers recognized too.

Here is the script! Have fun! (in my case, I then opened the output file and began making “cross-dynamic-tables” (don’t know how to translate it from french “tableau croisé dynamique”).


Reminders on UNIX bases

Trying to set up a small Web server for development and testing in a VirtualBox virtual machine on my computer, I installed a text-only Debian. This now requires to look back in my souvenirs if I still have something on how to configure such an environment.

So here below are some tips that may help you solve problems when doing so, and that you may welcome to see took together here… (However, if you find errors or wish to complete them, do not hesitate to do so by commenting the posts.)

First tip: How to identify which services are set to start at launch?
I cannot give you the details right now, but you should surely have a look (understand do a web search) on /etc/rc0.d, /etc/rc1.d and so on. These folders contain links to service binaries set to launch (or not) depending on which configuration the server is launched in (for what I can remember, single-user, text login, graphical login, remote login? etc.).

%d bloggers like this: