In this guide we are going to Install and set up Apache virtual host to serve PHP content on a Ubuntu 22.04 system.
The Apache HTTP Server(Apache), is one of the most popular free and open-source cross-platform web server software, released under the terms of Apache License 2.0. Apache is popular as part of the LAMP setup, being the A in the Acronym. The apache server functionality can be extended with the many available modules.
PHP is a general-purpose scripting language geared towards web development. It is one of the popular programming languages for the web. Popular tools such as WordPress are coded using php. Big companies like Facebook also uses php heavily.
Related Content:
- How to install and set up PHP and Apache(LAMP stack) on OpenSUSE Leap 15.3
- How to install and set up PHP and Apache(LAMP stack) on Ubuntu 20.04
- How to Install Apache PHP 7.4 (LAMP) stack on Rocky Linux/Centos 8
- How to Install and set up PHP and Nginx (LEMP) on OpenSUSE Leap 15.3
- How to Install and set up PHP and Nginx (LEMP) on Ubuntu 20.04
- How to install and set up PHP and Apache(LAMP stack) on Debian 11
- How to Install and set up PHP and Nginx (LEMP) on Debian 11
- How to Install and set up PHP and Nginx (LEMP) on Rocky Linux/Alma Linux 8
Prerequisites
To follow along this guide, please ensure you have the following:
- An uodated Ubuntu 22.04 server
- Root access to the server or User with sudo access
- Internet access
Ensuring that the server is up to date
Before proceeding, it is always a good practice to ensure that the server is up to date. Use these commands to achieve this
|
|
Installing PHP on Ubuntu 22.04
PHP is available in the default Ubuntu 22.04 repos. The latest version of PHP as of writing this blog is PHP 8.1.
Install PHP and some common packages using this command:
|
|
Check the installed version of PHP
|
|
Check the installed php version using this command:
|
|
Installing apache on Ubuntu 22.04
Apache packages are available in the default Ubuntu 20.04 repositories as apache2
. Install it using this command:
|
|
Confirm the installed packages using this command:
|
|
The service will be started by default. Check the status using this command:
|
|
To enable the service on boot, use this command
|
|
To confirm that Apache is installed and working fine, please visit the server’s IP address in the browser (http://server_ip). If you don’t know the server IP, get it using this command in your terminal:
|
|
If all is well, you should see the Apache2 Ubuntu Default Page.
Configuring virtual hosts
With Apache, it is possible to host multiple sites on the same server where the Apache is running. This can always be achieved using multiple domains each representing a site that the server is hosting.
Apache virtual hosts are similar to Nginx server blocks. Each virtual host will have configuration details for a single host. You can have as many virtual hosts as you want.
In this example, we will use the domain site1.citizix.com
for the virtual host but be free to use the domain of your choice. Please note that the DNS for the domain to be used should already be configured to point to the IP address of the server.
Confirm that with:
|
|
Creating directory and sample content
The default page of apache is configured as a default virtual host serving content from /var/www/html
. It’s a best practice to create the directory of your site in the /var/www
directory since its a best practice to serve from there.
Lets create a directory for our site with the following command:
|
|
Lets create a simple index.php
page to serve from our site. You will require vim installed for this to work, if not use this command:
|
|
Edit the file:
|
|
Add content to the file:
|
|
Finally, lets make sure that the$USER
user owns the site directory:
|
|
Creating virtual host
Apache Virtual host files specifies the configuration of each sites and tell the Apache web server how to respond to various domain requests.
The Apache configurations will be stored in the directory /etc/httpd/conf.d/
. Lets create a config for our site:
|
|
Add the following content:
|
|
This will tell Apache the following:
ServerName
andServerAlias
- name of the host to serveDocumentRoot
- where to find the root directly that holds the publicly accessible web documentsDirectoryIndex
- The file that apache will serve when the site is accessedErrorLog
- where to store error logs for this siteCustomLog
- where to store request logs for this particular site
Save and close the file when you are finished
Enable the site
|
|
Then reload apache2 config
|
|
Testing the Virtual Host
Now that the configuration is in place, we need to test that everything is working as expected. Since we created the index.php
file above, let us access it by going to http://server_url/
. In my case this is http://site1.citizix.com/
. You should see the php info page.
Conclusion
In this guide, we managed to set up Apache to serve PHP site on a Ubuntu 22.04 server.