How To Set Up A WordPress Site On Your Own Servers (With Ubuntu & NGINX) – CloudSavvy IT


    WordPress Logo Dark Mode
    WordPress

    While you can always pay someone else a monthly fee to manage your WordPress instance, self hosting makes a lot of sense for many people who have existing hardware to take advantage of, or just want a fun project setting up their blog. We’ll show how to set up and configure a basic WordPress site on Ubuntu Linux using NGINX.

    Installing Dependencies

    First, we’ll need to install NGINX. Update apt and install it:

    sudo apt update
    sudo apt install nginx

    If you have a firewall enabled, like UFW, you’ll need to open it up:

    sudo ufw allow 'Nginx HTTP'

    We’ll configure NGINX once WordPress is installed. In the meantime, we’ll need to create a MySQL database for WordPress to use.

    If you don’t have MySQL installed, you can get it from apt. Make sure to run mysql_secure_installation once it’s installed to lock it down. You can read our guide on general database security for more info, but as long as MySQL is running on localhost, you should be fine.

    sudo apt install mysql-server
    sudo mysql_secure_installation

    Create a database for WordPress to use. You don’t need to set up tables or anything, just a blank database will do:

    CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

    Then create a user, called wordpressuser, and give it access to the database. Make sure to change the password.

    CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON * . * TO 'wordpressuser'@'localhost';
    FLUSH PRIVILEGES;

    WordPress runs on PHP, so it’ll need PHP installed to function. Install it alongside the following extensions:

    sudo apt install php-fpm php-mysql
    sudo apt install php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip

    And restart the PHP service to make sure it’s up to date with the new extensions. Note that you may need to change the version number here.

    sudo systemctl restart php7.4-fpm.service

    Installing WordPress

    Download the latest build of WordPress from their site:

    cd /tmp
    curl -LO https://wordpress.org/latest.tar.gz
    tar xzvf latest.tar.gz

    Then copy the sample configuration to the location WordPress actually reads from:

    cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php

    Move the temp directory to the proper install location, and chown the data:

    sudo cp -a /tmp/wordpress/. /var/www/wordpress
    sudo chown -R www-data:www-data /var/www/wordpress

    You’ll need to set the salts that are used for security and password management. You can fetch a new set of salts from WordPress’s API:

    curl -s https://api.wordpress.org/secret-key/1.1/salt/

    Then, open up WordPress’s config file, and paste the values in:

    sudo nano /var/www/wordpress/wp-config.php

    While you’re in this file, you’ll need to configure the database settings.

    define('DB_NAME', 'wordpress');
    
    /** MySQL database username */
    define('DB_USER', 'wordpressuser');
    
    /** MySQL database password */
    define('DB_PASSWORD', 'password');
    
    define('FS_METHOD', 'direct');

    Once that’s done, WordPress should be configured, and we’ll need to configure NGINX to serve the content.

    Configuring NGINX

    NGINX uses config files in /etc/nginx/sites-available/ to configure different endpoints. Create a new one for your site in this folder, and paste in the following:

    # Upstream to abstract backend connection(s) for php
    upstream php {
            server unix:/var/run/php/php7.4-fpm.sock;
            server 127.0.0.1:9000;
    }
    
    server {
            ## Your website name goes here.
            server_name domain.tld;
            ## Your only path reference.
            root /var/www/wordpress;
            ## This should be in your http block and if it is, it's not needed here.
            index index.php;
    
            location = /favicon.ico {
                    log_not_found off;
                    access_log off;
            }
    
            location = /robots.txt {
                    allow all;
                    log_not_found off;
                    access_log off;
            }
    
            location / {
                    # This is cool because no php is touched for static content.
                    # include the "?$args" part so non-default permalinks doesn't break when using query string
                    try_files $uri $uri/ /index.php?$args;
            }
    
            location ~ .php$ {
                    #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                    include fastcgi_params;
                    fastcgi_intercept_errors on;
                    fastcgi_pass php;
                    #The following parameter can be also included in fastcgi_params file
                    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            }
    
            location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
                    expires max;
                    log_not_found off;
            }
    }

    Note that you will need to put in your info for the hostname and other settings, as well as updating the PHP version if you are using a newer one. You will need to save this in sites-available, then symlink it to sites-enabled to turn it on.

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

    Once it’s enabled, restart NGINX, and you’ll see WordPress if you visit the site in your browser. You’ll need to do the first time setup walkthrough.

    sudo service nginx restart

    You’ll now be able to view your dashboard at any time at https://example.com/wp-admin/.

    Next, you’ll need to configure SSL to secure connections on your site. You can do this for free using certbot, a CLI frontend to LetsEncrypt’s free certificates.

    sudo apt-get install certbot
    
    sudo apt install python3-certbot-nginx

    Then, run certbot:

    sudo certbot nginx -certonly

    After that, you will need to restart NGINX.

    sudo service nginx restart

    Setting Up Your Site

    Congratulations! You have a running WordPress site. It probably looks terrible with the default theme. The first thing you’ll want to do is change the theme, which you can do from the dashboard:

    Whatever theme you choose, you’ll need to activate it from the appearance tab.

    Then, you can configure the settings and style by visiting the site and clicking “Customize” in the header. One of the best things you can do is add completely custom CSS to the site, which can change any element on the page.

    If you want to edit something in the theme, and you don’t mind messing around in PHP, you can edit your theme files directly. For example, I edited my theme file to layout a grid with two posts side, rather than just a list of posts.

    cd /var/www/wordpress/wp-content/themes/dark-press/
    sudo nano index.php



    Source link

    Previous articleSEC Charges Organizers Of Bitcoiin2Gen Fraudulent ICO
    Next articleJP Morgan claims Apple headset will have LiDAR, be released in Q1 2022