Huawei Cloud Business Tax ID Verification Build personal blog on Huawei Cloud ECS
Build Personal Blog on Huawei Cloud ECS: The “I Did It!” Guide
You know that feeling when you finally finish setting up something technical, click your URL, and your blog loads like it’s always belonged there? That’s the vibe this article is aiming for. We’re going to build a personal blog on Huawei Cloud ECS, which means you’ll host your site on a real virtual server in the cloud—so your blog won’t depend on “free hosting” roulette or the kind of platform rules that change while you’re asleep.
And yes, we’ll cover the parts that always cause drama: choosing the right instance, configuring networking, installing a web stack, deploying the blog software, adding SSL, handling backups, and making it fast enough that readers don’t feel like they’re watching a slideshow from the year 2009.
We’ll assume you want something classic and maintainable. The steps below use common tools like Nginx, a database (MySQL/MariaDB), and a blog engine such as WordPress. If you prefer another engine (Ghost, Hexo, Hugo, Pelican, etc.), you can still use the ECS setup and the security sections, then swap out the deployment steps. The “infrastructure” parts are the same; it’s the “blog software” part that changes.
What You’ll Need Before You Start (Spoiler: A Few Clicks and Some Patience)
Essential prerequisites
- Huawei Cloud account with access to ECS and networking services.
- A domain name (optional, but strongly recommended). You can still test with the ECS public IP first.
- Your blog choice: likely WordPress for simplicity, or another static/blog framework if you prefer.
- Basic comfort with SSH and reading logs. Don’t worry—you don’t need to be a wizard. You just need to be willing to look at the error message.
Decide your blog style
Personal blogs usually fall into two categories:
- Dynamic blog (e.g., WordPress): user-friendly editor, plugins, themes, comments, categories, the usual “it just works” package.
- Static site (e.g., Hugo/Hexo): faster, simpler deployments, and fewer moving parts. Great for Markdown-based writing.
Because this guide is “build a personal blog on Huawei Cloud ECS” and wants high readability, we’ll default to the dynamic path using WordPress. It’s widely used, easy to manage, and well-documented. If you want a static blog later, the ECS + security + SSL lessons still apply.
Step 1: Create Your ECS Instance (Your Blog’s New Home)
Choose an operating system
Start by selecting a supported Linux OS image. Ubuntu 22.04 LTS or CentOS Stream/RHEL-like distributions are common. For a personal blog, Ubuntu tends to be straightforward for newcomers. Whatever you pick, be consistent with package names and commands later.
Pick instance size (don’t overpay, but don’t underbuy)
A personal blog typically doesn’t need a monster server. For WordPress with moderate traffic, consider:
- 1 vCPU / 1–2 GB RAM for very small traffic
- 2 vCPU / 2–4 GB RAM for better performance and smoother upgrades
If you’re just starting, a small instance is fine. You can always resize later. Cloud resources are elastic in theory; in practice, resizing is like dieting: best done gradually, but you can do it.
Network settings: VPC, subnets, and security groups
When creating ECS, you’ll usually pick:
- VPC and subnet
- Security Group (firewall rules)
At minimum, for a web server you’ll want inbound access to:
- SSH (22) from your IP (ideally restricted)
- HTTP (80) from anywhere
- HTTPS (443) from anywhere
Try not to open SSH to the entire internet. That’s not “secure convenience,” that’s “inviting chaos.” Restrict SSH to your home/work IP whenever possible.
Assign a public IP (or use a load balancer later)
For a personal blog, it’s easiest to make your instance reachable via a public IP. If Huawei Cloud offers an option to attach a public IP during creation, choose it. Later, you can integrate with a load balancer if traffic grows, but we’re keeping this simple for the initial build.
Step 2: Connect to Your ECS via SSH
Once the instance is created and running, connect using SSH. You’ll need:
- The ECS public IP (or assigned public address)
- The SSH username (depends on OS image, often ubuntu)
- Your private key or password (depending on how you configured access)
Basic SSH command format:
ssh username@PUBLIC_IP
If you get a “permission denied” error, do not panic. It’s usually one of the following:
- Huawei Cloud Business Tax ID Verification Wrong username
- Wrong key or key file permissions
- Security group blocking port 22
Also, check your local firewall. Yes, your computer has a firewall too. It’s like a bouncer. Sometimes it decides you’re not on the guest list.
Step 3: Update the System and Install Basic Tools
Start by updating packages. The exact commands depend on OS.
For Ubuntu/Debian
sudo apt update sudo apt upgrade -y sudo apt install -y curl wget unzip vim
If you don’t like vim, you can install nano instead, or just keep vim as a “temporary punishment” until you learn how to escape.
Huawei Cloud Business Tax ID Verification For CentOS/RHEL-like systems
sudo dnf update -y sudo dnf install -y curl wget unzip vim
Now you’re ready to install the web stack.
Step 4: Install Nginx (The Web Server That Doesn’t Complain Much)
Nginx will serve your blog, handle HTTP/HTTPS, and help with performance. Let’s install it.
Ubuntu/Debian
sudo apt install -y nginx sudo systemctl enable nginx sudo systemctl start nginx
Now test:
# Option A: local test curl -I http://localhost # Option B: open in browser using public IP # http://YOUR_PUBLIC_IP
If your browser shows the default Nginx page, congratulations: your server can talk to the outside world. If not, check:
- Security group allows inbound 80/443
- Nginx is running:
systemctl status nginx - Firewall status (if enabled)
But again, don’t assume it’s a firewall. Nginx could be down, or your instance could still be initializing. In cloud land, “it’s supposed to work” and “it is working” are two different states.
Step 5: Install and Configure a Database (MySQL/MariaDB)
Huawei Cloud Business Tax ID Verification WordPress needs a database. You can use MariaDB or MySQL. Most Linux distributions include a recommended option.
Ubuntu (MariaDB is common)
sudo apt install -y mariadb-server sudo systemctl enable mariadb sudo systemctl start mariadb
Secure the database (optional but smart). Use:
sudo mysql_secure_installation
You’ll be asked about removing anonymous users, disabling remote root login, and more. The secure-installation wizard is basically a “make it harder for attackers” checklist. Answering yes is usually the right vibe.
Step 6: Create a Database and User for WordPress
Now log into MariaDB/MySQL:
sudo mariadb
Create a database, user, and grant privileges. Example commands:
CREATE DATABASE wordpress_db; CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'STRONG_PASSWORD_HERE'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
Replace STRONG_PASSWORD_HERE with a real password. Not “password123.” Not “MyBlogIsCool.” Something with actual complexity. Think of it as giving your database a seatbelt.
Step 7: Install PHP and Required Extensions
WordPress runs on PHP. Install PHP and extensions used by WordPress (and sometimes by plugins).
Ubuntu/Debian
sudo apt install -y php-fpm php-mysql php-xml php-curl php-mbstring php-zip php-gd php-imagick
If PHP version mismatches the WordPress requirements, you may need to install the recommended PHP version repository. Start with what your OS supports, and adjust if WordPress complains.
Start/enable PHP-FPM if needed:
sudo systemctl enable php*-fpm sudo systemctl start php*-fpm
Again, exact service names can vary. If you’re unsure, check:
systemctl status php*-fpm
Step 8: Configure Nginx to Use PHP (So Your Blog Doesn’t Show “Nothing Happened”)
Nginx needs to forward PHP requests to PHP-FPM. Many default configurations already do this, but you should verify.
Check your Nginx site config
On Ubuntu, your default site might be at:
/etc/nginx/sites-available/default/etc/nginx/nginx.conf
Open the default site config and look for a `location ~ \.php$` block. It should include something like `fastcgi_pass` pointing to PHP-FPM.
After adjusting, test syntax and reload:
sudo nginx -t sudo systemctl reload nginx
If nginx -t fails, don’t reload blindly. Fix the configuration first. Nginx is like a strict teacher: it refuses to proceed when the syntax is wrong.
Step 9: Create a Web Directory for Your Blog
WordPress can be installed in the default web root (commonly /var/www/html) or a dedicated directory like /var/www/yourblog. Using a dedicated directory is cleaner.
Example:
sudo mkdir -p /var/www/personal-blog sudo chown -R $USER:$USER /var/www/personal-blog
We’ll later set Nginx to point to this directory. If your permissions get weird, the classic fix is to ensure Nginx can read files and PHP can write uploads (uploads usually need write permissions).
Step 10: Download and Install WordPress
Download WordPress
Download the latest WordPress package:
cd /tmp wget https://wordpress.org/latest.zip unzip latest.zip
Move files to your web directory:
sudo rsync -av /tmp/wordpress/ /var/www/personal-blog/
Then set ownership properly (Nginx user can vary, often www-data on Ubuntu):
sudo chown -R www-data:www-data /var/www/personal-blog
Now configure WordPress’s wp-config.php.
Create wp-config.php
Copy the sample config:
cd /var/www/personal-blog cp wp-config-sample.php wp-config.php
Huawei Cloud Business Tax ID Verification Edit it and set database name/user/password/host. You can do it with:
sudo nano wp-config.php
Change fields to match what you created earlier:
DB_NAME= wordpress_dbDB_USER= wordpress_user- Huawei Cloud Business Tax ID Verification
DB_PASSWORD= STRONG_PASSWORD_HERE DB_HOST= localhost
Also set authentication keys (WordPress typically provides a generator). If you want to keep it simple, you can generate fresh keys and paste them. WordPress even tells you the secret sauce exists for a reason.
Step 11: Configure Nginx Server Block (Let Nginx Know Where Your Blog Lives)
Now we need Nginx to route requests to the WordPress directory. On Ubuntu, we create a new file in /etc/nginx/sites-available and enable it.
Example: create /etc/nginx/sites-available/personal-blog with a server block.
For a first pass, you can use this kind of template:
server {
listen 80;
server_name _;
root /var/www/personal-blog;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 30d;
access_log off;
}
client_max_body_size 64M;
}
Important notes:
- server_name _; means “catch all.” Later, you’ll replace it with your domain.
- fastcgi_pass unix:/run/php/php-fpm.sock; might differ depending on PHP version. If you get errors, find the correct socket path by checking your PHP-FPM configuration.
Then enable the site:
sudo ln -s /etc/nginx/sites-available/personal-blog /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Now try visiting:
http://YOUR_PUBLIC_IP
Huawei Cloud Business Tax ID Verification If everything is configured right, you should see the WordPress setup or the WordPress homepage.
Step 12: Complete WordPress Installation via Browser
Go to your ECS public IP (or your domain if you already pointed it). You’ll see the WordPress installation screen.
During setup, WordPress will ask for:
- Site title
- Username and password
- Your email
- Whether to index in search engines (usually “Discourage search engines” during testing)
After installation, log in to the WordPress dashboard and choose a theme. If you’re going for a personal blog, a clean theme with fast loading and good readability is a win. If you install a theme that makes the page load like a small glacier, readers will drift away.
Step 13: Configure HTTPS with SSL (Because HTTP Is 2020’s Rebellion)
Security and trust matter. HTTPS is now the baseline. Browsers warn users for sites without SSL, and some features may not work properly.
Install a certificate
You can use Let’s Encrypt for a free certificate. The simplest approach is using Certbot, but your environment may require additional steps depending on DNS and firewall settings.
Huawei Cloud Business Tax ID Verification High-level flow:
- Make sure port 80 is reachable (security group allows it).
- Install certbot.
- Request certificate for your domain.
- Configure Nginx to use the certificate.
- Force redirect HTTP to HTTPS.
If you don’t have a domain yet, you can still test with HTTP. For SSL, domain validation matters, so having a domain is strongly recommended.
Renewal
Let’s Encrypt certificates expire every ~90 days. Certbot can set up automatic renewal with a cron/systemd timer. Make sure renewal is enabled, because “I forgot to renew” is a classic story people tell right before they learn humility.
Step 14: Connect Your Domain to the ECS (DNS Time)
If you have a domain, you need DNS records so your users can find your server.
- A record: map your domain (e.g.,
blog.example.com) to your ECS public IP - Optional AAAA record: if you use IPv6
DNS propagation can take time. Sometimes it’s minutes, sometimes it’s “let’s take a coffee break and return to reality.” You can check DNS propagation using various online tools, but since we’re not doing that here, just be patient and verify by waiting a reasonable amount of time.
Step 15: Lock Down the Server (So Your Blog Doesn’t Become a “Learning Experience” for Attackers)
Security shouldn’t be a sad afterthought. You don’t need military-grade paranoia, but you do need basic hardening.
Update regularly
Keep your OS, Nginx, PHP, and WordPress updated. WordPress security updates are particularly important. Plugins also matter—an outdated plugin can be the weak link.
Basic firewall rules
Huawei Cloud Business Tax ID Verification Depending on your OS, you might use UFW, firewalld, or rely entirely on cloud security groups. Cloud security groups are your first layer. If you also enable an OS firewall, keep them consistent.
Allow:
- 22 from your IP only
- 80 and 443 from anywhere
Block everything else by default.
Disable unnecessary services
If you don’t use it, don’t run it. Every extra service is another potential door.
Use strong passwords and keys
WordPress admin accounts should have strong passwords. Also, consider disabling admin login from the world (advanced) if you’re comfortable. For most personal blogs, strong passwords plus keeping WordPress updated is the main win.
Step 16: Performance Tuning (Make It Feel Fast, Not Haunted)
Your blog should load quickly and reliably. Here are practical tuning options that don’t require you to become a performance engineer overnight.
Enable gzip or Brotli
Compression reduces payload size. Nginx can handle gzip easily. Brotli is also great, but gzip is the common baseline.
Cache static files
Set caching headers for images, CSS, JS, fonts. The earlier server block snippet includes an example for static assets with an expires directive. You can tweak caching based on your needs.
Use a CDN (optional)
If your audience is global, a CDN can help. However, for a personal blog starting out, tuning your ECS instance and Nginx config may be enough.
PHP settings
PHP-FPM settings like max children and request handling can be tuned. If you see slow responses under load, check Nginx access logs and PHP-FPM status.
But again, start simple. Optimize only when you have evidence. Guessing is how you end up tuning for a problem you don’t have.
Step 17: Backups (So Your Blog Doesn’t Turn Into a “Before and After” Case Study)
Huawei Cloud Business Tax ID Verification Backups are the difference between “oops” and “oh no, the internet forgot me.” You want:
- Database backups (WordPress content, settings)
- File backups (themes, plugins, uploads)
- Regular schedule
- Test restores (yes, really)
Backup strategy options
- WordPress plugin: easy, but ensure it’s reliable.
- Server-level scripts: use tools like mysqldump and tar for files.
- Cloud backup service: if available, integrate it.
For most personal blogs, a hybrid approach works: database dumps + upload file backups, stored somewhere separate (another bucket, or at least different storage).
Restore test
Once a month (or after major changes), test restoring to a staging environment or a temporary directory. If you can’t restore, your backup is just a fancy file collection labeled “hope.”
Step 18: Monitoring and Logs (Where the Truth Lives)
If something goes wrong, logs tell you why. You want to know where to look before you need them.
Nginx logs
Common log files:
/var/log/nginx/access.log/var/log/nginx/error.log
Tail them to watch live errors:
tail -f /var/log/nginx/error.log
WordPress logs
WordPress can be configured to log errors. Plugins also may log. You can enable WP_DEBUG carefully (don’t leave debugging on forever for production, obviously).
Server health
Track CPU usage, memory, disk space. If disk fills up, your blog won’t magically keep writing. It will just stop, like a dramatic actor refusing the stage.
Step 19: Common Problems (And How to Not Lose Your Mind)
Problem: I can connect by IP but not by domain
Usually DNS records aren’t updated or propagation hasn’t completed. Also, check your Nginx server_name configuration. If your Nginx server block expects a domain that doesn’t match, it may serve a default page.
Problem: WordPress shows a blank page or 502/504 errors
Common causes:
- PHP-FPM not running
- fastcgi_pass socket path mismatch
- permissions issues in the web directory
- PHP missing required extensions
Check:
sudo systemctl status nginx sudo systemctl status php*-fpm sudo tail -n 200 /var/log/nginx/error.log
Problem: Uploads fail (media uploads don’t work)
Permissions. WordPress needs write access to the uploads directory. Typical folder is:
/var/www/personal-blog/wp-content/uploads
Ensure the ownership/permissions allow Nginx/PHP to write. The exact permissions depend on user/group setup, but the principle is simple: WordPress must be allowed to write files where it stores uploads.
Problem: WordPress install can’t connect to the database
Check wp-config.php:
- DB_NAME correct
- DB_USER correct
- DB_PASSWORD correct
- DB_HOST correct (often localhost)
Also verify MariaDB/MySQL is running:
sudo systemctl status mariadb
Problem: Your Nginx config change breaks the site
Never reload without running:
sudo nginx -t
And if it breaks, revert changes and retest. You’re not failing; you’re debugging. Debugging is the process of being corrected by reality.
Step 20: Back to WordPress—Theme, Plugins, and Content Launch
Now that your blog is live, it’s time for the fun part: content. But before you publish like a content machine, do a quick sanity check:
- Update WordPress core to latest version
- Remove unnecessary default plugins/themes
- Install a caching plugin if needed (and test)
- Install an SEO plugin if you want guidance for posts (optional)
Pick a theme that looks good and loads reasonably fast. Add a couple of pages: About, Contact (optional), and maybe a Privacy/Disclaimer page if you want to be responsible.
Then write your first post. A short “Hello World” is okay. But if you want to feel extra accomplished, write a post about your setup process. Readers love real-world details, and your future self will appreciate the breadcrumb trail.
Maintenance Checklist (The Monthly Routine That Saves Your Future Self)
Here’s a practical monthly checklist. Personal blogs are not “set and forget” systems; they’re more like houseplants. If you ignore them forever, they won’t technically die immediately, but they will start looking sad.
- Update WordPress core
- Update themes and plugins
- Check server OS updates
- Verify backups ran successfully
- Review error logs for repeated issues
- Check disk space
Optional Upgrade Paths (If You Want the Blog to Level Up)
Add a second instance and use a load balancer
If you get traffic spikes, you can scale horizontally. For many personal blogs, this is unnecessary early on, but it’s an option later.
Move to managed database
Depending on Huawei Cloud offerings, managed DB services can reduce operational overhead. If you’re focusing on writing, managed services are worth considering.
Switch to a static generator
If your content is mostly Markdown and you don’t need WordPress plugins, you can migrate to Hugo/Hexo and host the static output on Nginx. Static sites can be extremely fast and simpler to maintain.
Huawei Cloud Business Tax ID Verification Conclusion: Your Personal Blog on Huawei Cloud ECS, Now With Confidence
Building a personal blog on Huawei Cloud ECS is one of those projects that turns you from “I read tech blogs” into “I, too, deploy tech blogs.” You learned how to set up a server, configure Nginx, install PHP and a database, deploy WordPress, secure it with HTTPS, connect a domain, and build a maintenance routine so your blog doesn’t collapse the first time you blink.
If you followed the steps and your blog is now loading in a browser, take a moment to enjoy it. You didn’t just create a site. You created a little corner of the internet that is yours. And unlike many things in life, it works when you refresh the page.
If you want, tell me what OS you chose (Ubuntu or CentOS-like), whether you already own a domain, and whether you prefer WordPress or a static blog engine. Then I can tailor the deployment steps and Nginx/PHP-FPM configuration details to match your setup exactly.

