# Install WordPress manually
Source: https://docs.webgee.com/en/hosting/wordpress/how-to-install-wordpress-manually









Install WordPress without an installer. Applies to shared, reseller and Premium
hosting.

For a normal new site, use
[Softaculous](/en/hosting/wordpress/how-to-install-wordpress-with-softaculous) instead —
it does all of this in one step and assigns a unique database table prefix
automatically. Install manually when you need a specific version, a specific
directory layout, or you are recreating a site from parts.

## 1. Download WordPress [#1-download-wordpress]

Download the package from [wordpress.org/download](https://wordpress.org/download/)
and unzip it. You get a folder named `wordpress` — you will upload its
**contents**, not the folder itself.

## 2. Upload the files [#2-upload-the-files]

Upload into your document root, usually `public_html`. Any of these work:

* **File Manager** in cPanel — upload the zip and extract it there. This is by
  far the fastest option; WordPress is several thousand small files and FTP
  transfers them one at a time.
* **FTP or SFTP** — see
  [Upload files with FileZilla](/en/hosting/using-filezilla-to-upload-files-via-sftp-ssh-or-ftps-ssl-tls).
* **SSH** — see [Connect over SSH](/en/development/connect-via-ssh).

<Callout type="info">
  Upload the contents of the `wordpress` folder. If you end up with
  `public_html/wordpress/index.php`, your site is at `example.com/wordpress`
  rather than `example.com`.
</Callout>

## 3. Create the database [#3-create-the-database]

1. In cPanel, open **MySQL Database Wizard** under **Databases**.

   <img alt="The MySQL Database Wizard in cPanel" src="__img0" />

2. Enter a database name and select **Next Step**.

   <img alt="Step 1 of the wizard, creating a database" src="__img1" />

3. Enter a username and password, then select **Create User**.

   <img alt="Step 2 of the wizard, creating a user" src="__img2" />

4. Grant **All Privileges** and finish.

Keep the database name, username and password. Both names are prefixed with your
cPanel username.

## 4. Run the installer [#4-run-the-installer]

Visit `https://example.com`. WordPress detects that it is not configured and
starts its setup:

1. Enter the database name, username and password from step 3.
2. Leave **Database Host** as `localhost`.
3. **Change the table prefix** from `wp_` to something unique, such as
   `wg7x_`.

<Callout type="warn">
  Changing the table prefix matters if you run more than one WordPress site on
  the account. Sites sharing `wp_` will share Redis cache entries and start
  serving each other's content — see
  [Use Redis object caching without LiteSpeed Cache](/en/hosting/wordpress/how-to-configure-wordpress-to-use-redis).
</Callout>

4. Complete the site title and admin account. Do not use `admin` as the
   username — it is the first thing automated attacks try.

## Check it worked [#check-it-worked]

Visit `https://example.com` and confirm the site loads, then sign in at
`/wp-admin`.

If HTTPS shows a warning, the certificate has not been issued — see
[Install a free SSL certificate](/en/security-ssl/free-ssl-certificate).

## If the installer will not run [#if-the-installer-will-not-run]

* **"Error establishing a database connection"** — the credentials are wrong, or
  the user was not granted privileges on the database.
* **A directory listing appears instead** — the files are one level too deep.
  Move the contents up into the document root.
* **A 500 error** — check `error_log` in the document root. See
  [Find your error log](/en/development/how-do-i-find-my-error-log-file-to-find-errors-for-my-php-application).

## Related [#related]

* [Install WordPress with Softaculous](/en/hosting/wordpress/how-to-install-wordpress-with-softaculous)
* [Move a local WordPress site to your hosting](/en/hosting/wordpress/deploy-local-wordpress-setup-into-your-cpanel-account)
* [Force HTTPS on your site](/en/security-ssl/force-https)
