T1 Pipeline Roadmap

Note: This is a work in progress. Feedback is appreciated. Feel free to email me at [email protected]

This roadmap assumes no real prior knowledge of Linux, web-hosting, web development, or IT. This isn’t intended to be an exhaustive guide, but rather a suggested list of resources that should allow any beginner or beginner to intermediate skill level (i.e. “noob”) to acquire the necessary skills qualify for a Tier 1 Technical Support role working in a web-hosting (Linux) centric environment. (Those interested in supporting Windows based environments may still benefit from the resources included here, but would probably be best served by seeking out a guide that addresses a Windows centric IT support role.)

It’s assumed that if you’re reading this, that you’re a self-starter, and able to fill in the gaps by doing your own research (i.e. google-fu) if something doesn’t make sense. This is a roadmap not an exhaustive tutorial. Other authors and teachers have done a much better job of creating learning materials and tutorials than I could ever do myself. Just like with most open source software I’m going to borrow heavily from things that have been built by people much more capable and experienced than myself. This is the open source way after all.

This is curated list of what I consider to be essential skills along with the best free resources available to learn those skills. This collection is inspired by guide’s like the Teach Yourself Computer Science and Open Source Society University . The primary difference being this is intended to provide a foundation for the aspiring Linux System Administrator. While there’s quite a bit of overlap between Computer Science and System Administration, there are skills and fundamentals that seem to be the foundation for competency in IT and System Administration.

Linux CLI Fundamentals #

Learn cPanel Basics #

This section is web hosting centric. If you’re not looking to work in web hosting, feel free to skip this section.

It’s hard to beat the official cPanel university certifications for learning the fundamentals of their platform. If you haven’t already I recommend registering an account at cPanel University .

  • Complete the cPanel Professional Certification (CPP)

It helps if you have access to a cPanel in order to try out the things in cPanel. If you don’t already have access to cPanel, this author recommends finding a budget host (there are some for as little as $1/mo) and getting a 1 month subscription to start. It’s a few bucks to further your education.

Install a WordPress site #

This skill is web hosting centric. If not looking to work in web-hosting, or you have no interest in front-end development, feel free to skip this section.

Concepts, Software, and Protocol fundamentals #

  • Port
    • A port is a number. It’s the port that a server uses to send/receive requests. It’s part of the Internet Protocol. Whenever your computer connects to a server for any reason, it does so through an open port on that server.
  • FTP - File Transfer Protocol
    • Used to transfer files. It’s in the name.
    • Uses port 21
  • SSH - Secure Shell
    • Uses an encrypted tunnel to provide a secure connection to a remote terminal (CLI)
    • Uses port 22
  • HTTP - Hyper-text Transfer Protocol
    • Most of the web uses HTTP (or HTTPS). If you’re reading this in a browser it’s being served using HTTP by a web server.
    • Uses port 80
  • HTTPS - Hyper-text Transfer Protocol Security
    • This is the secure version of HTTP and runs on a different port number.u Anytime you see that insecure warning in your browser it’s usually because the site you visited isn’t sing HTTPS and is therefore insecure. HTTPS uses an SSL Certificate to create an encrypted connection to the web server that’s running the website you visited.
    • Uses port 443

Apache Web Server #

Apache is the most commonly used free open source web server in use on the internet. Most servers that host websites run Apache. This is the software that serves web-pages over the HTTP and HTTPS protocols (ports 80 and 443 respectively).

Linux #

Linux is an operating system. It’s like Windows, MacOS, or Android. It’s the most common operating system in use on servers. It’s free and open source (FOSS) meaning anyone can download, install it, and use it however they see fit. You can custom compile the Linux Kernel to your own needs if you want.

Most Linux operating systems are what’s known as a distribution which is a bundle or package of software that ships with the Linux Kernal, usually containing an installer, and a few other nice-to-haves.

In the web hosting space CentOS is a commonly used Linux Distribution that’s used for web servers. The main reason being it’s reputation for long-term stability. It’s the free open source (unlicensed) version of RedHat Enterprise Linux (RHEL) that’s known for it’s stability and is backed by the support that RedHat offers.

Another common Linux Distribution that’s often used for web-hosting servers and which you may have heard of is Ubuntu Server .

  • Download a common FTP client for your OS whether that’s Windows or MacOS and figure out how to connect to an FTP server with it.
  • Download an SSH client and connect to a Linux server using SSH

Optional #

  • Find a Linux Distribution that you like and if you have old hardware laying around, figure out how to install it and run it.

Networking/DNS #

STUB

Commands to learn #

  • dig
  • host
  • whois
  • ping
  • traceroute

DNS #

  1. Create an A record that points your root domain to the server IP where your site is hosted.
  2. Create a CNAME record that aliases the www subdomain to your root domain. i.e. www.yourdomain.com
  3. Create the appropriate MX record to route email to your mailserver
  4. Create an additional A record (or CNAME) record for the mail subdomain.
  5. Create both of the TXT records that you need to ensure good email deliverability. These are the DKIM and SPF records. These validate the server that the server that the emails were sent from as a valid sender of emails from your domain.
  6. Make sure you verify that your root domain, and www resolve to your website
  7. Test sending/receiving email and verify that that all works as it should
  8. Use whois, dig, host to verify the DNS records that you created

Examples #

[alexkr@ash-sys-pro-js3:~]$ dig thisinterestingmind.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6.11.cloudlinux.els <<>> thisinterestingmind.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17150
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;thisinterestingmind.com.       IN      A

;; ANSWER SECTION:
thisinterestingmind.com. 641    IN      A       209.182.195.45

;; Query time: 0 msec
;; SERVER: 198.46.80.58#53(198.46.80.58)
;; WHEN: Tue Jan  4 13:55:01 2022
;; MSG SIZE  rcvd: 57
[alexkr@ash-sys-pro-js3:~]$ dig cname www.thisinterestingmind.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6.11.cloudlinux.els <<>> cname www.thisinterestingmind.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63532
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.thisinterestingmind.com.   IN      CNAME

;; ANSWER SECTION:
www.thisinterestingmind.com. 900 IN     CNAME   thisinterestingmind.com.

;; Query time: 1 msec
;; SERVER: 198.46.80.58#53(198.46.80.58)
;; WHEN: Tue Jan  4 13:55:34 2022
;; MSG SIZE  rcvd: 59
[alexkr@ash-sys-pro-js3:~]$ dig mx thisinterestingmind.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6.11.cloudlinux.els <<>> mx thisinterestingmind.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33380
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;thisinterestingmind.com.       IN      MX

;; ANSWER SECTION:
thisinterestingmind.com. 623    IN      MX      0 thisinterestingmind.com.

;; Query time: 0 msec
;; SERVER: 198.46.80.58#53(198.46.80.58)
;; WHEN: Tue Jan  4 13:55:52 2022
;; MSG SIZE  rcvd: 57
[alexkr@ash-sys-pro-js3:~]$ dig txt thisinterestingmind.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6.11.cloudlinux.els <<>> txt thisinterestingmind.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20328
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;thisinterestingmind.com.       IN      TXT

;; ANSWER SECTION:
thisinterestingmind.com. 900    IN      TXT     "v=spf1 +a +mx +ip4:209.182.195.45 ~all"

;; Query time: 1 msec
;; SERVER: 198.46.80.58#53(198.46.80.58)
;; WHEN: Tue Jan  4 14:07:58 2022
;; MSG SIZE  rcvd: 92

DNS Records #

Learn HTML/CSS (Optional) #

While it’s not strictly necessary to learn HTML/CSS in order to become a competent Linux System administrator. HTML is such a universal thing, that it helps to understand it at least a little bit. CSS is really only relevant if you have any interest at all in front-end. That said, it’s definitely helpful to have some awareness of what’s possible with HTML/CSS and what it does if you intend to work in any part of web hosting. The best way to learn is by doing.

Learning Strategies (Optional) #

Just some recommendations for learning.

Notes from Paul K. #

Alex’s Notes #