Installing LAMP and WordPress on Ubuntu Running on A BeagleBone Black
Since I have been using WordPress with a couple blogs for almost 8 years now, I am fairly comfortable with the platform. With my weekly BeagleBone Black challenges of late, I felt that installing WordPress would be a great idea to try. I can tell you that the BeagleBone Black, once again, didn’t disappoint.
Before we begin, I want to just say that running WordPress on the BBB is an academic endeavor. I wouldn’t think about hosting a public blog due to performance with this configuration but it is perfect for my needs as a teaching tool. My oldest son just turned seven and is incredibly inquisitive about science. He catches bugs, lizards, etc. and takes pictures of them. He loves astronomy and never stops asking when the sun will go supernova. I thought it would be a great for him to document his findings in a blog to teach him more about the scientific method, documenting his findings and getting more comfortable with the computer. As an added bonus, I want to see where this takes him.
As I mentioned my previous blog, I created a “snapshot” of sorts by starting off with a fresh version of Ubuntu then adding my base setup changes then finally creating the tarball of the entire OS. This way, I can simply reflash the card, restore my base install and begin on the next project. That’s what I am doing with this. This is basically my setup:
I didn’t include the wireless, cloud9, or OpenGate for this because I wasn’t sure where I was going to put WordPress and was concerned with space. Turns out, that space wasn’t an issue (other than bleeding off CPU cycles).
Once I had my base install configured, I needed to install and configure three additional components before WordPress:
- mySQL Database
- Apache Web Server
- PHP Scripting Language
This comprises what is called a LAMP server (Linux Apache Mysql Php)
Installing LAMP on BeagleBone Black Ubuntu
At first, I thought this was going to be easy. I found a package in the package manager for installing LAMP and tried it out. I’m not saying it doesn’t work, but I will say that I had to reflash a couple times and it never really worked well for me. Also, I really wanted to have a little more control over what I was installing, so I ended up installing and configuring each component separately. We’re going to do that here. I based my steps off a couple walk-through guides found on Ubuntu Server Guide and DigitalOcean.com (links to these and other resources will be found at the end of this walk-through).
MySQL Installation and Configuration
Real quick, before we start installing packages, let’s make sure we’re up to date with everything:
sudo apt-get update sudo apt-get upgrade
Since we already have the Linux part of LAMP, let’s move to mySQL. You can install this with a simple command of:
sudo apt-get install mysql-server
You will be prompted to provide a password for the root account. It is always strongly advised to do so and remember this password. If you forget, you won’t be able to move forward.
Once the install is complete, we need to test the install and then create a database for our installation. Before we continue, think about the name or type of WordPress site you want to create. Since mine is to help teach my son about science, I will call mine, ‘science’. You want to keep it small and if you have more than two words, separate with underscores or dashes (‘_’ or ‘-’).
To test your installation, type:
mysql -u root -p
You will be prompted to for the password you provided during the installation. Once you have successfully done this, type:
This command will list out a table of databases that are currently available.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.01 sec)
If you have made it this far, you are ready to continue.
Now we need to create a user, a table, and provide permissions. I used ‘scienceadmin‘ for the username and ‘science‘ for the database. Simply replace these with your credentials. Oh, and with these commands, don’t forget the semicolon. If you do, it’s not a big deal, just type `;` on the next line and the command will execute.
Create the Database:
create database science;
Create the user:
create user scienceadmin@localhost;
Set a password for this user:
set password for scienceadmin@localhost=password("squirrelhunter01");
Create the permissions for this user to use the database:
grant all privileges on science.* to scienceadmin@localhost identified by 'squirrelhunter01';
Finally, let’s refresh MySQL:
To get out of mySQL:
Installing Apache Web Server
sudo apt-get install apache2
After the install you can start it up with this command:
sudo service apache2 start
and test it in your browser: “http<beaglebone IP or personalized hostname>/”
You should see the “It Works!” page.
We’re done with Apache for now.
To install or update PHP, run the following command:
sudo apt-get install php5 libapache2-mod-php5 php5-mysql
Once this is complete, let’s test it. Navigate to /var/www and create a file named, ‘test.php‘ then add the following text:
<?php phpinfo(); ?>
Next, fire up a web browser and navigate to `http://<bbb_IP>/test.php`.
You should see a page filled with server/site/php goodness.
And we are done with the LAMP installation. Easy right?
WordPress Install and Configuration
Now we get to the meat of this walk-through. Let’s first decide where we’re going to put our WordPress site. When you download WordPress and unpack it, you can put it in your root or in a sub-folder. You an even have several instances running at the same time in several folders. When I was working through this, I went a road less traveled by putting the site on a thumb drive and created a symlink from the web server root. This creates quite a mess (I will write up a way to do this shortly) but for the purpose of getting a wordpress site up and running, we’ll start with the easy way.
The Easy Way
At this point, I am showing 1.1 GB of free drive space. This should be more than plenty to run WordPress right off the BBB. First let’s download the WordPress files. I can simply download the latest version to my home directory like this:
dfrey@ubuntu-armhf:~$ cd dfrey@ubuntu-armhf:~$ wget -O wordpress.tar.gz http://wordpress.org/latest.tar.gz ... dfrey@ubuntu-armhf:~$ tar -xvpzf wordpress.tar.gz ...
Now, we should have the WordPress site files that I can copy to any directory. Let’s try it out in the root of our web site.
sudo cp -r wordpress/* /var/www/
This just copied all the files to the root of my web server. Let’s go check it out in the browser: `http://<bbb_ip>/`
huh? We still get the same message as before. Well, this is because we need to configure a couple things. Since this is a manual installation of WordPress, we have a little more work to do but it’s easy.
In your browser, navigate to, `http://<bbb_ip>/wp-admin/`
You should see a message indicating the wp-config.ini is missing. Click the `Create a Configuration File` button and you will navigate to the setup configuration introduction page. You are going to need to have the following ready (we did most of this already so it’s no big deal). I’ll add my info from above as an example:
- Database name – ‘science‘
- Database username ‘scienceadmin‘
- Database password ‘squirrelhunter01‘
- Database host ‘localhost‘
- Table prefix (if you want to run more than one WordPress in a single database) – You can create whatever prefix you like. If I were going to put more than one WP site in the same database on this BBB, I would choose, ‘sci_‘, but for now we’ll go with ‘wp_‘
And click ‘Submit‘
When I ran this, The wp-config.php file couldn’t be written. Not that this is a huge problem now but it will be shortly so let’s address this issue now.
We installed Apache as root, so the folders that where created by the installer are owned by root. Apache runs under a user named www-data. We need to change the ownership of the www folder so that apache can do it’s magic. Navigate to /var then run this command:
sudo chown -R www-data:www-data www
This will change the ownership and group membership of the www folder and everything underneath it. Now we can continue. Hit your back button in the browser so you can see the configuration form again. Click submit again and you should now get the “All right Sparky…” message indicating the config file was created successfully.
Now, let’s head on to setting up the actual WordPress site. Click the “Run the Install” button. Here, you will enter the title of the site that displays on the header, the user name of the site administrator and the password for this user. Don’t worry. You didn’t miss anything, we’ll create this account inside of WordPress now. These are for the site not the database. They can be completely different or exactly the same. It’s up to you.
Site Title: Science
Email: email@example.com (just made that up)
Privacy: (turned this off)
Now click on the ‘Install WordPress` button. The scripts will run for a while then take you to the `Success Page`. Click Login then enter your username and password. If everything was done correctly, you now have a spanky brand new WordPress site.
After installing, I still have just under 1GB of space left. If you intend to install other things on your BBB, you might want to install other things off the board, on a thumb drive. That walk-though will be coming in a couple days.
Oh, I forgot one thing. You need to remove two files from your /var/www folder:
- index.html – this will override the WordPress pages (its why we didn’t get an error when we tried it before configuring WordPress)
- test.php – this has some server-specific information that a hacker could use against your BBB.
Now got to `http://<bbb_ip>/>` in your browser and you will see the public version of your site. Go WordPress Crazy and have fun.
Feel free to leave comments if you have any questions or if you found this walk-though useful.
I got so excited to post this, I forgot my link references. Here you go: