Blog

  • WordPress installer

    You’re now at the WordPress installer UI, which means:

    • Web server ✅
    • PHP-FPM ✅
    • DB connection ✅
    • Permissions ✅
    • DNS ✅

    All core layers are functioning correctly.

    Now proceed carefully—this step defines your application-level configuration.


    1. Installation Screen Flow

    Step 1: Language

    You already see this.

    • Select: English (United States) (or your preference)
    • Click Continue

    Step 2: Site Configuration

    You will get a form with these fields:

    1. Site Title

    • Example: Pravesh Garnu Blog
    • This is not permanent; can be changed later.

    2. Username (IMPORTANT)

    • Do NOT use:admin root wordpress
    • Use something non-trivial:pravesh_admin wp_mgr_01

    Reason: Prevents brute-force attacks.


    3. Password

    • WordPress suggests a strong password—keep it.
    • Store it securely (password manager)

    4. Email

    • Use a valid email (used for password recovery)

    5. Search Engine Visibility

    • For now:
      ✔️ Check it (discourage indexing)

    Reason:

    • Site is not production-ready
    • Prevents accidental indexing by Google

    Click: Install WordPress


    2. After Installation (Critical Immediate Actions)

    Once installed, you’ll be redirected to:

    /wp-login.php
    

    Login using the credentials you just created.


    3. Post-Install Hardening (Do This Immediately)

    3.1 Fix File Editing in Admin

    Edit wp-config.php:

    define('DISALLOW_FILE_EDIT', true);
    

    Why:

    • Prevents attackers from editing PHP files via dashboard

    3.2 Set Correct URL (Avoid Future Redirect Issues)

    Go to:

    Settings → General
    

    Ensure:

    WordPress Address (URL): https://yourdomain.com
    Site Address (URL): https://yourdomain.com
    

    3.3 Permalinks (VERY IMPORTANT)

    Go to:

    Settings → Permalinks
    

    Select:

    Post name
    

    Save.

    This enables SEO-friendly URLs.


    3.4 Verify Upload Permissions

    Go to:

    Media → Add New
    

    Try uploading an image.

    If it fails → permissions issue (but yours likely correct).


    3.5 Remove Default Content

    Delete:

    • Sample Post
    • Sample Page
    • Hello Dolly plugin

    4. NGINX-Specific Adjustment (Often Missed)

    Ensure this is working:

    try_files $uri $uri/ /index.php?$args;
    

    Why:

    • Required for permalinks to work

    Test:

    • Create a post → open /sample-post/
    • If 404 → NGINX misconfiguration

    5. TLS Validation

    Check:

    https://yourdomain.com
    

    Ensure:

    • No browser warnings
    • Certbot auto-redirect working

    Optional improvement:

    return 301 https://$host$request_uri;
    

    6. Basic Security Plugins (Optional but Recommended)

    Install:

    • Wordfence OR
    • iThemes Security

    Do NOT install too many plugins.


    7. Backup Strategy (Often Ignored)

    At minimum:

    • DB dump:mysqldump -u wpuser -p wordpress > backup.sql

    Better:

    • Use plugin (UpdraftPlus)
    • Or automate via cron

    8. What You Should Validate Now (Checklist)

    LayerCheck
    WebSite loads
    PHPPages render
    DBPosts save
    FSMedia uploads
    DNSDomain resolves
    TLSHTTPS works
    NGINXPermalinks work

    9. Common Mistakes at This Stage

    • Using admin username ❌
    • Leaving file permissions as 777 ❌
    • Not setting permalinks ❌
    • Not enabling HTTPS redirect ❌
    • Not securing wp-config.php ❌

    10. Next Step (Recommended)

    Now that base is working, the most valuable next evolution is:

    Option A (infra focus):

    → Convert this into Terraform-managed EC2 + SG + Route53

    Option B (app reliability):

    → Add:

    • RDS
    • EFS (shared uploads)
    • ALB + Auto Scaling

    Option C (DevOps maturity):

    → Add:

    • Git-based deployment
    • CI/CD pipeline

    If you want, I can now:

    • Audit your current setup (based on configs)
    • Or evolve this into production-grade architecture step-by-step