Set Up a VPS Linux Distribution
Once you’ve decided to go for an unmanaged virtual private server, you’ll set up an account and launch a Linux distribution. In this tutorial – Set Up a VPS Linux Distribution – I’ll walk you through those basic steps, advising on the Linux systems available, configuring some options and illustrating a typical unmanaged VPS control panel.
It takes 5 minutes, from sign up to booting the box for the first time. OK, it’ll take you longer the first time.
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
.. from blank box to cute-as server ..
with this easy-to-follow copy/paste guide.
22+ parts with video, here’s the index.
You can watch the video for a walk-through of a typical control panel and Linux distribution setup. For that, and throughout this tutorial and series, I example Linode but the same will apply for Slicehost and many other VPS providers, near as damn it.
Video: Configure Your Linux VPS
Watch the, er, guvideo for a better idea of how to do this.
How To Set Up a Linux Distribution on Your VPS
Goto Linode.com
… or Slicehost.com, or wherever else. I’d suggest you read VPS (Virtual Private Server) vs Shared vs Dedicated for some handy tips about choosing your unmanaged VPS provider, and to see if that really is the best route for your requirement.
Sign Up & Choose Your Plan
OK, so if you have a real hustle-bustle site you may want a larger server chunk, maybe even a server rack, but for the vast majority of us the basic will do, at least for now. For guvnr.com and a bunch of sister sites, blogs and client developments, I chose the Linode 360 with 360MB RAM, 18GB storage and 200GB monthly data transfer (that image is old .. Linode were feeling generous a few months back). That’s $20 a month. You can always upgrade later, either to a bigger plan or just with extra RAM, space and so on.
Login to Linode Manager ..
.. with the password they emailed you. You’ll be directed to the Linode Manager homepage, where you can manage your Linode, your DNS settings, your account, and submit support tickets. Should you so require, you can add more Linodes and IP addresses there too.
Check Out Your Linode
Feel free to get a bit excited. Click on the Linode, Slice, what-have-you…
…and that takes you to the Dashboard, where you can create or delete configuration profiles, disk images and Linux distributions (distros), shutdown/boot/reboot a distro, check various stats and generally salivate.
From here you can also click through to your:-
- Ajax Console really handy if you lock yourself out of the command line interface, which we’ll be setting up in the next part
- Network Manager where you can check network settings, set reverse DNS for email and, for multi Linodes, add and move IPs, and configure IP failover
- Graphs to check CPU, Traffic and Disk In-Out
- Settings & Utilities where you can set root passwords, set alerts and the Shutdown Watchdog, and clone a Linode
- Extras where you can add or remove extra resources, rather than upgrade the entire plan
.. But ignore all that for now. Instead, on the Dashboard, click on Deploy a Linux Distribution. Far more fun.
Select Your Linux Distribution
OK, so there are over 20 Linux variants. Choices, choices.
I chose Ubuntu 10.04 LTS (that’s Lucid Lynx) because I use its Desktop counterpart as well and the syntax is the same, so that’s convenient. More importantly, this server is highly regarded as a stable, well-supported server. If you’ve been to Ubuntu Forums you’ll also see that the community is active and helpful, and that’s good for Linux newbies and tech-heads alike.
What’s more, Lucid Lynx is an LTS distribution, which means it’s a Long Term Support edition with security updates being rolled out until 2015. Non-LTS editions, on the other hand, are not supported so long, which may mean having to upgrade earlier than you’d like.
At Linode at least, with both Ubuntu editions and with other distros there are 64bit versions, which many would prefer to 32bit. Not me. I think 32bit is faster, using less resources. Some will disagree but, researched, most folks concur.
So, if you like what I say, for your needs, check the radio box next to “Ubuntu 10.04 LTS”.
Select Disk Image Size
I set this to 6000MB, or 6gB, because I wanted to play with other servers too. (You can have as many distros as you want, but only have one booted, per Linode, at any one time.) By default, your distro will be set at your maximum VPS size, about 18gB. That’s up to your preference. If you don’t want to play with other distros, leave as default. You can resize a distro later, whenever you want, but have to boot down to do that.
Select Swap
“We recommend a swap partition not exceed 256-512 MB.” That’s what they say. For most, 256 is fine. That’s what I choose. Of course, we’ve got 360MB of regular RAM to eat up anyway before swap kicks in to save the day.
For secondary distros, you can create another swap or share the existing. Generally, you’d share the swap because, after all, you can only use one distro (have it booted up), potentially using the swap, at any given time.
Root Password
Pop in whatever you like. We’ll be changing it from the command line interface anyway, soon enough.
OK, here’s what I have…
Back to the Dashboard
And now you have something to work with; a configuration profile, complete with main disk image and swap image.
Boot it up
Click on “Boot”. It will, and we’ll have something to play with.
That’s that for now.
In The Works ..
In Set Up the Command Line Interface (CLI) using PuTTY – else Setup openSSH for Linux-to-Linux if your local box is Linux – we’ll create remote access to our shiny new Linux distro and, from there, after a generous sprinkling of security, crack on installing the heavy-lifting apps to turn this baby box into a cute-as server. Meantime, I’ll be down the pub. Here’s the index…
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Take your virtual private server from zero to hero
with this easy-to-follow copy/paste guide.
“My local PC runs Windows” Show me for Linux/Mac
“My local machine is Linux/Mac” Show me for Windows
22+ parts with video, here’s the index ..
-
Setup Unmanaged VPS: The Ubuntu-Nginx Guide
Introducing vpsBible’s how-to guide for setting up a super-charged unmanaged VPS featuring Ubuntu and Nginx.
-
VPS (Virtual Private Server) vs Shared vs Dedicated
Before getting stuck in, let’s compare the web host types in detail and weigh up the differences between managed & unmanaged VPS.
-
Set Up a VPS Linux Distribution
Opening a VPS hosting account, we’ll choose, configure & launch a Linux server ‘distribution’.
-
Set Up Command Line Interface (CLI) using PuTTY
Now we’ve got a server to play with, we’ll connect to it, using the ’ssh’ protocol for a super-secure link.
-
Create a Linux User & Set Permissions
Initially you’ve logged into your remote Linux machine as ‘root’. We’ll add you as a user now, with root or SuperUser permissions.
-
Encrypt Data with OpenSSH & Auto-Login with PuTTY
Now we can use ‘authentication keys’ to shore up our connection while simplifying login to an automated, password-free yet secure process.
-
Harden the Secure Shell (SSH) & Create a Firewall
The final security step: galvanizing the OpenSSH protocol and setting up an ‘iptables’ firewall. Now the server is rock ruddy solid.
-
Edit bashrc for User-Friendly Linux, plus System Updates
We use the terminal a whole lot so let’s cut ourselves a break and create some command shortcuts, then update the server.
-
Add a Domain Zone to Your VPS
To make your server aware of yourDomain.com you’ll need a few ‘DNS’ records. Damn this is simple I’m practically asleep!
-
Prepare Linux Server for Email with Postfix
In order to send and receive email from our web applications we’ll install some software and tweak the ‘RDNS’ record.
-
Install PHP5 & MySQL – The One-Stop FastCGI Index Page
Add PHP5 & MySQL, but which FastCGI method is best? Here’s the benchmarking, 4 ways to install/compile, add caching modules & more.
-
Nginx (better than Apache) Web Server
Let’s install this supersonic web server, tweaking its file structure & adding default configuration files.
-
Setup FileZilla for Secure FTP (SFTP)
There’s FTP, and then there’s ‘Secure FTP’. We’ll set up FileZilla using SFTP – and those authentication keys – for secure file transfers.
-
Serve Multiple Sites & Blogs with Virtual Hosts
We want a website folder structure, some permissions, some site-specific configuration files and, hey, we’ll hook up ‘FastCGI’.
-
Adding Sub-Domains with Nginx
Need a sub-domain? If you do, here’s how to add subDomain.yourSite.com with an ‘A record’ and a configuration file.
-
Integrate A CMS Like WordPress, WP MU, Drupal etc
For those of you wanting to use a specific content framework, such as a CMS, blogging or forum software, pop in here and we’ll sort that out.
-
Google Apps for Domain-Specific Email
GA’s free Standard Edition for catchall webmail – POP-ping or IMAP-ped to your desktop client – saves precious server resources for your webs.
-
Moving Day! How to Move Your Blog or Site
Nearly there. Here’s the web site or blog migration guide, relocating to your VPS with minimal or no downtime.
Manage Unmanaged VPS: Ubuntu-Nginx Administration
Already set it up? We’d best maintain it then.
Toggle to the .. Ubuntu-Nginx Admin Index
Manage Unmanaged VPS: Ubuntu-Nginx Administration
Maintain your virtual private server with ..
.. cheatsheets, tutorials, tips & guides.
Head back to the .. Ubuntu-Nginx Installation Index
-
Nginx Control Panel: Here’s the Deal
You’re migrating shared-to-VPS and want a GUI like cPanel? No you don’t, not after you read this! What’s more, you don’t need one either.
-
Nginx Control Panel Workarounds
For every control panel module there’s an equivalent (and faster) terminal command. Let’s compare these.
-
Upgrade to Nginx Latest Version with ZERO Downtime
Keep Nginx up-to-date – and optimized for security. This guide shows precisely how *with no missed server requests*.
-
Compile an Advanced Nginx Module Configuration
Need special web server functions? Here’s how to install or upgrade Nginx with bespoke required modules & parameters.
-
Add Web Sites Nginx Cheatsheet
Once you’ve set up your first site, adding more gets easier. Especially when you refer to this. (Let’s face it, I’m just too good to you.)
-
Adding Sub-Domains with Nginx
Rather than add somesite.tld, maybe you want some.subsite.tld? Here’s how to set your A record using a DNS manager and the vhost file for Nginx.
-
Add/Delete MySQL Database from Command Line
Need a database? Want to bin an old db? This tutorial shows you how using the terminal command line console whatnot.
-
Configure phpMyAdmin for Nginx to Maintain MySQL
Rather than have to crunch databases via the command line, we can make life easier by adding this splendid tool to manage them.
-
Backup/Export MySQL DB with CLI & mysqldump
Here’s how to backup a database from the command line using the handy mysqldump utility.
-
Import MySQL Database using Command Line
Import data to a new database with this simple mysqldump guide .. great for reinstating an old backed-up db, for instance.
-
Batch Replace/Delete Data in MySQL Database
Change repetitive db data with a single command. Rather than manually find & alter each instance, isolate the lot & update multiple content.
-
LOST a MySQL Password? How to RESET it
Lost your MySQL password? That’s a bit of a bummer .. or it would be if you didn’t have this new password setup guide, huh.
-
Backup or Upload with Secure Copy SCP (Linux to Linux)
Never mind FTP m8! Save time and download/upload your files using encrypted SCP (secure copy), the #1 Linux-Linux file transfer solution.
-
Backup or Upload with PuTTY PSFTP (Windows/Linux)
Equivalent to the above, how to transfer your files if you’re unlucky enough to be running Windows for your local PC. Not that I’m biased.
-
*USEFULLY* Park A Spare Domain with Nginx
Got a spare domain name sat around doing nothing? Put it to some use, have it point its traffic at your primary domain. Here’s the deal ..
-
Password Protect Nginx Web Files/Directories
Maybe you want a hidden website directory, say, for projects, or are developing a site and want it off-limits ’till launch day. Top tip ..
-
Redirect Web Pages with Nginx Rewrite Rule
Here’s the syntax to point a site or blog to another domain. That way, for instance, traffic from a passive site benefits an active one.
-
Nginx Error & Access Logs
Need to troubleshoot some error, or want to find out who’s trying to hack your site? Here’s a start .. those tell-tale logs.
-
Subversion for Easy CMS Updates ie WordPress/Drupal/etc
A brief introduction to install and know about the power of Subversion, the version control system to keep scripts and platforms up-to-date.
-
You Tell Me …
Something missing? Probably. Let me know what you’d like included. And if it’s listed below, shout out anyhow and I’ll try to bump it.
Nginx Admin: In the Works ..
This lot’s marked for addition already:-
- Setup or Edit DNS using Bind
- Network Tools Troubleshooting Guide
- The Comprehensive Permissions Guide
- Configuring Nginx Rewrites
- Custom Website Error Page
- Setting up Cron Jobs
- Rsync for Incremental Remote-to-Local Backup
- Cron & Rsync for Automatic Backup
- Cron & mysqldump for Auto DB Backup
- Safeguard Bandwidth with Hotlink Protection
- Block Access with Nginx’ IP Deny
Got a Question? Want to Comment?
This site has no comments system. We've got a better system!
Please use the link at the top of the post and goto this topic's forum thread:-
- to help build community
- for a superior knowledge base
- to keep info in one place, not diluted between forum & comments.
For those posts ported from Guvnr.com (pre-Feb/2010), archive comments remain.
Handy info from these comments is in the process of being ported to the forum and attributed to the original author.
If you think this idea sucks, let me know.
Thank you.





















Tarak April 18th, 2009 at 10:41 am
You are a God send – that all I can say – too busy learning from you to take a breath – thanks
the_guv April 18th, 2009 at 11:21 am
Hi Tarak, saw your cmt at my YouTube channel too – http://youtube.com/user/guvnrDOTcom.
Dude, comments like yours brighten my day, Sir. Mighty pleased you’re finding it handy.
Am busy editing other videos in this series right now
Re: Tutorial April 27th, 2009 at 2:13 am
[...] Deploy a Linux Distribution for Newbies – VPS Bible Pt 2 – GUVNR [...]
mike May 6th, 2009 at 4:05 am
Hi, nice post. I was looking everywhere for this info, and you present it so clearly, so thanks for posting. Will definitely be referring back to this vps series. Keep up great writing
the_guv May 7th, 2009 at 8:53 pm
@Mike – cheers to you, that’s good to hear.
Dave May 16th, 2009 at 10:01 am
Wow.. excellent stuff. You are a God send for newbies like me.
Cheers!
the_guv May 17th, 2009 at 6:36 am
@Dave – you are most welcome – comments like yours make it worthwhile. … from one newbie to another
oligolli June 28th, 2009 at 12:26 am
Thanks for all these tutorials, really helped this newbie.
I’m on Centos however, so haven’t followed them to the letter, but I’m a bit puzzled by the Nginx user and the permissions on /wp-content/uploads.
I have no user or group “www-data” on Centos and later on you set the permissions of wordpress files and folders to the group “webmasters”.
I cannot upload pictures to wordpress unless I change the owner to the nginx user or set chmod 777. Am I missing something?
jacqueline September 29th, 2009 at 2:15 pm
we just bought an unmanaged windows VPS, could please tell me where i can read about how to set it up and set up the site on it which i would like to choose joomla for.
Thank you
the_guv October 6th, 2009 at 6:30 am
@Jacqueline .. hi, sorry for delay.
hmmn .. why windows? and why joomla? well, i guess joomla’s fair enough .. but why windows? why oh why, dear lady, why windows?
truth is, no. I googled it for you and it was me at the top of the results! sorry.
out of interest, really, why windows?! if you only pay by the month, cancel it, get a regular linux vps and follow this guide, is genuinely the best advice i can give.
as for joomla, that will be dead simple to set up … very similar to how i say to set up wordpress in these pages. set up the vps as per whatever guide, and then just add joomla as you would add site files .. and joomla themselves will doubtless have good docs and a healthy forum.
Mike October 18th, 2009 at 5:47 am
Ollie my boy you are a godsend!! I just discovered your tutorial videos on Google video learning to set up firewalls for a web server (for some sites I am developing in WordPress child themes) from the Command Line Interface in Ubuntu and just came across your site. Wow!! Extensive, detailed, straight-forward and EXTREMELY EXTREMELY Helpful. Your blog truly is the essence of Web 2.0.. Keep it coming mate I am addicted to your knowledge database that you provide on your site and will spread the word.. keep it coming.. A new fan..
the_guv October 23rd, 2009 at 9:20 am
@Mike .. m8, that is a geezer comment. of course, we aim to please! thaaaaaaaaaank you. cracking.
Giwrgos November 11th, 2009 at 4:02 pm
Very nice tut-guide-walkthrough-bible awesomely done for linux newbies like me! Recently i am giving a try to Centos. Could you be so kind and -just minor edits- add the equivelant commands of Centos that you are using? would be great help. Also been looking for a vps host, and i like your work in review of linode. Thank you again.
Greetings from Greece.
Job November 24th, 2009 at 8:53 am
Very clear instructions and professional delivery! Thanks so much.
the_guv November 24th, 2009 at 12:32 pm
@Job .. big cheers, appreciate that.