How to Deploy a Website to Hosting and a Domain for Beginners
After finishing your website on your computer (localhost), the next step is to deploy it — uploading the website so anyone can access it over the internet. Many beginners get stuck at this stage because they do not yet understand the relationship between the website files, hosting, and the domain.
The good news: the process is simple if done step by step. In this article you will learn how to upload a website to hosting (via cPanel or FTP), connect it to a domain, enable SSL/HTTPS, and fix the errors that most commonly appear. Everything is explained step by step.
What Are Hosting and a Domain?
Hosting is the storage space for your website files on a server that stays on 24 hours a day so it can be accessed over the internet. Think of hosting as the "land and house" where your website lives.
A domain is the website address that users type into their browser, for example yourdomain.com. A domain is like a "home address" that guides people to your hosting. The two must be connected for the website to open.
The Type of Website Determines How You Deploy
- Static websites (only HTML, CSS, JS) — the easiest; just upload the files.
- Dynamic PHP websites (including Laravel/WordPress) — need hosting with PHP & a MySQL database.
- Node.js/Python applications — usually need a VPS or a specialized service, not ordinary shared hosting.
This article focuses on the most common approach for beginners: deploying static and PHP websites to cPanel-based shared hosting.
Preparation Before Deploying
Make sure you have prepared the following:
- Your website files (already tested and working on localhost).
- Active hosting (shared hosting is enough for a small website).
- A domain you have purchased.
- Your cPanel login details from the hosting provider.
- For PHP websites: a database file (
.sql) exported from your local phpMyAdmin.
Step 1: Upload Files to Hosting via cPanel
The fastest way for beginners is through the File Manager in cPanel:
- Log in to cPanel (usually
yourdomain.com/cpanel). - Open the File Manager menu.
- Go into the public_html folder — this is the main directory the server reads.
- Click Upload, then upload your website files. If there are many files, compress them into a
.zipfirst, upload it, then right-click → Extract.
Make sure the main file named index.html (for static sites) or index.php (for PHP sites) is located directly inside public_html, not inside a subfolder.
Step 2: Import the Database (PHP Websites Only)
If your website uses a database, do the following:
- In cPanel, open MySQL Databases, create a new database and user, then link the two together.
- Open phpMyAdmin, select the database you just created, click the Import tab, and upload your
.sqlfile. - Update the connection configuration in your code so it matches the server database. Here is an example for native PHP:
$host = "localhost";
$dbname = "username_dbname"; // database name on the hosting
$user = "username_dbuser"; // database user on the hosting
$pass = "database_password";
$conn = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);For Laravel, adjust the .env file:
DB_HOST=localhost
DB_DATABASE=username_dbname
DB_USERNAME=username_dbuser
DB_PASSWORD=database_passwordStep 3: Connect the Domain to the Hosting
There are two common ways to connect a domain to hosting:
A. Changing the Nameservers (most common)
If the domain and hosting come from different providers, change the domain's nameservers to your hosting's nameservers. Hosting nameservers typically look like this:
ns1.yourhosting.com
ns2.yourhosting.comSet this in the panel where you bought the domain. Nameserver changes can take effect within a few minutes to 24 hours (DNS propagation).
B. Pointing an A Record
As an alternative, point the domain's A Record to the hosting server's IP address:
| Type | Name | Value |
|---|---|---|
| A | @ | 123.456.78.90 (hosting IP) |
| CNAME | www | yourdomain.com |
You can find the server IP on the main cPanel page in the account information section.
Step 4: Enable SSL/HTTPS
A website without HTTPS will be flagged "Not Secure" by browsers and is bad for SEO. Here is how to enable it:
- In cPanel, look for the SSL/TLS Status or Let's Encrypt menu.
- Select your domain and click Run AutoSSL / Issue. A free SSL will be installed automatically.
To force all visitors to HTTPS, add this rule to the .htaccess file in the public_html folder:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Step 5: Test the Website
Open your domain in a browser. If it displays correctly and there is a padlock icon (HTTPS active), the deploy was successful. Also test several important pages and features such as forms or login to make sure the database connection is working.
Alternative: Uploading Using FTP (FileZilla)
For large projects, uploading via FTP is more practical than the File Manager. Use the FileZilla application with the details from cPanel (the FTP Accounts menu):
- Host: ftp.yourdomain.com
- Username & Password: your FTP account
- Port: 21
Once connected, drag the files from your computer into the public_html folder on the server side. FileZilla will upload everything automatically.
Common Deployment Errors and Their Solutions
| Problem | Cause & Solution |
|---|---|
| A blank page / Index of appears | The main file is not named index.html/index.php, or it is in a subfolder. Move it to the root of public_html. |
| The domain cannot be opened yet | DNS is still propagating. Wait a few hours and check with a DNS checker site. |
| Database connection error | The DB credentials in the code have not been changed to the server's. Adjust the host, db name, user, and password. |
| CSS/images do not appear | Wrong file path (uppercase/lowercase matters on Linux servers). Match the file name spelling exactly. |
| Error 500 | Usually a .htaccess or permission problem. Check the error log in cPanel. |
Tips to Make Your Website Fast and Secure
- Enable SSL/HTTPS (mandatory for SEO and security).
- Compress images before uploading so loading stays light.
- Use hosting with good performance and a server location close to your visitors.
- Regularly back up files and the database through cPanel.
- Keep your folder structure tidy so it is easy to manage.
Choosing the Right Type of Hosting
Before deploying, it is important to choose the type of hosting that fits your needs. The wrong choice can make your website slow or waste money. Here are the three most common types.
Shared hosting is the cheapest and most beginner-friendly option. One server is shared among many users, so its resources are limited. It is suitable for portfolio websites, blogs, or company profiles with small to medium traffic. Almost all shared hosting already provides cPanel, making the deployment process very easy.
A VPS (Virtual Private Server) gives you your own allocated resources and full access to the server. It is suitable if your traffic is already large, you need to run Laravel queues/cron jobs, or you want to install Node.js and Python applications. The trade-off is that you need to understand a bit of server configuration, since not everything is automatic like on shared hosting.
Cloud hosting scales resources flexibly according to your needs. If traffic spikes, capacity can be added without moving the website. This is the ideal choice for a growing application, although the cost tends to be higher. For beginners, start with shared hosting, then move up to a VPS or cloud when your website truly needs it.
Frequently Asked Questions (FAQ)
How long until a domain is active after pointing?
DNS propagation generally takes 5 minutes to 24 hours, depending on the provider. If it is not active after more than a day, recheck your nameserver or A record settings.
Can I deploy without a paid domain?
Yes. You can use a free subdomain from your hosting, or services like GitHub Pages/Netlify for static websites. However, having your own domain makes a website look more professional.
Is shared hosting enough for a Laravel website?
It is enough for small to medium-scale websites. For large traffic or when you need full control (queues, cron, Node), it is better to use a VPS.
Do I have to pay for SSL/HTTPS?
No. Most modern hosting already provides a free SSL from Let's Encrypt that can be activated with one click through cPanel. Paid SSL is only needed for special requirements such as organization certificates or high warranties on large business sites. For a beginner's website, free SSL is more than enough and just as effective at making your website secure and SEO-friendly.
Conclusion
Deploying a website to hosting and a domain consists of clear steps: upload files to public_html, import the database if needed, connect the domain via nameservers or an A record, enable SSL, then test the result. By following this order, your website can go online and be accessed by anyone.
Once it succeeds, get into the habit of performing regular backups and monitoring performance. Getting a website online is just the beginning — regular maintenance is what keeps it fast, secure, and professional.