Wednesday, 25 May 2016

How to install Wordpress 4.5 on Ubuntu 16.04 LAMP


This document describes how to install and configure Wordpress 4.5 on Ubuntu 16.04. WordPress started in 2003 with a single bit of code to enhance the typography of everyday writing and with fewer users than you can count on your fingers and toes. Since then it has grown to be the largest self-hosted blogging tool in the world, used on millions of sites and seen by tens of millions of people every day. This tutorial explains the process of installing Wordpress 4.5 on Ubuntu 16.04 in the form of a simple-to-follow guide.

1 Preliminary Note

This tutorial is based on the Ubuntu 16.04 server installation CD. You have to set up a basic Ubuntu 16.04 (Xenial Xerus) server installation before you continue with this tutorial. The system should have a static IP address. I use192.168.1.100 as my IP address in this tutorial and server1.example.com as the hostname.  The server must have a LAMP server installed in Ubuntu 16.04 e.g. as described in this tutorial before you proceed.

2 WordPress Database initialization

I will create  the database for Wordpress as follows. Login to the MySQL or MariaDB database as root user:
mysql -u root -p
And create a database with the name wordpressdb, a user with the name wordpressuser and the password wordpresspassword. Please use different and secure password on your installation, the password used here is just an example!
CREATE DATABASE wordpressdb;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'wordpresspassword';
GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost;
Then exit the MySQL shell:
FLUSH PRIVILEGES;
exit
Restart services
service apache2 restart
service mysql restart

3 Installation of WorPpress 4.5

Go to the /tmp directory in which we will the download the latest version of the WordPress as follows:
cd /tmp
wget http://wordpress.org/latest.zip
We have to install unzip to unpack the WordPress archive:
apt-get install unzip
Unzip the WordPress zip archive in the /var/www/html folder:
unzip -q latest.zip -d /var/www/html/
Now set appropriate permissions for the WordPress directory.
chown -R www-data:www-data /var/www/html/wordpress
chmod -R 755 /var/www/html/wordpress
Further, we need to create the uploads directory beneath the wp-content directory at our document root. This will be the parent directory of our content: 
mkdir -p /var/www/html/wordpress/wp-content/uploads
We need to allow the web server itself to write to this directory. We can do this by assigning user and group ownership of this directory to our web server user www-data. This will allow the web server to create files and directories under this directory, which will permit us to upload content to the server. Proceed like this:
chown -R www-data:www-data /var/www/html/wordpress/wp-content/uploads
Now proceed to the web installation of Wordpress. Go to the URL http://192.168.1.100/wordpress/ in your web browser. The WordPress installer will show up.
Select language and press Continue:
Select the language in WordPress  
The welcome screen shows up in the selected language. Click on Let's go.
The WordPress welcome screen in your language shows up.
Type in the Login details of the WordPress database that we created in step 2. The database host is "localhost" and the prefix can be left at its default. Then click on the "Submit" button.
Enter the WordPress database details.
Wordpress saves the database configuration details to the file /var/www/html/wordpress/wp-config.php. Click on "Run the install" to proceed to the next part of the installer.
Now enter some details for the Blog like website title, admin username, password and email address. I used these values:
Site Title = My Wordpress Blog
Admin Email = admin@example.com
Username = admin
Admin password = howtoforge
The above values are just examples and you should use the real title and email address here. Using admin as administrator name is ok for an internal website but you might want to use a nonstandard name or your personal name instead.
Set the WordPress title, username and password.
The press InstallWordpress to finish the installation:
Wordpress installation finished.

Now we will proceed towards the login page by pressing LogIn:
WordPress Login page.
Type in the credentials that you selected during WordPresspress installation. The WordPress Dashboard will show up.
The WordPress Dashboard.
This part is optional.
By default, WordPress creates URLs dynamically that look something like this http://server_domain_name_or_IP/?p=1. This isn't exactly the most useful interface for visitors or search engines, so most users want to modify this. WordPress has the ability to create "pretty" permalinks which will clean up the URL into a more human-friendly format. The following steps show you how to setup pretty permalinks in your WordPress Blog.

6.1 Apache Rewrite

We will modify the apache virtual host file for Wordpress 4.5 to allow .htaccess overrides. Add the following (red) lines in the 000-default.conf file:
nano /etc/apache2/sites-available/000-default.conf
[...]
 ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ServerName server1.example.com
        <Directory /var/www/html/>
        AllowOverride All
        </Directory>
[...]
Next, we have to to enable the Apache rewrite module. Run:
a2enmod rewrite
service apache2 restart
Now we can easily adjust the permalink settings through the WordPress administration interface. Go to Settings-->Permalinks:
I'll choose "Post name" as Pretty-Link format for my blog so that the Post title is used in the URL.
When you have made your selection, click "Save Changes" to generate the rewrite rules.
Congratulations! You now have a fully functional WordPress 4.5 instance on your Ubuntu 16.04 :)


Performance monitoring with Monitorix on Ubuntu 16.04


This tutorial shows the installation and configuration of Monitorix on Ubuntu 16.04 (Xenial Xerus). Monitorix is a free, lightweight, open source monitoring tool designed to monitor as many services and system resources as possible on servers and desktops. It consists mainly of two programs: a collector, called Monitorix, which is a Perl daemon that is started automatically as a system service, and a CGI script called monitorix.cgi. Since 3.0 version Monitorix includes its own HTTP server built in, so you aren't forced to install a third-party web server to use it.
You can download it onwww.monitorix.com

Step 1: Add the Monitorix Repository

In this step, we will add the Monitorix Ubuntu repository to the /etc/apt/sources.list file.
First we make a backup of the original sources.list:
cp -pf /etc/apt/sources.list /etc/apt/sources.list_bak
Then open the sources.list file in an editor. I'll use nano here:
sudo nano /etc/apt/sources.list
Note: It´s strongly recommended to backup the original file prior to making any change.

This will open a window like this:

Ubuntu sources.list file.

Place the cursor to the end of the file and add this line:
deb http://apt.izzysoft.de/ubuntu generic universe

This repository is only for debian and its derivatives like ubuntu.

Step 2: Add the PGP Key

Once the repository is added, we have to download (or add) the PGP key and "install" it into the system. You can download the key directly fromhttp://apt.izzysoft.de/izzysoft.asc with wget.
sudo apt-get -y install wget
cd /tmp
wget http://apt.izzysoft.de/izzysoft.asc
Now, we must go to the directory where we saved the .asc file and open a terminal window, to run the following command:
sudo apt-key add izzysoft.asc
and then update the repository with:
sudo apt-get update

Step 3: Installing Monitorix

Now install the "monitorix" package. Apt will install the dependencies automatically.
sudo apt-get -y install monitorix apache2-utils

Step 4: Configuring Monitorix

We have the option to configure the monitorix.conf located at /etc/monitorix/monitorix.conf:
sudo nano /etc/monitorix/monitorix.conf
 A window like this will be open:

The monitorix.conf file opened in the nano editor.

Note: I'll strongly recommend to backup this file prior any change.
Search for the lines:
<auth>
 enabled = n
 msg = Monitorix: Restricted access
 htpasswd = /var/lib/monitorix/htpasswd
 </auth>
and enable authentication by changing enabled to "y":
<auth>
 enabled = y
 msg = Monitorix: Restricted access
 htpasswd = /var/lib/monitorix/htpasswd
 </auth>
Once configured, we have to restart the monitorix service:
sudo service monitorix restart
Add a username and password for the Monitorix login. I will use the username "admin" with password "howtoforge" in the example below. Please choose a more secure password on your system :)
sudo htpasswd -d -c /var/lib/monitorix/htpasswd admin
We use the -d parameter to encrypt the password with crypt() as required by Monitorix. The dialog of the htpasswd command will be like this.
david@desktop:/tmp# sudo htpasswd -d -c /var/lib/monitorix/htpasswd admin
New password:
Re-type new password:
Adding password for user admin

Step 5: Starting Monitorix

Point the browser to http://192.168.1.100:8080/monitorix/ (replace the IP with the IP of your server) and you will see:
Select the time range in Monitorix.

Interface

The Monitorix performance graphs.

That's it!

Copying Files

cp (copy)

cp file1 file2 is the command which makes a copy of file1 in the current working directory and calls it file2
What we are going to do now, is to take a file stored in an open access area of the file system, and use the cp command to copy it to your unixstuff directory.
First, cd to your unixstuff directory.
% cd ~/unixstuff
Then at the UNIX prompt, type,
% cp /vol/examples/tutorial/science.txt .
Note: Don't forget the dot . at the end. Remember, in UNIX, the dot means the current directory.
The above command means copy the file science.txt to the current directory, keeping the name the same.
(Note: The directory /vol/examples/tutorial/ is an area to which everyone in the school has read and copy access. If you are from outside the University, you can grab a copy of the file here. Use 'File/Save As..' from the menu bar to save it into your unixstuff directory.)

Exercise 2a

Create a backup of your science.txt file by copying it to a file called science.bak

 Moving files

mv (move)

mv file1 file2 moves (or renames) file1 to file2
To move a file from one place to another, use the mv command. This has the effect of moving rather than copying the file, so you end up with only one file rather than two.
It can also be used to rename a file, by moving the file to the same directory, but giving it a different name.
We are now going to move the file science.bak to your backup directory.
First, change directories to your unixstuff directory (can you remember how?). Then, inside the unixstuff directory, type
% mv science.bak backups/.
Type ls and ls backups to see if it has worked.

Removing files and directories

rm (remove), rmdir (remove directory)

To delete (remove) a file, use the rm command. As an example, we are going to create a copy of the science.txt file then delete it.
Inside your unixstuff directory, type
% cp science.txt tempfile.txt
% ls
% rm tempfile.txt
% ls
You can use the rmdir command to remove a directory (make sure it is empty first). Try to remove the backups directory. You will not be able to since UNIX will not let you remove a non-empty directory.

Exercise 2b

Create a directory called tempstuff using mkdir , then remove it using the rmdir command.

Displaying the contents of a file on the screen

clear (clear screen)

Before you start the next section, you may like to clear the terminal window of the previous commands so the output of the following commands can be clearly understood.
At the prompt, type
% clear
This will clear all text and leave you with the % prompt at the top of the window.

cat (concatenate)

The command cat can be used to display the contents of a file on the screen. Type:
% cat science.txt
As you can see, the file is longer than than the size of the window, so it scrolls past making it unreadable.

less

The command less writes the contents of a file onto the screen a page at a time. Type
% less science.txt
Press the [space-bar] if you want to see another page, and type [q] if you want to quit reading. As you can see, less is used in preference to cat for long files.

head

The head command writes the first ten lines of a file to the screen.
First clear the screen then type
% head science.txt
Then type
% head -5 science.txt
What difference did the -5 do to the head command?

tail

The tail command writes the last ten lines of a file to the screen.
Clear the screen and type
% tail science.txt
Q. How can you view the last 15 lines of the file?

Searching the contents of a file

Simple searching using less

Using less, you can search though a text file for a keyword (pattern). For example, to search through science.txt for the word 'science', type
% less science.txt
then, still in less, type a forward slash [/] followed by the word to search
/science
As you can see, less finds and highlights the keyword. Type [n] to search for the next occurrence of the word.

grep (don't ask why it is called grep)

grep is one of many standard UNIX utilities. It searches files for specified words or patterns. First clear the screen, then type
% grep science science.txt
As you can see, grep has printed out each line containg the word science.
Or has it ????
Try typing
% grep Science science.txt
The grep command is case sensitive; it distinguishes between Science and science.
To ignore upper/lower case distinctions, use the -i option, i.e. type
% grep -i science science.txt
To search for a phrase or pattern, you must enclose it in single quotes (the apostrophe symbol). For example to search for spinning top, type
% grep -i 'spinning top' science.txt
Some of the other options of grep are:
-v display those lines that do NOT match
-n precede each matching line with the line number
-c print only the total count of matched lines 
Try some of them and see the different results. Don't forget, you can use more than one option at a time. For example, the number of lines without the words science or Science is
% grep -ivc science science.txt

wc (word count)

A handy little utility is the wc command, short for word count. To do a word count on science.txt, type
% wc -w science.txt
To find out how many lines the file has, type
% wc -l science.txt

Summary

Command
Meaning
cp file1 file2
copy file1 and call it file2
mv file1 file2
move or rename file1 to file2
rm file
remove a file
rmdir directory
remove a directory
cat file
display a file
less file
display a file a page at a time
head file
display the first few lines of a file
tail file
display the last few lines of a file
grep 'keyword' file
search a file for keywords
wc file
count number of lines/words/characters in file