This document describes how to install and configure WordPress MU with the latest version in market of WordPress 4 on Ubuntu 14.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.0 on Ubuntu 14.04 in the form of a simple-to-follow guide.
1 Preliminary Note
This tutorial is based on Ubuntu 14.04 server, so you should set up a basic Ubuntu 14.04 server installation before you continue with this tutorial. The system should have a static IP address. I use 192.168.0.100 as my IP address in this tutorial and server1.example.com as the hostname. You must have a LAMP server installed in Ubuntu 14.04 as mentioned in the tutorial to continue further.
2 Database initialization
I will create the database for the WordPress 4.0 as follows:
mysql -u root -p
Here we are adding database=wordpressdb user=wordpressuser and password=wordpresspassword:
CREATE DATABASE wordpressdb;
CREATE USER wordpressuser@localhost IDENTIFIED BY 'wordpresspassword';
GRANT ALL PRIVILEGES ON wordpressdb.* TO wordpressuser@localhost;
Further moving ahead:
FLUSH PRIVILEGES;
exit
Restart services
service apache2 restart
service mysql restart
3 Installation of WordPress 4.0
We will first make a directory temp in which I will the download the latest version of the WordPress as follows:
mkdir temp
cd temp
wget http://wordpress.org/latest.zip
We need to install unzip as by default it is now installed:
apt-get install unzip
Further moving ahead if you wish to work with images, install plugins and site updation with SSH credentials then we will install php5-gd libssh2-php
apt-get update
apt-get install php5-gd libssh2-php
unzip the WordPress zip file in the following created folder:
unzip -q latest.zip -d /var/www/html/
Now give appropriate permissions in the directory
chown -R www-data.www-data /var/www/html/wordpress
chmod -R 755 /var/www/html/wordpress
Further we need to manually 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 group ownership of this directory to our web server. 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 /var/www/html/wordpress/wp-content/uploads
Now we need to copy it to the default configuration file location to get WordPress to recognize the file. The sample configuration file is available at /var/www/html/wordpress:
cd /var/www/html/wordpress/
cp wp-config-sample.php wp-config.php
nano wp-config.php
[...]
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpressdb'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'wordpresspassword');
[...]
Change values as you gave at the time of database initialization.
3.1 Multiple site configuration
Now we will proceed with the multiple site configuration, for this we need to add these lines to our wp-config.php file just above the /* That’s all, stop editing! Happy blogging. */ line.
nano /var/www/html/wordpress/wp-config.php
/* Multisite */
define('WP_ALLOW_MULTISITE', true);
/* That's all, stop editing! Happy blogging. */
Now we will activate the apache Mod_Rewrite module:
a2enmod rewrite
Now we will change the default virtual host file for Apache as follows:
nano /etc/apache2/sites-enabled/000-default.conf
[...]
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory>
Restart Apache2 to make the services affective:
service apache2 restart
After that we will be installing the Wordpress 4 within browser.
4 Web installation
Open a browser of your choice and go to the URL http://192.168.0.100/Wordpress:
Select language and press Continue:
Now give the values as I gave in my case
Site Title = Wordpress-testsite Admin Email = admin@example.com Username = admin Admin password = howtoforge Confirm Admin Password = howtoforge
The above values will differ in you case, you can give any values of your choice. After giving the values press Install WordPress:
Now we will proceed towards the login page by pressing LogIn:
Give the credentials as you selected at the time of web WordPress installation. This will be your default welcome window of WordPress.
You can check the WordPress version in browser as:
4.1 Multiple sites configuration
Now goto Tools-->Network setup
Give the entries as follows
Network Title = Wordpress-testsite multisite
Network admin email = admin@example.com
and press Install
It will yield the following window:
Add the following to your wp-config.php file in /var/www/html/wordpress/ above the line reading /* That’s all, stop editing! Happy blogging. */:
nano /var/www/html/wordpress/wp-config.php
Give the entries as per the your output after the multisite installation. In my case it was:
[...]
/* Multisite */ define('WP_ALLOW_MULTISITE', true); define('MULTISITE', true); define('SUBDOMAIN_INSTALL', false); define('DOMAIN_CURRENT_SITE', '192.168.0.100'); define('PATH_CURRENT_SITE', '/wordpress/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); /* That's all, stop editing! Happy blogging. */
[...]
Note: In my case I am using 192.168.0.100 which will be different in your case
Add the following entries to your .htaccess file in /var/www/html/wordpress/, replacing other WordPress rules:
nano /var/www/html/wordpress/.htaccess
RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L]
Now relogin to the WordPress. After successfully setting up the Multisite Network, you need to switch to the Network Dashboard to configure network settings, add new sites, and do lots of other things. Take your mouse over to My Sites menu in the admin toolbar, a flydown popup will appear. Click on Network Admin-->Dashboard.
It will direct you to the Dashboard of the WordPress multisite.
Now you can create new site by clicking Sites-->Add New
Just add the values as per your requirement.
Congratulations! You now have a fully functional WordPress 4.0 instance with multiple site network on your Ubuntu 14.04 :)
7 Links
- WordPress : http://wordpress.org/
- Ubuntu : http://www.ubuntu.com/