# WordPress Optimization: Setting Up A Virtual Server

> Part 2 of the WordPress optimization series covering virtual server setup on Digital Ocean.

- Canonical URL: https://webofmike.com/wordpress-optimization-setting-server/
- Author: Mike Moore (https://webofmike.com/about/)
- Published: 2015-02-01
- Last modified: 2015-02-01
- Tags: Tutorials, Code
- Cite as: Mike Moore, "WordPress Optimization: Setting Up A Virtual Server", Web of Mike (webofmike.com), 2015-02-01. https://webofmike.com/wordpress-optimization-setting-server/


This is Part 2 of an 8-part series on WordPress optimization, focusing on setting up your first virtual server.

## Why Anyone Can Do This

IT professionals unnecessarily mystify technology. With proper explanation, anyone regardless of background can learn to set up and manage a server.

## Understanding Virtual Servers

A virtual server exists in the cloud as a packaged set of computing resources---processor, RAM, and storage. This tutorial uses Digital Ocean as the preferred provider, referring to their servers as "Droplets." These can be created in approximately 55 seconds.

## Creating Your Droplet

The setup process involves selecting:
- **Hostname**: Your domain name
- **Server Size**: Recommendation starts at $5/month (1 CPU, 512MB RAM, 20GB disk)
- **Location**: Geographically close to your user base
- **Additional Options**: Private Networking, IPv6, and Backups

## Server Operating Systems

Linux distributions are recommended over Windows for web servers. The tutorial specifically recommends Ubuntu 14.04 x64 for its long-term support status and ease of use.

## Accessing Your Server

**Mac users** access servers through Terminal using SSH commands. **Windows users** use PuTTY, a standalone SSH client.

## Essential Linux Commands

| Command | Purpose |
|---------|---------|
| `pwd` | Show current directory |
| `cd` | Change directories |
| `ls` | List directory contents |
| `passwd` | Change user password |
| `reboot` | Restart the server |

## Security Configuration

### Creating a Non-Root User

Never use the root account for daily operations. Create a new user with:

```bash
useradd -g sudo -m -b /home/ [username]
passwd [username]
```

### Firewall Setup with iptables

Configure basic firewall rules to allow SSH (port 22), web server traffic (port 80), and established connections:

```bash
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
```

After completing these steps, you have a functioning and secured virtual server ready for web server installation.

