How to Install WordPress on Rocky Linux 9 with LEMP Stack

WordPress is a Content Management System (CMS), a platform you can use to build and maintain a website without any knowledge of coding. This software enables you to customize just about every aspect of your site.

Prerequisites:

WordPress requires a LEMP stack installed and running

For detailed installation, refer to LEMP Stack on Rocky linux 9

Once you've got the Web server, PHP, and DataBase services installed. We will proceed with configuring them to our requirements so they can host the WordPress website.

Creating the New Database

We will now create a Database and a user which interacts with the newly created database. This will be used to store WP data on it, So Let's login to MariaDB with the following command,

mysql -u root -p

Create a new database called wordPress,

CREATE DATABASE wordpress;

Next, create a new MySQL user account that we will use to operate on WordPress's new database, with the username "admin"

CREATE USER `admin`@`localhost` IDENTIFIED BY '<Enter Strong Password here>';

Link the user and DB together by granting our user access to the database,

GRANT ALL ON wordpress.* TO `admin`@`localhost`;

Flush the privileges so that MySQL knows about the user permissions we just added,

FLUSH PRIVILEGES;

Exit out of the MySQL command prompt by typing,

exit

Output:

MariaDB [(none)]> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.002 sec)

MariaDB [(none)]> CREATE USER `admin`@`localhost` IDENTIFIED BY 'STRONG PASSWORD HERE';
Query OK, 0 rows affected (0.003 sec)

MariaDB [(none)]> GRANT ALL ON wordpress.* TO `admin`@`localhost`;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> exit

Configure Nginx

Now, in configuring the Nginx server, we will need to provide it with the complete path to the WordPress files and directories located in this server.

We will create a root directory and provide this information to the Nginx server block. If you also have a domain that you want to use for this WordPress, you should include it in the Server Block as well.

Create a directory for storing our WordPress files with the below command,

Ensure you replace example.com with your preferred domain name.

mkdir -p /var/www/html/example.com/public_html

Next, create an Nginx configuration file for your website, and do note, that the file name should have an .conf extension as shown below.

nano /etc/nginx/conf.d/example.com.conf

Ensure you replace example.com with your preferred domain name.

  server {
    listen         80;
    listen         [::]:80;
    server_name    example.com www.example.com;
    root           /var/www/html/example.com/public_html;
    index          index.html;

    location / {
      index index.php index.html index.htm;
      try_files $uri $uri/ =404;
    }
    location ~* \.php$ {
      fastcgi_pass unix:/run/php-fpm/www.sock;
      include         fastcgi_params;
      fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
      fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }
}

After you save and exit the file, Test the above configuration for any errors. This can be done by,

nginx -t

Once that is successful, restart the Nginx for the changes to take effect,

systemctl restart nginx

Download and Extract WordPress

Download the WordPress by using the curl command and extract the downloaded file,

Remember to replace example.com with a domain name in the below commands.

curl -L -O http://wordpress.org/latest.tar.gz

tar xf latest.tar.gz

mv wordpress/* /var/www/html/example.com/public_html/

Next, we will configure the wp-config.php as shown below:

 cd /var/www/html/example.com/public_html/

 cp wp-config-sample.php wp-config.php

Using your favorite editor, edit the file wp-config.php

 nano wp-config.php

replace the following contents with the correct values

 /** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** Database username */
define( 'DB_USER', 'admin' );

/** Database password */
define( 'DB_PASSWORD', 'password_here' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

That is, enter the DB name, username, and password that was configured earlier.

Update file permissions

chown -R nginx:nginx /var/www/html/example.com/public_html

chcon -R -t httpd_sys_content_t /var/www/html/example.com/public_html

Navigate to your browser

(http://server_IP/ or http://example.com)

Start WordPress installation by clicking on the Run the installation button:

Provide the requested information

Once WordPress is installed log in with your new user credentials