Part of a presentation I gave at UNC to show people (computer science students) how remarkably easy it is to create your own website that you have full control over.

read more
  • First, get a linux box. We already have one setup here.
  • Just login, run “apt-get install apache2
  • Then, you can just go to the IP and a page will load.
    • You do have to have root access.
    • Network has to be open on port 80
  • Not super useful, you probably want to host from something more than an IP.

Next slide, additions.

  • So buy a domain, then setup an A record that points to your server’s IP
  • Wait for it to propagate
  • Then Apache needs to know what pages to load when someone visits that domain
  • That’s where virtual hosts come in
    • So first, we’re going to make a directory called “test.com”
    • create index.html file in test.com that says “welcome to test.com”
  • Go to /etc/apache2/sites-available/
  • cp default to test.com.conf
  • Change serverName to test.com
  • Change documentRoot to /var/www/test.com
  • a2ensite test.com.conf
  • then run service apache2 reload
  • And you’re done, you can go to your domain in your browser and those files will be loaded
  • You can go to /var/log/apache2/access.log to view the access logs.
  • You can go to /var/log/apache2/error.log to view errors, so see 404’s which can be helpful, etc.

Next slide, useful things you should know.

  • You can edit the crontab to schedule processes. Crontab -e. Specify day, hour, minute etc.
  • As soon as you setup a server that’s publicly addressable, after a while you’ll notice hundreds of login attempts per day, trying to brute force your ssh.
  • You can use fail2ban to mitigate, will block offending IPs on a network level temporarily to reduce load and prevent access.
  • As a linux server admin, you should enable swap as backup, in case your server does run out of RAM at some point.