...more recent posts
One good thing about not being an expert is that when you get something to work it feels like a blessed event has occurred, rather than something routine just happening the way you expect.
I took the server in just before noon this morning. Slid it into my little cage (looking enviously at the beautiful Apple Xserve someone else had in the cabinet above mine.) Hooked it up and booted not really knowing what to expect. Theoretically the machine was all set up and should just work. Realistically I knew this might not be the case.
And of course it wasn't. The server booted, of course, and everything *seemed* okay, but I couldn't get out onto the net. And I figured if I couldn't get out, certainly no one else could get in. Ugh. What a horrible feeling. I didn't even really know where to begin.
So I left and came back here and started googling. Wrote some frantic messages on some discussion boards. Even fired off an email to an old college friend who is a professional geek asking if he knew of anyone I could hire for a day.
I didn't get too far with my research, but I did figure out a few things to look for. And I knew in order to get anyone else's help I would have to have some detailed info that I didn't have (not having any access to the server from here.)
So I headed back to the colo. Turns out to be ridiculously convenient from my place - 4 stops on the J M Z. Anyway I set up again. They have carts with some monitors and keyboards on them for everyone to use, and you just wheel one over in front of your cabinet and hook it up. I decided, what the hell, I'll just wipe the hard drive and install from scratch. I didn't really think this would work, but I didn't really have too much to go on.
After a short spell in a strange place called boot loader hell - and a second complete wipe and install - I finally got back to where I was before. Broke. So I started taking the careful notes I would need (like the outputs of ifconfig and route -n as well as the contents of /etc/hosts, /etc/sysconfig/network, /etc/sysconfig/network-scripts/ifcfg-eth0, and /etc/resolv.conf) and started packing up, more than a little depressed at my failure right out of the gate.
But by pure luck one of the guys who works there walked by and sort of asked off handed how I was doing. More out of politeness than from actually wanting to know how I was doing. But I answered anyway, saying I was having some trouble, but also that I was just learning, and I sort of expected to run into trouble. I really didn't think it could possibly be their fault. He made a few suggestions which made sense, the best one being to hook my laptop to the ethernet connection and see if I could get that to work.
Of course. Good idea since I am very comfortable networking on the powerbook. This would help isolate where the problem really was. And the exact same thing happened. Everything configured like it was okay, but then I couldn't get anywhere. Pings just timed out.
The guy had gone around the corner where the big switches were for a minute, and when he came back he had a real sheepish look on his face. "How much time did you waste on this?" he asked. Turns out he had plugged me into the wrong switch. "Try now" he said, and I did, and it worked. Just like it was supposed to.
Hey, this stuff is easy!
Just got my IP addresses. Server goes in tomorrow. My goal is just to get it up and running and to be able to SSH in using an IP address. Then over the weekend I will hope to get DNS working and to make Apache respond to a domain name. If that all works I will pull the trigger on the new server next week. Not sure how long that will take build and arrive. I'm hoping about a week.
Volunteer needed. Here's your chance to be part of the empire! :-)
The colocation facility has the usual high tech key card security. I want to list someone else to be issued a second key card. Responsibilities would be minimal, and include taking one trip down there with me so I can show you how to reboot the server (just flip the switch - going down there is just so you know where it is and where the switch is,) and then actually going down there and rebooting the server if it ever needs to be and I am not in town. Most likely this would never happen, in large part because I am almost always in town. Still, it is nice to have a backup.
Eventually, if the business side of things works out, this would be something I would pay someone for. For now though I won't be moving any business accounts to the server (until I know it is stable,) and the only thing that will be there will be digitalmediatree. As such I am looking for a volunteer.
Not really a big deal - I'm sure I can add someone later. And I am certainly not going to be out of town in the near future since I am trying to get everything going. But if this sounds not so horrible to someone here let me know and I will get you a card. Thanks!
Just committed verbally to the colocation arrangement. Waiting for faxed documents. Hopefully the test server will go in over the next few days.
I have restarted talks with the colocation facility here in NYC. Getting close.
After many many reinstalls today I have finally made a little more progress. The server comes up on my local network and I can ssh in to it from my laptop. Plus Apache is set up and running and will serve files over the local network. Again, this is all pretty easy, but that dosen't mean it doesn't feel good the first time you see a page from your server load up in a browser on a different machine. It's alive!
Notes for myself (so I remember when setting up the real server.)
Install minimal system from disc, then:
rpm --import /usr/share/doc/centos-release-4/RPM-GPG-KEY
yum upgrade
yum install perl-DBD-MySQL mysql-server mysql php-mysql mod_auth_mysql openssl-devel openssl mod_ssl php-devel php httpd rpm-build rpm-devel gcc perl-CPAN autoconf automake
Make sure apache and mysql start on every reboot:
chkconfig httpd on
chkconfig mysqld on
And start them both now (since we don't want to reboot):
/etc/init.d/mysqld start
/etc/init.d/httpd start
Finally have a local network set up here behind the cable modem (I had just been switching the one ethernet cable back and forth between machines depending on what I was working on.) Wireless too, although that is just a little bonus. Anyway, now I can test my server setup more easily, using the laptop as a client. Quiet weekend here, so hopefully I can get a lot done.
I found this ridiculously helpful site of Johnny Hughes which has a bunch of tutorials for setting up a CentOS server. Johnny Hughes is one of the principal maintainers of CentOS. It's very cool that he seems to care so much about helping newbies like myself.
With support like that it really is pretty easy. To set it up at least. I guess the problem is just if something goes wrong. Do you know enough then to fix it? To not lose data? To get back up again quickly? I'm trying to learn as much as I can at this point so as to move the answers to those questions towards yes if anything ever does go wrong.
The last non technical hurdles have been cleared. It has been a strange experience interfacing with the government and the banking industry. These are things I do not have a lot of experience with, and so I was very nervous and kept putting everything off. Turns out it's all pretty easy. Go figure.
Also, I finally have a desk set up at World HQ, so I am no longer sitting on the couch and trying to work. That ought to triple my productivity right there (wouldn't take much, but hey....) Still need a chair though.
Was looking at servers again last night, and of course now that I have waited and thought about it for a while I am tempted to upgrade to the next level. But it's hard to figure. Seems stupid to buy something and then run out of storage right away. On the other hand there isn't much point in buying storage ahead of time since the prices keep dropping so rapidly.
Someone left a slightly larger and much nicer Dell Trinitron monitor in the world headquarters' garbage area. Thanks! I'm taking it as a good sign (after just taking it.)
I am really enjoying learning so much more about linux. What an amazing thing. Has anything else ever been built that is so vast, and at the same time so transparent? The more I learn the more it boggles my mind. All the information you need to learn about the system is an integral part of the system itself.
Every command has a corresponding manual page. You read these manual pages from the command line by typing 'man [command]'. So to read the manual page for, say, the command ifconfig you just type 'man ifconfig' and it spits out a page detailing the proper syntax for this command, a brief description of what it does, and a list of all options. And everything has a man page.
Of course, if you're rather new to the whole thing like I am, and you really don't know what a command does, the man page might be a bit terse. No problem though, that's what google is for. The amount of information is just staggering. Sharing information about the system is built into the social fabric of the community much the way man pages are built into the fabric of the system.
It's very cool. But that's not to say it's easy. People who know how to do things tend to answer questions in a way that puts you on the right track, rather than just telling you exactly how to do it. It's a "teach a man to fish" philosophy. It's not always what the newbies think they want (myself included when I am really stuck,) but it is a great way to learn. It forces you to learn.
But even beyond man pages and google (and mailing lists which I will talk about later,) more serious adepts have the best learning tool of all - the actual code itself. If you don't know why a certain command option isn't working like you thought it would, and the man page is no help, and you can't find the answer in google, you can just open up the source code for that command and start reading. Even if you don't understand the code itself, it will be heavily marked up with human readable comments.
I guess this is the ultimate source of the transparency. Good programmers document their code as they go so that other people, without access to the original programmers mind, can look at the source code and understand it. Documentation is not an after thought, but is, like I said before, an integral part of the thing itself. And this philosophy extends from the source code ground up.
You can drive a car your whole life and never understand how a carburetor works; but if you administer a computer running linux you are going to eventually get a sense of how the internals work. You almost have no choice. Because of the transparency, learning how to do things is the same as learning how things work.
To me this is fascinating, but it also means that there is a lot to digest. Here's an example. I am beginning to think very concretely about how to organize the file system on the future server. Like many things in this world, there is no "right" way to set it up. Linux is very flexible which allows you to do almost anything, including shooting yourself in the foot in an almost infinite number of ways. In order to insure I don't shoot myself in my foot - *for my given situation* - no one can give me a foolproof recipe for success.
Instead, the people who have the knowledge tend to lay out how they do it, and more importantly *why* they do it that way. They explain the underlying considerations that made them choose a certain path, and by elucidating those underlying conditions (by teaching you about how it works at a more fundamental level,) you can then come to a conclusion for your given situation.
This, again, is the transparency. There are no right answers, except to explain how things work on the next level down. So when looking for answers you are quickly sucked many levels deeper than you might have originally thought you needed to go. And hence you end up learning a lot.
Here is where I ended up in researching file system layout. I don't really need to know all that (nor do I even begin to understand all that!) What I am trying to do is not overly mission critical (lives aren't going to be hanging in the balance,) and it is also not going to have to scale very much, nor will it really be in danger of taxing modern computer hardware. But still I am reading stuff like this, and slowly beginning to get a fuzzy picture of these deeper levels. And that seems to be the linux way. It's turtles all the way down.
Less abstractly (sorry to make you slog through all that,) I could imagine the test server going to the colo here in NYC at the beginning of week of the 18th (about a week from now.) And then the new server will follow quickly after that.