Creating your own website can be a fantastic way to share your work, whether it's showcasing your data science projects, writing a blog, or building an online portfolio. Amazon Web Services (AWS) is a popular platform for hosting websites, but getting started can be a bit overwhelming.

I stress that AWS and their product names leaves a lot to be desired. EC2? Route53? All of it is migraine-inducing. My guiding light has been youtube tutorials.

Buy a domain name

I did this so long ago that I can't remember it. Technically, I bought it off of GoDaddy or something. Then I transferred it to AWS. So, the instructions on how to do it would not help anyone else except in my unique situation.

Hosting your personal site

Angel #1: A Monk in Cloud Youtube Channel This is how you get your website started and online. You go to Amazon, you turn on an "instance". I think of it as a cloud/virtual computer somewhere in Jeff Bezosland. You'll have to configure the type of operating system. The youtube tutorial used linux. So I followed suit. Then you send your files to the cloud. Then you open up the ports to allow the internet to access it. However, the link is just a public ip. If you want the a "www" address you'll have to connect it to a domain. That's the next step. Here's some commands I had to use in this part of the project. Entering it here for posterity sake.

sudo su -
yum update -y
yum install -y httpd
systemctl status httpd
ls -lrt
mv * /var/www/html
systemctl enable httpd
systemctl start httpd

Point your Domain to EC2 Instance using Route 53

Angel #2: Koding 101 Channel This is how to connect your purchase domain name to your hosted website. Instead of XX.XX.XX.XX you'll have something like "http://www.tophernguyen.com" This was actually pretty straightforward. However, this doesn't resolve when someone tries to https:\\www.tophernguyen.com. I'll have to buy a security certificate at some point and return to update that.

Updating my website files

Angel #3: Ram N Java This is how I update my website files. I'm using WINSCP to directly upload files to the EC2 instance (what I consider the cloud computer that's in Jeff Bezosland). I had to create a ppk. Amazon defaults to something else, so make sure to either have a method to change the type. Another hurdle was that I could not copy into the EC2 instance because of permissions. I had to change the permissions of the destination folder. I probably made it less secure because of that. Oh well, it's always a balance of security and convenience.

Editing Permissions to upload to hosted website. Not even a day goes by and I had to figure out the permissions problem again. Go to the instance via aws or use putty. Navigate to folder containing the directory you need to update

sudo su -
chmod 777 [directory name]

My SSL certificate expired. I'm using Let's Encrypt which is a free SSL certificate. I used their documentation to originally set it up. I am running my server on Amazon Linux 2023. There's documentation on nginx and apache servers. I took a 50/50 bet and guessed nginx. Well, I was wrong. I had to uninstall Let's Encrypt installation and install the Apache version. The commands to renew the SSL cert are:

sudo su -
sudo certbot --apache

Other Important Stuff

Free-CSS.com In the video on how to host a website, the youtube creator used this website to grab a template. I figured if it's good enough for the youtube creator, it's good enough for me. I picked one that suited my needs and did my best to understand HTML and CSS.

Unsplash.com For stock photos, I go to this website to find the closest one I can find to meet my needs.