After losing air conditioning, the main circuit breaker box and a microwave oven this month, I need to examine my finances a bit before signing up for a VPS. In the meantime, I can make a trial run on VirtualBox. I already have the open source edition installed from the Ubuntu repositories.
I download the network installer version of Debian. I opt for Debian rather than Ubuntu because it is best to set up a minimal server, only enabling services as they are needed. Ubuntu is servers made easy—maybe a little too easy as you end up with many services enabled that you do not really need.
In VirtualBox, I create a new Debian server:
On subsequent dialogs, I stick with the base memory size of 256MB, and create a new, dynamically sized disk:
Finally, I configure the VirtualBox machine to boot from the downloaded ISO installer:
The install of the OS is dirt easy. I accept every default presented to me by the Debian installer. At the very end of the install, I ensure that only the base system is installed.
After installing the OS, I boot into the server and install
openssh-server
. I then shut down the server and establish port-forwarding to the ssh server by issuing the following from the command line of my desktop:VBoxManage setextradata "eee" \The ssh server will be running on port 22 inside the virtual machine. I want to access it locally on port 2222 (to avoid conflicting with the ssh server on my desktop).
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata "eee" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata "eee" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
While I am at it, I set up port forwarding to the virtual machine's web server as well. I want to access it at http://localhost:8000, but expect the web server to be running on port 80 inside the virtual machine:
VBoxManage setextradata "eee" \I reboot and can now login via
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestwww/Protocol" TCP
VBoxManage setextradata "eee" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestwww/GuestPort" 80
VBoxManage setextradata "eee" \
"VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestwww/HostPort" 8000
ssh
:cstrom@jaynestown:~$ ssh -p2222 localhostNow I can begin installing packages. First up,
The authenticity of host '[localhost]:2222 ([127.0.0.1]:2222)' can't be established.
RSA key fingerprint is 11:5f:38:10:32:18:ea:6d:54:54:d0:4a:1a:5e:36:37.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
cstrom@localhost's password:
Linux debian 2.6.26-2-686 #1 SMP Sun Jul 26 21:25:33 UTC 2009 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Aug 10 20:58:16 2009
sudo
—I am spoiled by Ubuntu and almost habitually type this command when doing sysadmin work. I configure it for my user by editing the sudoers file via visudo
and making the following change:# Uncomment to allow members of group sudo to not need a passwordThen I add myself to the
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=NOPASSWD: ALL
sudo
group with the vigr
command, making sure to add this line:sudo:x:27:cstromI save that, logout, log back in as myself and now have sudo privileges.
First up is CouchDB, of course:
cstrom@debian:~$ sudo apt-get install couchdbNice. I was a little worried that Debian might not have it. Unfortunately, I note:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
erlang-base-hipe erlang-nox libicu38 libltdl3 libmozjs1d libnspr4-0d libsctp1 lksctp-tools odbcinst1debian1 unixodbc
Suggested packages:
erlang-x11 erlang erlang-manpages erlang-doc-html libmyodbc odbc-postgresql libct1
The following NEW packages will be installed:
couchdb erlang-base-hipe erlang-nox libicu38 libltdl3 libmozjs1d libnspr4-0d libsctp1 lksctp-tools odbcinst1debian1 unixodbc
0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Need to get 36.1MB of archives.
After this operation, 64.1MB of additional disk space will be used.
Do you want to continue [Y/n]?
...
...I think that the 0.9 version in Debian testing will work, so I add the testing repositories to
Setting up couchdb (0.8.0-2) ...
...
/etc/apt/sources.list
:#...And the re-apt-get
deb http://http.us.debian.org/debian testing main contrib non-free
deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free
deb http://security.debian.org testing/updates main contrib non-free
couchdb
.While that is installing, I tar up my seed data and scp into my VirtualBox:
cstrom@jaynestown:~/repos/eee-code/couch$ tar czf seed.tar.gz seed/To load my CouchDB docs using my couch_docs gem, I need to install ruby, ruby-dev, rubygems, make, curl, and git via
cstrom@jaynestown:~/repos/eee-code/couch$ scp -P 2222 seed.tar.gz localhost:
cstrom@localhost's password:
seed.tar.gz 100% 33MB 33.0MB/s 00:01
apt-get
. I then add Github gems to my gem sources:cstrom@debian:~$ gem sources -a http://gems.github.comI can then install the necessary gem:
cstrom@debian:~$ gem install eee-c-couch_docsNext, install
WARNING: Installing to ~/.gem since /var/lib/gems/1.8 and
/var/lib/gems/1.8/bin aren't both writable.
WARNING: You don't have /home/cstrom/.gem/ruby/1.8/bin in your PATH,
gem executables will not run.
Building native extensions. This could take a while...
Successfully installed json-1.1.7
Successfully installed rest-client-1.0.3
Successfully installed eee-c-couch_docs-1.0.0
3 gems installed
Installing ri documentation for json-1.1.7...
Installing ri documentation for rest-client-1.0.3...
Installing ri documentation for eee-c-couch_docs-1.0.0...
Installing RDoc documentation for json-1.1.7...
Installing RDoc documentation for rest-client-1.0.3...
Installing RDoc documentation for eee-c-couch_docs-1.0.0...
curl
via apt-get
so that I can create a CouchDB database:cstrom@debian:~$ curl -X PUT http://localhost:5984/testMy first attempt at uploading my docs results in a missing SSL error so I
{"ok":true}
apt-get install libopenssl-ruby
. Finally:cstrom@debian:~/seed$ ~/.gem/ruby/1.8/bin/couch-docs load . http://localhost:5984/testThis returns no errors (I really ought to add a progress bar). To verify that the documents were loaded correctly:
cstrom@debian:~/seed$ curl http://localhost:5984/test/_all_docsNice! Less than two hours to get a new server up and running with a populated CouchDB server. I will spend a little time tomorrow getting Sinatra running.
{"total_rows":1080,"offset":0,"rows":[
{"id":"2001-08-28-index","key":"2001-08-28-index","value":{"rev":"1-3668530879"}},
{"id":"2001-09-02-chicken","key":"2001-09-02-chicken","value":{"rev":"1-3695932843"}},
{"id":"2001-09-02-potatoes","key":"2001-09-02-potatoes","value":{"rev":"1-3302760032"}},
{"id":"2001-09-03-index","key":"2001-09-03-index","value":{"rev":"1-67963691"}},
...
The VirtualBox NAT is what keeps me from using it. I want full access to my VMs without running some configuration tool.
ReplyDelete