Franske ITC-2480 Lab 5
Revision as of 00:15, 13 February 2014 by Riptide wave (talk | contribs)
Introduction
In this lab you will learn about static network configuration of Debian Linux systems, how to install PHP and MySQL on your server, experiment with websites and databases, and some of the standard log files on your system.
Lab Procedure
Prerequisites
- Open an SSH console to your Linux system using the PuTTY software, login with your standard user account
- Make a note of the static IP address information for your particular system in the table below, it is based on the system name identification letter in vmWare. All systems will use a gateway address of 172.17.50.1 and a subnet mask of 255.255.255.0
System ID | Static IP |
A | 172.17.50.11 |
B | 172.17.50.12 |
C | 172.17.50.13 |
D | 172.17.50.14 |
E | 172.17.50.15 |
F | 172.17.50.16 |
G | 172.17.50.17 |
H | 172.17.50.18 |
I | 172.17.50.19 |
J | 172.17.50.20 |
K | 172.17.50.21 |
L | 172.17.50.22 |
M | 172.17.50.23 |
N | 172.17.50.24 |
O | 172.17.50.25 |
P | 172.17.50.26 |
Q | 172.17.50.27 |
R | 172.17.50.28 |
S | 172.17.50.29 |
T | 172.17.50.30 |
U | 172.17.50.31 |
V | 172.17.50.32 |
W | 172.17.50.33 |
X | 172.17.50.34 |
Y | 172.17.50.35 |
Z | 172.17.50.36 |
Set a static IP
- Using your text editor of choice, open up the file /etc/network/interfaces
- Notice how it is currently set to dhcp for the eth0 interface.
- To set a static IP, you will need to change iface eth0 inet dhcp to iface eth0 inet static.
- Now, under the iface line you just edited, you will need to enter the address, netmask, and gateway for the static network.
- Reminder: it is common practice to indent (tab) static network configuration information in the interfaces file.
- Your configuration should be similar to this:
auto eth0 iface eth0 inet static address xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx gateway xxx.xxx.xxx.xxx
- Now save the file, and exit your file editor.
- Now we are going to apply the static IP change. Try using ifconfig to view your active configuration now and you should see that your old address is still active.
- NOTE: You should only do network configuration changes when you have physical access to a machine. This way, if you mess up your configuration you will be able to fix it from a local console.
- Using the ifdown and ifup command, we are going to restart the network interface, this step is required to apply the change.
- In a terminal, run sudo ifdown eth0 && sudo ifup eth0. Notice the two && symbols. This tells the linux shell that it should run the second command right after the first. If we do not define this, then we would be left with a machine that has its networking turned off.
- At this point, your machine should now be using a static address. You will lose your SSH connection because the IP your SSH session is connected to is no longer in use by your machine.
- Reconnect through SSH to your new IP address and verify it is now applied using the ifconfig command.
Install PHP & MySQL
- Using aptitude, install the php and mysql packages using aptitude install php5 mysql-server
- Note: Remember to do an aptitude update before installing packages to make sure you get the latest versions
- After the dependencies are found, go ahead and accept them to continue the install.
- During the mysql-server install, you will see a blue window (similar to the debian install screen) that will ask you to create a mysql root password. This password is what will be used to access the root account in mysql. Just like in linux, the mysql root account has full control of all databases hosted on the system. It does not need to be the same as your system root password but just like your system root password it is important that you keep it secure and don't forget what it is.
- After the install is complete, cd to /var/www
- At this point we will test to verify that php is working properly with Apache. Create a new file named phptest.php, and then open it in a text editor.
- Enter the following into the file:
<?php phpinfo(); ?>
- Now save the file, and on your local machine go to xxx.xxx.xxx.xxx/phptest.php in a web browser where xxx.xxx.xxx.xxx is your VM's static IP. You should now be on a page that shows your PHP Version, and system information. Use the "View Source" option in your browser to see what the HTML source code is for the page you're viewing is. Is it the same or different than the .php file you created? Why? How is this different than a standard .html file?
- Note: PHP files are really tiny scripts that the webserver must execute in order to render them into HTML for the browser, therefore you may need to make adjustments so that the www-data user (which is the user the Apache webserver runs as on Debian Linux) has execute permission for the .php files you create.
Experiment with Websites PHP
- In a previous lab we learned about editing the /var/www/index.html file to change the default web page displayed by your server. In a future lab you will install some PHP/MySQL based software which powers many Internet sites with forums, blogs, etc. Before we can do that we need to learn a little more about PHP and about databases. Like most software on Linux the Apache webserver configuration files are stored in the /etc directory. Specifically, you can find several of them which work together and are called from each other in /etc/apache2/ take a look in the /etc/apache2/sites-enabled/ directory. See how symlinks are used to point to configuration files which actually reside in the /etc/apache2/sites-available/ directory? This allows us to turn off and on various sites by creating or removing a symlink rather than by deleting the actual configuration file, a handy thing if we just want to temporarily disable a site.
- As you might have guessed the default site for your system is configured by the file linked to at /etc/apache2/sites-enabled/000-default If you open this file in your favorite text editor you will see a series of what Apache calls "directives" which explain how the webserver should function, what port it should listen on, where the website files will reside (/var/www), etc. Going into all of the different Apache directives is outside of the scope of this course but you will find a lot of documentation about them on the Internet.
- In addition to configuring Apache directly through it's configuration files you can also configure it through an interface like Webmin which we installed in a previous lab. Bring up the Webmin configuration page for Apache and take a look at the settings for the default site. Note how the things you saw directly in the configuration file match up with what you see in Webmin. One of the things you may be interested in seeing is how the webserver knows to display the index.html file from a deirctory if it exists and no specific file is requested in the URL. Take a look on the "Directory Indexing" page and see if you can find this information. You'll notice that there is a list of files, not just index.html which the server will display.
- In another section of this lab you created a basic phptest.php file and saw how the server executed the PHP code and turned it into an HTML page your browser could display. Because PHP offers an easy way to write web applications it powers much of the Internet. To prepare us for setting up some PHP applications in a future lab it will be helpful to know a little about how PHP scripts work. Read through the W3 Schools PHP Basics Tutorial (PHP Intro through PHP Superglobals) and try creating some PHP scripts on your own Linux server like the examples given in the tutorial pages to see if you can get them to run, try modifying them a little bit and see what the results are. There are many great Internet resources devoted to understanding how to do things with PHP so take some time to see how this language can be easily integrated in websites. You should definitely be familiar with editing PHP files to change variables, echo statements, etc. work which are all skills you'll need when installing PHP based website software.
- Try writing some simple PHP scripts on your own using variables and echo statements and make them available through your webserver. Edit your index.html file (or create a new index.php file which will be loaded instead if it exists) so there is a menu for you to find and run the various scripts you have created.
Experiment with Databases
- In order to do really powerful things with a website we need a database where we can store dynamic content which can be queried to automatically build site pages from a template. One of the most common databases is an SQL database, and MySQL has long been the most prevalent Linux SQL software. SQL is a standard way of interacting with a specific type of database called a relational database, we'll see why it's called a relational database in a minute. Each database is a collection of data stored in tables. You can think of a table as something like a spreadsheet with rows and columns, except we call the columns fields and the rows records (sometimes we actually call them rows too). The different tables are often related to one another, of course they are usually being used by the same web application, but usually the relationship goes deeper than that as we'll see in a little bit.
- To jumpstart our exploration of databases we'll download a pre-built sample database with a few tables and many records already in it and import it into our MySQL database server. Download the employees database file employees_db-full-1.0.6.tar.bz2 (about 26MB) and get it into your home directory. Instead of using the links browser to do this or downloading to your computer and then pushing this large file back across the Internet with an SCP/SFTP client like FileZilla a better choice might be to learn about the wget program which can be used like "wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2" to download the file into your current working directory.
- Figure out how to use the TAR program to unpack this .tar.bz2 file. Note that this file uses bz2 compression which takes longer to compress than gzip but can compress the files more. Once unpacked you should have an "employees_db" folder.
- Inside the employees_db folder you should have a number of .sql script files and dump files which can be used to restore the database to your system. Take a look at the employees.sql file, it's just a text file, which describes the format of the database. Also take a look at the load_employees.dump file, also just a text file, which contains all of the records from the employees table of the database. Note there are 300,000 some employee records in this database so you probably don't want to just use cat to view these files as it could take a while to print them out to your screen. Using the less program would be a better choice as it will allow you to exit viewing the file by pressing q at any time.
- We can interact with the MySQL server in many different ways. The first way we'll take a look at is through the command line mysql program. Run the "mysql -u root -p" command and enter the MySQL root password (which may be different than they system root password) to login to the mysql program with root permissions. The MySQL program actually stores it's own usernames and passwords as a MySQL database itself, you can create and modify these permissions from the mysql command line but we'll learn more about modifying them through the Webmin interface later.
- MySQL has it's own command line language the you can use through the "mysql>" prompt you are now running. For example, if we want to see a list of databases on the system we can run "SHOW databases;" run the command and note the databases that already exist by default.
- To import the employee database we can use the "source employees.sql;" command (assuming we were already working in the directory which contains the employees.sql file when we launched mysql. Import the employee database and verify the system now has an employees database.
- If we want to see all of the tables in the employees database we must first select the database we want to work on using the "USE employees;" command, run this followed by the "SHOW tables;" command to see a list of tables.
- To see a list of all the records in a table we need to run an SQL query like "SELECT * from employees" which will list all the records in the employees table of the employees database and display them. Remember that we previously selected to USE the employees database, this will be remembered until we USE a different database. Try displaying the records in a couple of different tables like employees and departments.
- There is much more that we can do from the MySQL command line but that would be a whole class or more itself. The MySQL program is well documented on the Internet and with these basic skills you should be able to figure out most of it. Before we leave the MySQL command line let's see how to delete the employees database. Run the command "DROP DATABASE employees;" to delete the entire database. Obviously the DROP command is one to be careful with as you can easily wipe out a huge database with one line! Type "exit;" to quit the MySQL program and return to a Linux shell.
- Now that you have learned a bit about MySQL databases from the command line let's see how they look in the Webmin web management interface. Log back in to your Webmin interface through a browser on your host system.
- Because MySQL was not installed when we first setup Webmin you need to "scan for new modules" first. Once that process has finished refresh the page to see that MySQL has been added to the server section of Webmin.
- Take a look at the Webmin MySQL module and see how users and permissions are configured.
- Load the employees.sql file through the Webmin MySQL module and see the employees database get added.
- Try browsing through the employees database using the Webmin interface including viewing tables and records inside of the tables.