Host Your Website on Raspberry Pi

353,431

330

77

Introduction: Host Your Website on Raspberry Pi

About: DIY, electronics...and loves getting creative...

Raspberry pi is a low cost development board by the raspberry foundation,for this tutorial i am using the distro provided by adafruit that can be found at http://learn.adafruit.com/adafruit-raspberry-pi-educational-linux-distro/occidentalis-v0-dot-2 all you need to do is download the image and use WIN32 disk to burn the image on to the SD card. This tutorial is very different from rest and focuses on hosting a site from raspberry pi and make it accessible ONLINE (from anywhere in the world).

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Connect Via SSH

Now connect your raspberry pi to home router using a Ethernet cable. the ada-fruit image comes with SSH enabled so you can connect via SSH immediately.

now you should try to open a SSH session via putty to raspberrypi.local or the speccific IP address( if you have ur HDMI connected it should be there on you screen, or go to ur router config page(usually 192.168.0.1) and check for raspberry pi under DHCP). you can log in to the raspberry pi with user name :pi and password :raspberry.

Step 2: Setting Up You Rasberry Pi

once you have a new installation there are a few things you should do to get things going, that includes expanding your root file system to fit the entire memory card and changing the user name and pasword. executing
sudo raspi-config
will take to to the config page where you can configure your PI.

Step 3: Installing Your Server

Now you have to install a server on the raspberry pi, the easiest is the Apache Server (Lighttpd also works if you are looking for something lighter) run the following commands to install Apache, PHP5, PHP5 mod for apache and MYSQL( if you are planning to use a CMS or a database.

sudo apt-get update

sudo apt-get install apache2 php5 libapache2-mod-php5


now you should allow overrides by editing the 000-default file, you can do that using the following comands..

sudo nano /etc/apache2/sites-enabled/000-default

now edit the following lines

change "AllowOverride None" -to "AllowOverride ALL".

now execute 

sudo service apache2 restart

to restart apache witht your new settings

now your site should be up and running u can go to /var/ and change the permissions on www, making it writable.

cd /var/
sudo chmod 777 /www


this will enable you to login using WINSCP and upload HTML pages to your new site. open the browser on your PC and point to 192.168.xx.xx (ip address of you raspberry pi) to view the default page.

You can also install and SQL server using the following comands, with a PHP and SQL running on your server u can have a CMs like Drupal running on it.

sudo apt-get install mysql-server mysql-client php5-mysql

Step 4: Setup Up PORT Triggers

Now you should have your server running, go to raspberrypi.local or the ip address from your browser on your PC and you should see the default apache page.
This means your server is up and running.
Now the problem is there is no way to access this website from the internet (like if your friend in Mexico wants to see the site :-(  ).
so go back to your router config page and set the port triger as shown in the picture below. this tells the router if there is someone trying to send an HTTP request via port 80 forward the traffic to the raspberry pi. This make the raspberry pi accessible from the internet.

Step 5: Have Your Domain Name

Now you have a website that can be accessed from online, but most of you (like me) dont have a static IP (its too expensive), which means every 1day or so , your ISP might change your ipaddress(gateway) so you cant always type in the ipaddress and expect to see your website, so solve this we use a no-ip service that gets installed on the raspberry pi. This service runs on the raspberry pi and tells the no-ip server what your IP address is. No-IP gives you a domain name that will point to your last updated IP, all you have to do in make a free account at set and regiter you hostname it will look like (rspi.no-ip.org) you could also go for a premium domain name. once that is done, type in the following commands to install the service....

cd /usr/local/src/

sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

tar xf noip-duc-linux.tar.gz

sudo rm noip-duc-linux.tar.gz

cd noip-2.1.9-1/


sudo make install

after the install is finished, it will automatically start the configuration, enter the username and password of the no-ip.org to finish the installation.

now you have your server set up successfully now all you have to do is make sure it runs every time you start the raspberry pi. there a couple of ways to do this, this i feel is the most easy one.

cd /etc/
sudo nano rc.local


add the following line , in the rc.local file to make noip service run during startup
sudo noip2

ctrl-x 
to close the file and save the file.

now reboot the PI by the following comand

sudo reboot

Step 6: Visit You Website

after setting up the no-ip service, you should be able to access the website hosted on your raspberry pi using the domain name you chose. You can test if the noip service is running by the following command.

sudo noip2 -S

if you see an valid PID, it means you have the service now running.... upload a few pages and hav fun!!

4 People Made This Project!

Recommendations

  • Tiny Speed Challenge

    Tiny Speed Challenge
  • Clocks Contest

    Clocks Contest
  • PCB Design Challenge

    PCB Design Challenge

77 Discussions

0
susthesurfer
susthesurfer

2 months ago

maximum how many users can visit your pi website??

0
doparko
doparko

Question 5 months ago

I got everything working locally and even up to the "no-ip" site with the pi able to know what the hostname is but it isn't working. I think I struggled with the port triggering page and I'm not sure what to do as my screen looks a bit different with a netgear router. I see you have 3 options to put in "80". I have a couple options that look different and I'm guessing that is where I made the error. I have two options to make, a "port forward" or "port trigger". I did the port trigger only and I've added an image to show what I have as option.

Also, when needing to edit
"
sudo nano /etc/apache2/sites-enabled/000-default


now edit the following lines


change "AllowOverride None" -to "AllowOverride ALL".
"
I don't see this line anywhere in the file. Should I just add it and if so where?

netgear_edit1.JPGnetgear_edit2.JPGnetgear_options.JPG
0
mandy311.rathi
mandy311.rathi

Answer 3 months ago

I am having the same problem. Did you found a solution for it??

0
doparko
doparko

Reply 3 months ago

I don’t remember if I got everything working perfectly sadly. I wasn’t able to access this from outside my house. I did get the specific url I made to point back to my site. I don’t have much experience in this type of work as this is just my hobby, but I’d be happy to chat and help you out if I can which you might be able to help me pick this back up again.

0
mandy311.rathi
mandy311.rathi

Reply 3 months ago

yeah even i got everything correct till the custom url part, but cannot access my pi via that. Please tell me a way to connect to you, lets try and solve this!!

0
Reprise5
Reprise5

Answer 5 months ago

Yes. You just make multiple apache configs and put all your web apps in /var/www.

0
Reprise5
Reprise5

5 months ago on Step 3

It is very insecure to chmod 777 ANYTHING in /var/www on a server.

A suggestion: scp files to your pi to your own /home/user folder, then in your SSH session (Probably as root) mv the files to /var/www. /var/www should be 755 and files can even be as low as 644.

0
jhoogterp2016
jhoogterp2016

Question 2 years ago on Step 3

When I sudo nano /etc/apache2/sites-enabled/000-default nothing shows up.
Please Help!

0
IqbalP6
IqbalP6

3 years ago

can you give me an another free domain name like no-ip.com. my port 80 was block by isp .

0
PremU
PremU

Reply 2 years ago

During the install, you may decide to change port. By default it will be 80.

0
IqbalP6
IqbalP6

Reply 2 years ago

ok sir

0
jaleksandar
jaleksandar

Reply 2 years ago

i use dataplicity, its free and easy to use... you can give try, but only to be able to use custom name for website you need to pay, as free you get rendom... but one line code to put in raspberry pi and its done...

0
IqbalP6
IqbalP6

Reply 2 years ago

ok tq

0
schmidhamer
schmidhamer

2 years ago

can you run 2 websites from the one pi I have a business I am setting up and my wife has one also and if we could put both on my pi that would save us some money.

0
venkateshv30
venkateshv30

3 years ago

suppose if i connected to mobile hot spot to raspberry pi how to set up port triggers

0
AkangB
AkangB

3 years ago

ok

0
SP40
SP40

3 years ago

I have my personal domain, that purchased from goDaddy.... So how to use it to online/host site on Pi ?

0
Henkd11
Henkd11

Reply 3 years ago

From the goDaddy website:

"Simply sign in to your GoDaddy account and click on the Manage button next to Domains. Click Manage Connection or Add Website
under the domain you want to forward and select or enter the new
destination. Change it as often as you like – the whole process only
takes about two minutes."

0
BenV3
BenV3

3 years ago

As of July 2016 the below line is not correct as the file 000-default does not exist. I find a file called 000-default.conf but inside this file there is no text that looks anything like the "AllowOverride" etc... can someone please tell me if this step is still required? If I do not edit this, does this prohibit me from setting up my website?

now you should allow overrides by editing the 000-default file, you can do that using the following comands..
sudo nano /etc/apache2/sites-enabled/000-default

now edit the following lines
change "AllowOverride None" -to "AllowOverride ALL"