External File Storage

Hi there everyone, this might seem like a noob question but...

I've got 2 servers: a web hosting server, and a database/storage
server.

I want to be able to manipulate the files on the storage server
through my rails app (read/write etc) but they need to be secure so
they can't just be in a publicly accessible folder (access determined
by the rails app). I don't have much control of the servers
themselves, so I don't think I can just hook up a private LAN... it
has to be done through the net.

What's the easiest way to do this? I've never really had to consider
it before...

Thanks!
Jonathan.

Jonzo wrote:

Hi there everyone, this might seem like a noob question but...

I've got 2 servers: a web hosting server, and a database/storage
server.

I want to be able to manipulate the files on the storage server
through my rails app (read/write etc) but they need to be secure so
they can't just be in a publicly accessible folder (access determined
by the rails app). I don't have much control of the servers
themselves, so I don't think I can just hook up a private LAN... it
has to be done through the net.

What's the easiest way to do this? I've never really had to consider
it before...

Thanks!
Jonathan.

If the storage server has an SSH server, you could use Net::SSH.

http://net-ssh.rubyforge.org/

Thanks :slight_smile: i'll take a look

Hi I had a look at that, and to be honest, I'm not too familiar with
how to share files over ssh... sftp maybe...

Maybe I'm a bit delusional, but I'm thinking this must be a more
common problem with a more documented solution surely?

I've seen people talking about hosting rails on multiple ec2 instances
a lot, how do people share uploaded images between web-server
instances? am I missing something?

Jonathan.

Hi,

There isn't a magic 'share files' button to find. You need some way to
do it, as Jeremy mentioned one way to do it is with ssh between the
servers.

From what you say, (accessing uploaded images?) what you want is a
network file system, like for example NFS (there are dozens of
different ones all with pros and cons - like NFS traditionally causes
big problems when trying to write to the same file from multiple
places since it's locking isn't too good, though is always getting
better).

That way, you can set up the filesystem from the 'server' machine
which can be mounted by the 'client'. So accessing shared files is
essentially going to a specific directory on the client (where the
file system is mounted).

Then you need to look at other things, like if you don't have a
private/internal network then you need some iptables rules to only
allow your client to talk to the network filesystem (to stop nasty
people doing naughty things to it :).

Probably some network filesystem research will get you where you want to go.

Good luck, HTH.

Malcolm.

Jonzo wrote:

Hi I had a look at that, and to be honest, I'm not too familiar with
how to share files over ssh... sftp maybe...

Maybe I'm a bit delusional, but I'm thinking this must be a more
common problem with a more documented solution surely?

I've seen people talking about hosting rails on multiple ec2 instances
a lot, how do people share uploaded images between web-server
instances? am I missing something?

Jonathan.

Well, you could use S3. Maybe that's what you're talking about. EC2 is a
compute cloud. S3 is the Amazon Simple Storage Service. You could use
that -- I think it's secure. There is a Ruby API for it.

http://www.amazon.com/gp/browse.html?node=16427261

Thanks for that! I think you're completely right about the network
file system. I've read about them before but I didn't think of it at
all. Thanks heaps everyone!

Another possibility could be to setup a VPN I guess, what's the
general opinion out there about this option?