Installing Ubuntu 8.10 Server
For many people who've been doing Windows a long time, the hardest part of moving applications to a Linux server is just getting over the fact that you're doing it.
I wondered whether it would be silly to step through the screens of an Ubuntu installation instead of just saying "download it and install it, ya jamoke" but then last week I had to take my 5 year old son to get allergy tested and that experience flipped my switch...
We'd gone out of our way to be honest but not overt about anything that would scare him but he was still nervous when the nurse brought in the trays of test "pokers". What got me was how cool it was that the nurse took out one tester and handed it to the boy and said "Here, see this little thing, looks like the Space Needle doesn't it?" And he let him hold it and give it a real look-over, while pretending to be doing something else for a minute. Then he said "bounce that on my arm" whereupon da kidd jammed it into the nurse's skin like a Power Ranger weapon. Then he said "well, I'm not going to do it that hard", took the tester back and gave my boy's hand a little gentle poke.
Get it? Because the boy had held the tool and gotten comfortable with it at leasure before it was used for real it removed a lot of the trepidation. While some of the tests obviously stung a little, just having seen the tool first set his mind at ease considerably.
And so below you'll see the Ubuntu before it comes up and surprises you.
My son didn't have any allergies, and I don't think you'll have any great issues with your server.
A Linux server is just another OS to put code on and there isn't anything that's amazingly different about getting things done. If you're old enough to remember DOS, have used telnet to manage a hosted domain and/or recall doing a few things at the commandline then it will all come back to you quickly. If you have loads of experience in Windows Servers like setting up webapps in IIS, don't worry, your experience is going to help you out because all the exact same things have to be done, you just don't have a unified clickable UI to get it all done with one hand.
Don't skimp on the hardware but don't spend what you don't have
This is the "before you begin" part.
You need a good box to run as your server. Forget the crap about Linux running rings around Windows with 2MB of RAM on a 386 chip. That's like saying Macs can't get viruses.
If possible put your OS on at least the same level of box you'd put a new Windows Server installation on.
Reality check... from a guy who's had "real" rack servers sucking the juice and shaking the house... SOHO & Home Geek & Small company folks, be realistic: My Mail Server, SQLServer2000 Standard and two low volume friend-domains have been running for years on a Windows2003SBS 1.7GHz Celeron with 736MB RAM and they just keep working great. So if you're strapped for cash and you have something like that in the corner then it's a workable start... go for it and get going till you can afford better. However, if you have some wiggleroom then to give the OS devil its due you can hit BestBuy and get a dead-silent 2.6GHz dual core AMD HP slimline with 3GB of RAM with rebate for $350 (the same price I originally paid for that 1.7GHz Celeron box, by the way). Don't buy a rack server till you need it. Don't let having an ugly non-RAID user box keep you from starting.
Know your networking
If you're doing this on a laptop for testing and not really intending the machine to be an active server, you may be tempted to use your Wifi. Have fun with that :-0. Installation is best done with a physical ethernet connection to the internet via your router. Wifi usually "just works" on Macs and Windows but it adds headaches to most all Linuxes so I'd suggest plugging in to do the install.
The installation process requires an active internet connection to set your clock and get updates. While the installer will default to using a DHCP IP Address you'll probably want to be using a static IP address. This is a Server after all, and you want to make sure that every time it boots up it gets the same address so that external port forwarding and internal connections always go right to the correct box.
Check your router and if it only doles out IP Addresses on demand with DHCP, you'll likely want to restrict the address range for DHCP so that there's another range of addresses that can be trusted for manual IP setting and you'll use one of those. See your router instructions for details specific to your model.
While you're in your router's screens write down the internal SubnetMask and Gateway values because you will be prompted for them when you use the manual address setting step.
Don't set any router firewall exceptions or port forwards for the new box yet. Access it only from within the internal network till we get you covered on some security stuff in a little bit.
BTW: The networking step only gives you a handful of seconds to choose manual setting instead of automatic DHCP. Don't fret it too much if you're looking the other way and miss it because you can reset the IP Address information manually at the commandline any time after the OS is fully installed.
Do the download & Make your install disk
Ubuntu 8.10 is still pretty new as of my writing this so you can still go to most newstands and get it pre-burned with a Linux oriented magazine. If those days are gone then download the latest Server ISO from Ubuntu.com.
Standard BitVersioning applies: If your box is 64bit chipped and you have over 3GB of RAM, feel free to get the 64bit version. And even if you have 64bit chips you can feel free to use a 32bit OS edition if you want but, just like Mac and Windows, the 32bit OS will have the 3GB RAM limit no matter how much memory you have in your slots. Like Windows, the 32/64bit OS choice isn't as big deal for a Server as it is for a desktop because desktops need video and wifi and audio drivers and support can be flakey but Servers just need to hit lower level stuff that's pretty much common denominator these days. Heck, download and try them both, learn something out of it :).
If you don't have Roxio or another general purpose disc burning utility you may still have an ISO burner tool wrapped up as a gimme feature of a video or audio software suite, search your software help for "ISO image". If not, then just download CDBurnerXP or ImgBurn they're both free and fast and both run fine on Vista.
Stick it in there already
Here we go. Turn on your machine. If it is a brand-spanking-new box you should get into its pre-installed OS and do the steps to make a restore disk set. Just in case you hate Linux and want to bring the machine back or repurpose it to something else. Ok, when you're done with that, stick your Ubuntu Boot disk in the drive, close it up and reboot.
If you don't get right into the Ubuntu splash screen, boot again and use the manufacturer's hotkeys to go into your BIOS (via "setup") or possibly use the instant bootmenu option to set the boot order to hit the DVD drive before the hard drive.
You're about to set up a *Server* so I figure you know what the heck I'm talking about... but I took this picture and it's such a pretty blue, I had to explain why I was showing it :)
First thing you'll see is the Language picker... pick one
What did the previous language picker do? It made it so you can read this screen. Use your arrow keys to select the top option "Install Ubuntu Server" and hit enter.
And... another Language picker. Pick it for the second time in as many seconds
First decision point: Keyboard Detection
Here's one that threw me the first few times. The setup has a nifty little feature where it can try to figure out what keyboard type you're using. If you use it you get a whole series of screens asking you to press buttons on your keyboard matching what they show on screen.
Everything is fine with this wizard except for near the end they ask:
Does your keyboard have this symbol
That's a double quote inside two single quotes. Because all of the previous screens did the same thing such as putting the letter P between two single quotes like 'P' and the letter Q like 'Q' you'd figure that they wanted you to press the double quote key on your keyboard.
If you're a USA person desiring a standard USA locale and codepage/format DON'T press that button.
If you do then apparently the wizard will give your box the wrong locale/format setting (USA Alternative International, I believe) and every time you're typing something in a text file or on the command line that needs a single or double quote character you'll get a blank space till you press a second key. It's really annoying and it also screws up applications that need to read any text files in an expected USAStandard ASCII format (such as any config or ASP.NET page/code files that you copy over from another Mac or Windows box).
Maybe it's just me, but it happened exactly the same on three different installs to three different OEM machines, not just the HP.
Instead of using the cool wizard, use your tab key to move the red highlight over to the "<No>" option, then hit enter.
And pick your keyboard and layout using just the next two screens
Sit back for a few seconds....
Next decision point: Networking
Here comes the DHCP part we mentioned in the beginning. If you want the install to set up your machine to a potentially transient IP Address, just let it go, if you want to pick a static address (a better idea) then use your Tab key to highlight the "Cancel" option and press enter.
Choosing manual setting will show the same message as if a DHCP connection couldn't be established... worry not.
If you chose to manually set your networking or if you let the DHCP search go and it didn't work, the following seven screens will step you through manually telling the box its network connection settings.
Arrow-key down to the "Configure network manually" option and press enter.
Type in the IP Address you want the box to use. It should be in the range of non-DHCP addresses from your router. Obviously my example is using IPv4 so I'm showing standard dotted decimal format and, yes, you have to type in the dots between.
Type in the NetMask value for your network. This value is shown in your router's setup screens and you can also get it from any other networked computer you already have (go to any internet-enabled machine, click the Windows Start button, click on the "Run" option, type "cmd" and in the terminal window type "ipconfig" to see all of the required networking values for your network).
Type in your network's Gateway address. Again, this value will be shown in the ipconfig output from any other machine on your network but typically this will be the address of your router, and usually it will be the network range for the first three numbers and a "1" (same as "001") for the last number.
Type in your network's name server ("DNS") address. This is the IP Address of the machine responsible for translating human-readable values like "http://www.google.com" into their real addresses.
Your router will usually be already set to use your ISP's DNS server or some other DNS server on the internet and your internal machines will likely just point to your router and have it do the lookups for your internal network.
Again, this value will be shown in the ipconfig output from any other machine on your network but typically this will be the address of your router, and usually it will be the network range for the first three numbers and a "1" (same as "001") for the last number.
Almost done, just give your machine a unique name so that other machines on your internal network can find it.
And type in a value for your domain name. For most home people and small companies it doesn't matter what you type here, unless you're going to be attaching this box to an established internal domain. If you use home networking or WORKGROUP networking with boxes and routers connected to other routers, just pick any value you like and you can use direct IP addresses for connecting to this box.
Press enter and if all the settings were typed in correctly the installer will test its connection with a hit of an external time server,
Choose your timezone location by Arrow-keying through the list and pressing enter.
A handful of external components will be put in memory...
Formating and Partitioning your drive
As the options show, along with a full manual drive rebuilding, you can resize an existing drive partition (like if you're going to be dual booting this box with some other OS), or you can use Linux's Logical Volume Manager ("LVM") which is a cool system that lets you add physical storage dynamically as you need space without having to create separate partitions (You know how in Windows when you add a new drive it gets a new drive letter "D;\" "E:\", etc.? With LVM it's like new drives just becoming a bigger "C:\" drive).
LVM is neat and you should read up on it (or click here for a far less robotic tutorial)... but if this is your first-ish Linux server and you've set it aside for a full Linux installation then just scroll down highlight the second option "Guided - use entire disk" and press enter.
Verify that your machine's drive is listed, press enter
The point of no return :). The default is to NOT continue, use your tab key to highlight the "<Yes>" option and press enter
chugga chugga for a few minutes then when the drive is ready the install actually begins!
You're doing fine... chugga chugga
Almost there... chugga chugga
Admin account... nope, not on Ubuntu
Alright, time to become the master of the machine!
Ubuntu is a bit different from some other Linuxes and from default home versions of XP in that the first user is not a full MachineAdmin (called a "root" user in 'nixville) out of the gate. Instead, it's more like a correct and long-advised XP install or the part of a Vista box that pisses off so many home-only users ;-). You have your regular User account and when/if you need to do something that can alter the box in a potentially dangerous way you have to take steps to elevate your privledges.
Not to bog things down at this point, but for a quickie mention: It's the Same-ish deal as logging in with user account on XP-Pro or Windows Server and right-click running some process "As Admin" or clicking the UAC popups in Vista or a Mac. On Ubuntu Linux you do this by prefacing any potientially dangerous commandline action with the word "sudo" and - like the other OSes - typing in your password. It's a safety net and in Ubuntu it is S.O.P.. (Technically sudo stands for 'SUperuser DO', but you can think of it as 'pSUeDO admin' if it helps yer remembery.)
Type in your name, use your full name if you want, whatever.
And a username, just like Win/Mac/InternetAccounts, pick one you'll remember. Write it down and keep it safe if it's something you don't normally use.
Password for the user account on the machine...
Standard stuff, if you want to create a super-restricted area for files for your account you can select "<Yes>" here and it will prompt you for another new password to access that private area of the disk. I choose No but it's up to you.
Proxy settings. If you have one you already know what it is, just use the same Network Settings as other machines you have.
Updates. Just like your Windows and Macs, you can just say no and be responsible for having to remember to check for them manually now and then, only let important security ones come in automatically and do non-criticals manually or use a cloud service from Canonical (the makers of Ubuntu) to manage it all. Here, we picked auto for criticals.
Ubuntu Server is typically used for typical server stuff, and just like Windows Server's installation you can tell it up front what you think you'll be doing and let the applications get installed now rather than manually later. This screen shows the most typical application server options
With the possible exception of OpenSSH Server, I'd say just to leave them all unselected and tab down to the Continue option and press enter.
OpenSSH is your way to play on the machine remotely so you can pick that now if you want (or install it later, it only takes a few seconds and we'll be showing you how). If you want to turn it on just scroll to it and press the Spacebar to put a little asterisk in it.
Even if you know that you'll be using this box for your ASP.NET/Mono development, I'd suggest you don't choose the LAMP Server option. Why? LAMP = Linux, Apache, MySQL, PHP. The first one is a given, the second one makes sense because we know we'll be using Apache, but you may not want to use MySQL as your database, and also - because you're reading this and are likely a .Net person - you don't want the PHP weight.
Very shortly we'll be showing how to use one command to install both Mono And a matching Apache version in one easy swoop, so you can ignore the option here.
Tab to highlight the <Continue> option and press enter.
Installing the Grand Unified Bootloader ("GRUB") so that your new box will startup into Ubuntu...
Ok. Your dvd drive tray should have opened up (if it didn't then open it). Take the disc out of the drive then highlight "<Continue>" and press enter.
The box will automatically restart...
Type in your username...
... your password...
... notice that you have ABSOLUTELY NO WARRANTY ... ;-)
Contratulations. You're back in the world of DOS ;-), but with a heck of a lot more power tuned for serving.
Quickie: Notice that line about how you have to use "sudo" to run as an administrator. We mentioned that back during the account setup steps... and we'll be mentioning again and again ... and you will forget to do it a lot of times ;-). No biggie, you'll just have to do things twice sometimes. Just remember that like the Vista UAC it's there to protect you from yourself, not just to annoy you.
Quickies on getting around
Like Windows, there are a LOT of commandline options, each with LOTS of extra tricks. Over time you'll pick them up as you need them, but here are the fundamental biggies:
- First, the important last: Don't just hit the switch to stop your box, it could corrupt things. Use "sudo poweroff" to shut it down gracefully.
- To reboot, it's "sudo reboot"
- To log out, leaving the box running, it's "exit" or "logout".
- The Linux equivalent of the Windows "\" path separator is "/"
- Just like Windows, when you're at the command line, you can use your UpArrow key to scroll back through the list of previous commands that you typed (neat thing is that Linux has a big buffer that even remembers stuff fom previous sessions). If you go too far you can spin the other way through the list with the DownArrow key
- Like Windows, as you're typing along slam that Tab key... Tab does autocompletion of path and file names. However, unlike Windows, you can't "scroll" through partial matches with the Tab key, if two items start with the same characters you have to keep typing till you get to the unique part.
- 'nix is case-sensitive, so save yourself headaches by naming all of your files and directories lower-cased
- The Linux equivalent of Windows "cls" to clear the terminal screen is "clear"
- The Linux equivalent of Windows options "cd.." and "cd .." to move up a directory level is "cd .." (the space between the d and the dots is required on Linux)
- The quickie name-only Linux version of Windows "dir" to see all the items in a directory is "ls" (list).
- To get the details on the content items, use "ls -al"
- If the list scrolls off the screen, you can use "ls -al |less" (that's a pipe before the "less") which lets you scroll up and down using your arrow keys. To exit the less view press your Q key.
- Alternatively you can use "ls -al |more" which acts similar to the Windows paging option "dir /p" and only goes down the list as you press your enter key. To exit this view press the spacebar.
- "ls -al " may show more folders and files than just using "ls", specifically files and folders starting with a dot may show up in the lists. The prepending of a dot character is the Linux way of making a file or folder hidden, to go into them just treat them like any other file, now that you know their names they are yours to control. Make your own files and folders with a prepended dot and they also get hidden from normal view.
- The Linux equivalent of Windows "copy" to copy an item is "cp". Wildcarding for bulk actions works generally the same.
- The Linux equivalent of Windows "move" to move an item is "mv". Wildcarding for bulk actions works generally the same.
- The Linux equivalent of Windows options "ren" and "rename" to rename an item is also "mv"
- The Linux equivalent of Windows options "md" and "mkdir" to create a new directory is "mkdir"
- The Linux equivalent of Windows "del" to delete an item is "rm". Wildcarding for bulk actions works generally the same.
- The Linux equivalent of the Windows "\" path separator is "/" ;-).
- Remember that outside of your /home/[username] folder you'll get permissions errors if you don't preface file/folder manipulation commands with "sudo".
Coming next: WindowsUpdating Linux with apt.