Apachemysqlphp: To Find The Ubuntu Server Guide Related To Your Specific Version, Please Go To
Apachemysqlphp: To Find The Ubuntu Server Guide Related To Your Specific Version, Please Go To
00459912855978
UTF-8
Search
Community Documentation
Login to Edit
ApacheMySQLPHP
To find the Ubuntu Server Guide related to your specific version, please go to:
3. Virtual Hosts 6. Installing PHP 5 1. Checking PHP 5 installation 2. Troubleshooting PHP 5 7. Installing PHP 4 1. Troubleshooting PHP 4 8. Installing MYSQL with PHP 5 9. Installing MYSQL with PHP 4 10. After installing PHP 11. After installing MySQL 1. Set mysql bind address 2. Set mysql root password 3. Create a mysql database 4. Create a mysql user 5. Backup-Settings 6. Alternatively 12. Phpmyadmin and mysql-admin 1. Troubleshooting Phpmyadmin & mysqladmin 2. Alternative: install phpMyAdmin from source 3. Mysql-admin 4. For more information 13. Edit Apache Configuration 14. Edit PHP Configuration to Work With MYSQL (Ubuntu Dapper) 1. First solution 2. Second solution 15. Run, Stop, Test, And Restart Apache 16. Using Apache 17. Status 18. Securing Apache 19. Password-Protect a Directory 1. Password-Protect a Directory With .htaccess 20. thumbnails 21. Known problems 1. Skype incompatibility 22. Other Apache Options 23. Further Information
This is to help people setup and install a LAMP (Linux-Apache-MySQL-PHP) server in Ubuntu, including Apache 2, PHP 5 (optionally PHP 4 in Ubuntu 6.10 and lower), and MySQL 4.1 or 5.0.
When installing from the Ubuntu 6.06 (Dapper Drake) "Server cd", you have the option of choosing to install a LAMP setup at the inital Ubuntu installation screen. That will install apache2, php5 and mysql 5.0.
Check Requirements
As of Ubuntu 7.04 (Feisty), all PHP4 packages have been dropped from the repositories, as the PHP4 branch is not being further developed/supported by the PHP Group. Everything in this article pertaining to PHP4 can therefore only be executed in Ubuntu 6.10 and lower. If you absolutely depend on PHP4 and would like to use the current Ubuntu release, you have to compile it from source.
Some applications require php4 while others will work with php5. Be sure to install the version of php and the corresponding apache2 module for it. You cannot have both php4 and php5 modules running on the same instance of apache2 at the same time. Installing one may remove the other. If you have both php4 and php5 installed, be aware of which version of the apache2 php module you have. If libapache2-mod-php5 is already installed, the php4 package will install libapachemod-php4 and not libapache2-mod-php4 package. If libapache2-mod-php5 is not installed, installing php4 will install the apache2 php module (libapache2-mod-php4). See this example. Most web applications will use Apache2, php5 and mysql5.0. If no specific versions are mentioned in your web application's documentation, use those.
To install the default LAMP stack in Ubuntu 6.06 LTS (Dapper Drake)
If you did not use the LAMP installer option from the server cd but want to install those same packages without having to reinstall your operating system, use any method to install the following packages
apache2 php5-mysql libapache2-mod-php5 mysql-server
All of those packages are in the Ubuntu 6.06 LTS (Dapper Drake) main repository. Once LAMP is installed, you need to set a mysql root password and then, depending on your web application, create a database, user and password. That's it!
To install the default LAMP stack in Ubuntu 7.04 (Feisty Fawn) Ubuntu 7.10 (Gutsy Gibbon) Ubuntu 8.04 LTS (Hardy Heron), 8.10 (Intrepid Ibex), 9.04 (Jaunty Jackalope), 9.10 (Karmic Koala), 10.04 (Lucid Lynx) and 11.04 (Natty Narwhal)
As of the 7.04 release, the Ubuntu base system includes Tasksel.
Ubuntu 11.04 base system does not include tasksel. You will need to install it.
sudo apt-get install tasksel
You can either install LAMP using tasksel or install the LAMP packages as detailed above.
sudo tasksel install lamp-server
See Tasksel - be warned, only use tasksel to install tasks, not to remove them - see
https://launchpad.net/bugs/574287
Note: This assumes you have no other programs that require any of these packages. You might wish to simulate this removal first, and only remove the packages that don't cause removal of something desired.
apache2 apache2-mpm-prefork apache2-utils apache2.2-common libapache2-modphp5 libapr1 libaprutil1 libdbd-mysql-perl libdbi-perl libmysqlclient15off libnet-daemon-perl libplrpc-perl libpq5 mysql-client-5.0 mysql-common mysqlserver mysql-server-5.0 php5-common php5-mysql
To also remove the debconf data, use the purge option when removing. To get rid of any configurations you may have made to apache, manually remove the /etc/apache2 directory once the packages have been removed.
Installing Apache 2
To only install the apache2 webserver, use any method to install
apache2
With your web browser, go to the URI http://localhost : if you read "It works!", which is the content of the file /var/www/index.html , this proves Apache works.
Troubleshooting Apache
If you get this error: apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for
ServerName
then use a text editor such as "sudo nano" at the command line or "gksudo gedit" on the desktop to create a new file,
sudo nano /etc/apache2/conf.d/fqdn
or
gksu "gedit /etc/apache2/conf.d/fqdn"
then add
ServerName localhost
to the file and save. This can all be done in a single command with the following:
echo "ServerName localhost" | sudo tee /etc/apache2/conf.d/fqdn
Virtual Hosts
Apache2 has the concept of sites, which are separate configuration files that Apache2 will read. These are available in /etc/apache2/sites-available. By default, there is one site available called default this is what you will see when you browse to http://localhost or http://127.0.0.1. You can have many different site configurations available, and activate only those that you need. As an example, we want the default site to be /home/user/public_html/. To do this, we must create a new site and then enable it in Apache2. To create a new site:
Edit the new configuration file in a text editor "sudo nano" on the command line or "gksudo gedit", for example: gksudo gedit /etc/apache2/sites-available/mysite Change the DocumentRoot to point to the new location. For example,
/home/user/public_html/
You can also set separate logs for each site. To do this, change the ErrorLog and CustomLog directives. This is optional, but handy if you have many sites Save the file
Now, we must deactivate the old site, and activate our new one. Ubuntu provides two small utilities that take care of this: a2ensite (apache2enable site) and a2dissite (apache2disable site).
sudo a2dissite default && sudo a2ensite mysite
If you have not created /home/user/public_html/, you will receive an warning message To test the new site, create a file in /home/user/public_html/:
echo '<b>Hello! It is working!</b>' > /home/user/public_html/index.html
Installing PHP 5
To only install PHP5. use any method to install the package
libapache2-mod-php5
which creates a symbolic link /etc/apache2/mods-enabled/php5 pointing to /etc/apache2/modsavailble/php5 . Except if you use deprecated PHP code beginning only by "<?" instead of "<?php" (which is highly inadvisable), open, as root, the file /etc/php5/apache2/php.ini , look for the line "short_open_tag = On", change it to "short_open_tag = Off" (not including the quotation marks)
and add a line of comment (beginning by a semi-colon) giving the reason, the author and the date of this change. This way, if you later want some XML or XHTML file to be served as PHP, the "<?xml" tag will be ignored by PHP instead of being seen as a PHP code mistake. Relaunch Apache 2 by
sudo service apache2 restart
In /var/www , create a text file called "test.php", grant the world (or, at least, Ubuntu user "apache") permission to read it, write in it the only line: "<?php phpinfo(); ?>" (without the quotation marks) then, with your web browser, go to the URI "http://localhost/test.php": if you can see a description of PHP5 configuration, it proves PHP 5 works with Apache.
Troubleshooting PHP 5
Does your browser ask if you want to download the php file instead of displaying it? If Apache is not actually parsing the php after you restarted it, install libapache2-mod-php5. It is installed when you install the php5 package, but may have been removed inadvertently by packages which need to run a different version of php. If sudo a2enmod php5 returns "$ This module does not exist!", you should purge (not just remove) the libapache2-mod-php5 package and reinstall it. Be sure to clear your browser's cache before testing your site again. To do this in Firefox 4: Edit Preferences Privacy History: clear your recent history Details : choose "Everything" in "Time range to clean" and check only "cache", then click on "Clear now". Remember that, for Apache to be called, the URI in your web browser must begin with "http://". If it begins with "file://", then the file is read directly by the browser, without Apache, so you get (X)HTML and CSS, but no PHP. If you didn't configure any host alias or virtual host, then a local URI begins with "http://localhost", "http://127.0.0.1" or http://" followed by your IP number. If the problem persists, check your PHP file authorisations (it should be readable at least by Ubuntu user "apache"), and check if the PHP code is correct. For instance, copy your PHP file, replace your whole PHP file content by "<?php phpinfo(); ?>" (without the quotation marks): if you get the PHP test page in your web browser, then the problem is in your PHP code, not in Apache or PHP configuration nor in file permissions. If this doesn't work, then it is a problem of file authorisation, Apache or PHP configuration, cache not emptied, or Apache not running or not restarted. Use the display of that test file in your web browser to see the list of files influencing PHP behaviour.
Installing PHP 4
To install PHP4, Use any method to install
php4
If PHP5 is present on your system, installing php4 will install the php module for apache (version 1.3) and not apache2. To use php4 with apache2, install
libapache2-mod-php4
Troubleshooting PHP 4
Does your browser ask if you want to download the php file instead of displaying it? If Apache is not actually parsing the php after you restarted it, install libapache2-mod-php4. It is installed when you install the php4 package, but may have been removed inadvertently by packages which need to run a different version of php. You may also need to actually enable it, by doing sudo a2enmod php4 followed by sudo /etc/init.d/apache2 restart. If sudo a2enmod php4 returns "$ This module does not exist!", you should purge (not just remove) the libapache2-mod-php4 package and reinstall it. Be sure to clear your browser's cache before testing your site again.
Before you can access the database from other computers in your network, you have to change its bind address. Note that this can be a security problem, because your database can be accessed by other computers than your own. Skip this step if the applications which require mysql are running on the same machine. type:
nano /etc/mysql/my.cnf
If your ip address is dynamic you can also comment out the bind-address line and it will default to your current ip. If you try to connect without changing the bind-address you will recieve a "Can not connect to mysql error 10061".
Set mysql root password
A successful mysql command will show: Query OK, 0 rows affected (0.00 sec) Mysql commands can span several lines. Do not forget to end your mysql command with a semicolon.
Note: If you have already set a password for the mysql root, you will need to use:
mysql -u root -p
For creating a new user with all privileges (use only for troubleshooting), at mysql prompt type:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'yourusername'@'localhost' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
For creating a new user with fewer privileges (should work for most web applications) which can only use the database named "database1", at mysql prompt type:
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON database1.* TO 'yourusername'@'localhost' IDENTIFIED BY 'yourpassword';
yourusername and yourpassword can be anything you like. database1 is the name of the database the user gets access to. localhost is the location which gets access to your database. You can change it to '%' (or to hostnames or ip addresses) to allow connections from every location (or only from specific locations) to the database. Note, that this can be a security problem and should only be used for testing purposes! To exit the mysql prompt type:
mysql> \q
Since the mysql root password is now set, if you need to use mysql again (as the mysql root), you will need to use:
mysql -u root -p
Please, let's say something in which directories mysql stores the database information and how to configure a backup
Alternatively
There is more than just one way to set the mysql root password and create a database. For example mysqladmin can be used:
mysqladmin -u root -p password yourpassword
and
mysqladmin -u root -p create database1
If you get blowfish_secret error: Choose and set a phrase for cryptography in the file /etc/phpmyadmin/blowfish_secret.inc.php and copy the line (not the php tags) into the file /etc/phpmyadmin/config.inc.php or you will receive an error. If you get a 404 error upon visiting http://localhost/phpmyadmin: You will need to configure apache2.conf to work with Phpmyadmin.
sudo gedit /etc/apache2/apache2.conf
Include the following line at the bottom of the file, save and quit.
Include /etc/phpmyadmin/apache.conf
See the phpMyAdmin page for instructions on how to install phpmyadmin from source:
Mysql-admin
You really ought to read 2.9.3. Securing the Initial MySQL Accounts from the MySQL Reference Manual.
Search both the strings starting by "User" and "Group", and change the names by the current username and groupname you are using. Then you'll need to restart Apache. (look at the next chapter concerning apache commands) Configuration options relating specifically to user websites (accessed through localhost/~username) are in /etc/apache2/mods-enabled/userdir.conf.
(change mysql.so in mysqli.so if you want to install the mysqli functions) -then modify the php.ini file to indicate the right place for the extension directory:
Look for the 'extension_dir' property, and set it to the directory where you found the mysql(i).so file:
extension_dir= "/usr/lib/php5/20051025/"
(change mysql.so in mysqli.so if you want to install the mysqli functions) Let's say that you found the file in '/usr/lib/php5/20051025/' -then check in the php.ini file for the extension directory
$ gksudo "gedit /etc/php4/apache2/php.ini"
Look for the 'extension_dir' property. It should be by default '/usr/lib/php5/ext'. If it's not, change it for this value. -Now create the default directory for extensions:
$ sudo mkdir /usr/lib/php5/ext
Change the first path to the one you found with the locate function, and change mysql.so into mysqli.so if you want to use mysqli functions. -Restart apache (see below), and test if your mysql(i) functions are working.
Alternatively, you can use a graphical interface by installing Rapache or the simpler localhostindicator.
Using Apache
You can access apache by typing 127.0.0.1 or http://localhost (by default it will be listening on port 80) in your browser address bar. By default the directory for apache server pages is /var/www . It needs root access in order to put files in. A way to do it is just starting the file browser as root in a terminal:
$ sudo nautilus
or if you want to make /var/www your own. (Use only for non-production web servers - this is not the most secure way to do things.)
$ sudo chown -R $USER:$USER /var/www
Status
To check the status of your PHP installation:
$ gksudo "gedit /var/www/testphp.php"
Securing Apache
If you just want to run your Apache install as a development server and want to prevent it from listening for incoming connection attempts, this is easy to do.
$ gksudo "gedit /etc/apache2/ports.conf" $ password:
Save this file, and restart Apache (see above). Now Apache will serve only to your home domain, http://127.0.0.1 or http://localhost.
Password-Protect a Directory
There are 2 ways to password-protect a specific directory. The recommended way involves editing /etc/apache2/apache2.conf . (To do this, you need root access). The other way involves editing a .htaccess file in the directory to be protected. (To do this, you need access to that directory).
Password-Protect a Directory With .htaccess
See EnablingUseOfApacheHtaccessFiles Warning: On at least some versions of Ubuntu, .htaccess files will not work by default. See EnablingUseOfApacheHtaccessFiles for help on enabling them.
thumbnails
If you direct your web browser to a directory (rather than a specific file), and there is no "index.html" file in that directory, Apache will generate an index file on-the-fly listing all the files and folders in that directory. Each folder has a little icon of a folder next to it. To put a thumbnail of that specific image (rather than the generic "image icon") next to each image file (.jpg, .png, etc.): ... todo: add instructions on how to do thumbnails here, perhaps using Apache::AutoIndex 0.08 or Apache::Album 0.95 ...
Known problems
Skype incompatibility
Skype
uses port 80 for incoming calls, and thus, may block Apache. The solution is to change the port in one of the applications. Usually, port 81 is free and works fine. To change the port number in Skype go to menu Tools > Options, then click on the Advanced tab, then in the box of the port for incoming calls write your preference.
Further Information
StrongPasswords is recommended reading! BastilleLinux is also recommended if you're going to be running a live webserver.
You can compile PHP5FromSource, as well as MYSQL5FromSource. PHPOracle will enable you to connect to Oracle databases. PhpPear : PHP Extension and Application Repository
The material on this wiki is available under a free license, see Copyright / License for details You can contribute to this wiki, see Wiki Guide for details