Plainsurf Solutions

Plainsurf Solutions

The Ultimate Guide to Ngnix wp Setup

guide-to-ngnix-wp-setup

To host a WordPress website, we will use a combination of several services like Nginx, MySQL, and PHP-FPM. Ngnix wp setup is essential, each of these services plays an important role in the web hosting stack and is necessary for creating a reliable and efficient website.

In this blog we have provided step-by-step guide to Ngnix wp setup.

Hosting Prerequisites for WordPress:

Operating System: Ubuntu 22.04

Ubuntu 22.04 is a reliable and secure operating system that provides a stable environment for hosting your WordPress website.
Web Server: nginx 1.23

nginx 1.23 is a high-performance web server that efficiently handles incoming web requests for your WordPress website.
PHP Version: 8.1

PHP 8.1 is a powerful scripting language that enables dynamic content generation and execution for your WordPress website.
Database: MySQL 8.0

MySQL 8.0 is a robust and feature-rich relational database management system used to store and retrieve data for your WordPress website.
WordPress Version: 6.1

WordPress 6.1 is a popular and user-friendly content management system (CMS) that allows you to create, manage, and customize your website’s content.
By ensuring that you have these prerequisites met, you will have a suitable hosting environment for your WordPress website.

Nginx

Nginx is a high-performance web server that’s designed to handle large volumes of traffic. It’s often used as a reverse proxy server, which means it sits in front of other web servers and forwards requests to them. Nginx can also be used as a load balancer, distributing traffic across multiple servers to improve performance and reliability.

MySQL

MySQL is an open-source relational database management system that’s used to store data for web applications. It’s fast, reliable, and scalable, making it a popular choice for web developers. MySQL supports a wide range of features, including data replication, clustering, and transactions, making it an ideal choice for storing WordPress data.

PHP-FPM

PHP-FPM is a FastCGI implementation for PHP that’s used to handle PHP requests. It’s designed to be faster and more efficient than traditional CGI implementations, as it can handle multiple requests at once, reducing the overhead of creating new PHP processes. PHP-FPM is commonly used in conjunction with Nginx to handle dynamic content, such as PHP-based web applications.

Ngnix wp setup: Here are the steps you need to follow to host WordPress website:

1. Install Nginx: First step for Ngnix wp setup

First, you need to install Nginx on your Ubuntu server. You can do this by running the following command in the terminal:

sudo apt-get install nginx

2. Install PHP and MySQL

Next, you need to install PHP and MySQL on your server. You can do this by running the following commands:

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

sudo apt-get install php-fpm php-mysql mysql-server

During the installation process, you will be prompted to create a MySQL root password. Be sure to remember this password, as you will need it later.

3. Configure Nginx: Important step for Ngnix wp setup

Once you have installed Nginx, you need to configure it to work with PHP. To do this, create a new server block configuration file for your WordPress site by running the following command:

sudo vim  /etc/nginx/sites-available/your-domain-name.com

Replace “your-domain-name.com” with your actual domain name.

In the file, paste the following configuration:

server {

    listen 80;

    listen [::]:80;

    root /var/www/yourdomain.com;

    index index.php index.html index.htm;

    server_name yourdomain.com www.your-domain-name.com;

    location / {

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

    }

    location ~ \.php$ {

        include snippets/fastcgi-php.conf;

        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;

    }

}

Be sure to replace “your-domain-name.com” with your actual domain name.

Save the file and exit the editor.

Next, create a symbolic link to enable the server block by running the following command:

sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/

4. Install WordPress

Next, you need to download and install WordPress. You can do this by running the following commands:

cd /var/www/

sudo wget https://wordpress.org/latest.tar.gz

sudo tar -xzvf latest.tar.gz

This will download and extract the latest version of WordPress into the “/var/www/” directory.

5. Configure MySQL

Next, you need to create a new MySQL database and user for your WordPress site. You can do this by running the following commands:

sudo systemctl start mysql

sudo grep 'temporary password' /var/log/mysqld.log   // if not then move to next command

sudo mysql_secure_installation

# [ get password from grep command which is given in last of the line

then paste it in next command(secure installation),

enter new password - eg. Name@789    

re-enter the password - Name@789 ]   

During the installation you need to configure according to following steps

# change the password for root - no

# remove anonymous users - yes

# disallow root login remotely - no 

# remove test database and access to it - no

# reload privilege tables now - yes

mysql -u root -p   //enter in the mysql serve

CREATE DATABASE wordpress;

CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';

FLUSH PRIVILEGES;

exit

Replace “password” with a strong password of your choice.

6. Configure WordPress

cd /var/www/wordpress/

sudo mv wp-config-sample.php wp-config.php

Then, open the “wp-config.php” file in a text editor and update the following lines:

define(‘DB_NAME’, your-db-name);

define(‘DB_USER’, your-db-user);

define(‘DB_PASSWORD’, ‘password’);

define(‘DB_HOST’, 127.0.0.1);

Replace “password” with the password you set for the MySQL user.

Save the file and exit the editor.

7. Restart Nginx and PHP: Compeletion of Ngnix wp setup

sudo systemctl restart nginx

sudo systemctl restart php8.1