If you want to get to grips with how the web works, one of the most entertaining ways to learn is to build your own local intranet Apache web server to display simple – or even complex – internal websites.
A Raspberry Pi is an ideal Apache web server for small websites that don’t require the capacity or server-side processing power of a more powerful computer, and it’s an ideal development environment if you’re to use HTML.
This is very easy to set up in Apache, by using the modproxy module. The fundamental modproxy directive to set up a reverse proxy is the ProxyPass. You would typically add the following line to your local Apache configuration file (usually httpd.conf or apache2.conf ). Configure Apache to share documents from the right folder. Say you want to make your music collection downloadable using your new web server, and all your music files are located in C. To set up a LAMP web server on Amazon Linux AMI, see Tutorial: Install a LAMP web server on the Amazon Linux AMI. Now that your instance is current, you can install the Apache web server, MariaDB, and PHP software packages. How can I set up a web socket on my Linux server? Is there an Apache module? Would I have to use 3rd-party PHP code or similar? Are there any kinds of drawbacks to the method described in question 1 that I should be aware of other than browser compatibility?
It can host a personal blog or to-do list, keep a web-based calendar for the household, hold your family photo albums, or simply host a website you’re developing before you’re ready to share it with the world.
See also: Samba: Set up a Raspberry Pi as a File Sever for your local network
Set up Apache Web Server on a Raspberry Pi
Much of the world wide web is built on LAMP – Linux, Apache, MySQL, PHP – often with a content management system (CMS) on top to make it easy to create complex websites with little knowledge of HTML or PHP.
This tutorial will take you through the basics of getting your server’s environment set up. We don’t go as far as installing a CMS, but by the end of the following steps, your Pi will be ready to immediately display ordinary ‘flat’ HTML webpages. If you add the optional step of installing the MySQL database back end and PHP interpreter, you should be all set to install and configure most CMSs by following the instructions they supply.
STEP-01: Install the OS
Hook up the keyboard and mouse to the Pi and connect it to an HDMI monitor. Copy NOOBS to a FAT32-formatted micro SD card; insert it and power up the Pi. Opt to install Raspbian with the PIXEL window manager. This will take a few minutes.
See also: Beginner's Guide to NOOBs
STEP-02: Check the network address
Once the Pi has rebooted, open a Terminal window and run:
Make a note of the ‘inet addr’ value for eth0. This will be the IP address of your web server. It’s a good idea to assign the Pi a static DHCP reservation on your router so the Pi will keep that address permanently.
STEP-03: Update your Pi and install Apache
Run the following commands in the Terminal to make sure Raspbian is up to date. Adding -y to the end of apt-get commands instructs the program to automatically answer yes to any questions rather than waiting for you to type Y or N.
Once this is complete, it’s time to install your new Apache web server:Apache is the main piece of software you need to serve webpages to client PCs.
STEP-04: Add PHP and MySQL (optional)
Many websites use content management systems, such as WordPress. These require PHP and MySQL, so if you want to experiment with CMS-driven sites further down the line, this is an ideal time to add the software you’ll need to render them. You can install both at once using the following command:
Chose a strong password for the MySQL ‘root’ user and note it down somewhere safe.
STEP-05: Test Apache
Setting Up Apache Web Server
Open your web browser of choice, either on the Pi or on another PC on your local network, and enter the IP address from step 2 into the address bar. You should see the Apache 2 Debian default page, with a red banner and the words ‘It Works!’ across it.
STEP-06: Start building your site
Your website’s files are located in the /var/www/html
directory. Run the following to make this folder accessible to the default user, pi.
Delete the index.html file found there and upload your new intranet site to that folder. Your new site should now be accessible from your local network on the address you used in step 5.
Your Pi is an ideal environment for web development, so you can simply drop the HTML files you’re working on into your web server directory. If you want to experiment with more advanced options, you can enable FTP and SSH for remote access to your web server from other computers on your local network. You can also install a CMS such as WordPress, which you’ll be able to access from a browser on your local network to create content-rich websites.
Setting Up Apache Web Server For A
While this is strictly a local web server project, the same software and processes go into an internet-facing server, although that will require firewall configuration and extra security measures that are beyond the scope of this tutorial.