Alle grote websites hebben een geweldige server achter de rug. In deze zelfstudie laat ik je zien hoe je een speciale webserver opzet (met Apache, MySQL en PHP) gebruik die oude computer die je in huis hebt liggen en wat gratis software.
In deze zelfstudie proberen we verschillende dingen te bereiken:
Om deze tutorial te kunnen volgen, heb je een paar dingen nodig:
U vraagt misschien waarom u uw eigen webserver zou willen hebben. Er zijn verschillende redenen, waarvan er enkele zijn: u kunt uw eigen tests uitvoeren
grond voor uw websites; met een kleine aanpassing zou u uw eigen site kunnen hosten; en je zult veel leren over Linux / Unix als je gaat.
Met dat gezegd, laten we aan de slag gaan!
Eerst en vooral hebben we een CD met Ubuntu nodig. Richt uw webbrowser op http://www.ubuntu.com/,
en klik op downloaden in het menu aan de linkerkant. U krijgt nu een venster met twee tabbladen: "Desktopeditie" en
"Servereditie". Klik op het tabblad "Servereditie" en selecteer "Ubuntu 8.04 LTS". Selecteer vervolgens een downloadlocatie uit de
drop-down box. Klik ten slotte op de knop "Download starten".
Nu moet je de ISO (het bestand dat je hebt gedownload) naar een lege CD branden. Als u niet weet hoe u dit moet doen, is er een
uitstekende gids op https://help.ubuntu.com/community/BurningIsoHowto
Nu u de ISO hebt gedownload en gebrand, gaan we Ubuntu op uw server installeren. Plaats de schijf in het station en start op vanaf de CD. In de meeste moderne computers gebeurt dit standaard als er zich een schijf in de drive bevindt wanneer u hem inschakelt. Als dat niet het geval is, moet u op een toets op uw toetsenbord drukken wanneer u hem inschakelt. Voor mijn laptop is het F12 en voor mijn server is het F2. Het hangt gewoon af van je computer. Je kunt het vinden door naar de tekst op je scherm te kijken wanneer je de computer aanzet, tijdens het BIOS. Je ziet zoiets als "Druk op [KEY] om de opstartvolgorde te wijzigen". Druk op die toets en selecteer uw cd-station.
Nog steeds bij me? Goed. Nu je Ubuntu hebt opgestart, zou je het volgende scherm moeten zien:
Selecteer uw taal en druk op Enter. Nu zie je dit scherm:
Selecteer "Install Ubuntu Server", en weg we gaan!
Het installatieprogramma vraagt u nu of u uw toetsenbordindeling wilt detecteren. Persoonlijk kies ik altijd voor nee, omdat
het is sneller om een standaard Amerikaans toetsenbord uit de lijst te selecteren dan om het door het installatieprogramma te laten detecteren. Beide opties zijn prima,
volg gewoon de instructies op het scherm.
Nadat je dat hebt gedaan, zie je nu een aantal laadschermen met dingen als "Het detecteren van CD-ROM-stations" en dergelijke.
Deze moeten snel en zonder problemen verlopen. Tijdens deze schermen probeert het installatieprogramma uw systeem echter automatisch te configureren
netwerkinstellingen. In de meeste gevallen werkt dit zonder klacht. Als het echter niet voor u werkt, volgt u gewoon de
instructies op het scherm om het werkend te krijgen.
Nadat het klaar is met dat alles, zal het je vragen om een hostnaam. Je kunt dit meestal op alles instellen; Ik ben altijd begonnen
mijn naar "web-server".
Het systeem wil nu dat u de tijdzone instelt voor uw klok. Voor mij is het Pacific. Kies degene die van toepassing is
u.
Nu zal het systeem meer hardware detecteren en wordt u gevraagd "de schijf (schijven) te partitioneren". Selecteer "Guided - use entire
schijf".
U moet nu de schijf selecteren die u wilt partitioneren. Voor de meeste instellingen is slechts één schijf beschikbaar; echter,
voor meer gespecialiseerde systemen zijn hier meer opties beschikbaar. Kies degene die voor u van toepassing is.
Het zal u vragen of u de wijzigingen op de schijf wilt schrijven. Selecteer "Ja" en druk op enter. Het installatieprogramma gaat nu verder
om de schijf te formatteren en de partities in te stellen.
Nu gebeurt de magie. Het systeem begint te installeren. Terwijl dit gebeurt, haal een kop koffie. Dit kan overal duren
van 10 minuten tot een uur. Het hangt gewoon af van je systeem. Er kunnen momenten zijn dat het lijkt alsof het bevroren is; Maak je geen zorgen,
het is het niet. Laat het gewoon zijn ding doen. Als het echter voor meer dan een uur op één ding vastzit, ja, het is bevroren.
Nu het systeem is geïnstalleerd, moet het account worden ingesteld waarmee u wilt inloggen. Ten eerste, geef het je volledig
naam en druk op "Doorgaan".
Geef het nu uw gebruikersnaam. Normaal gesproken wordt dit gewoon als uw voornaam ingesteld,
maar je kunt het veranderen. Een naam die u misschien niet gebruikt, is "root".
U wordt nu gevraagd om een wachtwoord op te geven. Het is ESSENTIEEL dat u een sterk wachtwoord kiest, of uw server niet
wees helemaal veilig. Ik adviseer ten minste een combinatie van cijfers, kleine letters en hoofdletters. Voor mijn servers echter
Ik gebruik symbolen, evenals een mengsel van het bovenstaande. Gebruik GEEN wachtwoord korter dan 7 tekens.
Voer vervolgens uw wachtwoord opnieuw in om te controleren of u het correct hebt ingevoerd.
Het systeem zal nu proberen om de "Pakketbeheerder" te configureren (we zullen zien wat dat binnenkort is). Geef het uw
proxy-informatie, of laat het leeg als u geen proxy gebruikt, en selecteer "Doorgaan".
Het systeem zal nu verschillende servers scannen op zoek naar updates en configuratie-instellingen.
Nadat dit is voltooid, krijgt u verschillende opties te zien voor het installeren van serversoftware. Luister nu ZEER voorzichtig.
Selecteer OpenSSH-server en druk op SPACE, NOT ENTER. Als u op enter drukt, wordt de installatie voortgezet zonder de OpenSSH-server te installeren.
Je zou ook "LAMP-server" kunnen installeren, maar ik heb geen ervaring met deze optie, dus we gaan het allemaal installeren met een andere
commando later.
Het systeem zal nu de geselecteerde software installeren, evenals andere systeemcomponenten.
Eindelijk, de installatie zal eindigen. Verwijder de CD en druk op Enter. De computer zal opnieuw opstarten. Als alles goed gaat, zal je dat zijn
gepresenteerd met een scherm dat er ongeveer zo uitziet:
Gefeliciteerd! Je hebt zojuist het moeilijkste deel voltooid. Ubuntu is nu geïnstalleerd en het is tijd om deze computer in te zetten
een webserver.
Voordat we verder gaan, moeten we ervoor zorgen dat uw server up-to-date is. Om dit te doen, moet je inloggen. Typ eerst je gebruikersnaam
(degene die je eerder hebt gekozen), druk op enter en typ je wachtwoord. Terwijl u uw wachtwoord typt, merkt u niets
lijkt te gebeuren. Maak je geen zorgen, dat is de manier waarop het is ontworpen om te werken. Nadat je je wachtwoord hebt ingevoerd, druk je op Enter,
en je scherm zou er ongeveer zo uit moeten zien als hieronder:
Typ nu:
sudo aptitude update && sudo aptitude dist-upgrade
Hij zal je om je wachtwoord vragen en nogmaals, je zult niets zien terwijl je het typt. Nadat je dat hebt gedaan, zal het je vragen of
wil je doorgaan. Typ "y" en druk op Enter. Uw scherm zal er ongeveer als volgt uitzien:
Uw systeem zal nu alle nieuwste updates downloaden en installeren. Dit duurt even, afhankelijk van uw internetverbinding. Na
het is voltooid, uw computer moet opnieuw worden opgestart. Hiertoe typt u:
sudo shutdown -r nu
En laat het opnieuw opstarten. Uw server is nu volledig bijgewerkt.
Inmiddels heb je misschien gemerkt dat alle commando's die je hebt getypt zijn begonnen met "sudo". Dit is omdat ze vereisen
beheerdersrechten, en dat is wat "sudo" doet. Het voert de opdracht (d.w.z. "shutdown") uit als een beheerder, waardoor het werkt
naar behoren. Dit is ook waarom het u om uw wachtwoord vraagt. Nadat u echter eenmaal "sudo" hebt getypt en uw wachtwoord hebt ingevoerd,
u hoeft uw wachtwoord niet opnieuw in te voeren gedurende vijf minuten. Niet alle opdrachten vereisen sudo, alleen diegene die delen van het systeem wijzigen.
Heb je dat allemaal? Goed.
Het is nu tijd om enkele programma's te installeren. Om toegang te krijgen tot uw sites vanaf internet, moeten we een webserver (Apache) installeren. In aanvulling op de webserver, zullen we dat doen
wil ook een databaseserver (MySQL) en een server-side taal (PHP), zodat we populaire applicaties zoals WordPress kunnen draaien. Zo,
Laten we ernaar toe gaan!
Het installeren van programma's op Ubuntu is heel wat anders dan het installeren van programma's op Windows of
OS X, omdat Ubuntu de programma's voor u zal downloaden en installeren met een eenvoudige opdracht. Dit komt omdat Ubuntu iets genaamd heeft
een Pakket manager, die bijna alle programma's op uw systeem beheert. Het enige wat we moeten doen, is de pakketbeheerder vertellen
(genaamd "aptitude") dat we willen dat het Apache, MySQL en PHP installeert. Hiertoe typt u de volgende opdracht:
sudo aptitude install apache2 php5-mysql libapache2-mod-php5 mysql-server
En druk op Enter. Aptitude zal de door u gespecificeerde programma's downloaden en installeren. Het zal ook downloaden en installeren
afhankelijkheden.
Tijdens het installatieproces zal MySQL je om een root-wachtwoord vragen. U kunt dit op alles instellen, zorg er gewoon voor dat u het lang en veilig maakt.
Wat je ook doet, laat dit veld NIET leeg.
Daarna is alles klaar, je hebt nu een volledig werkende webserver. Als u wilt testen, zoekt u eerst het IP-adres van uw server op door het volgende te typen:
ifconfig | grep inet
Het is meestal de eerste IP-geretourneerd. In mijn geval is dit 192.168.177.129. Nu u het IP kent, opent u uw webbrowser en wijst u hem aan
naar uw server IP. Als je de "Het werkt!" bericht, dan gefeliciteerd, het werkt.
We zijn echter nog niet klaar. We willen niet dat Apache of PHP informatie over zichzelf openbaar maakt, omdat deze informatie niet nodig is
door uw gebruikers en kan een veiligheidsrisico vormen. Maak eerst een back-up van het oorspronkelijke Apache-configuratiebestand:
sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
Open nu het configuratiebestand:
sudo nano /etc/apache2/apache2.conf
Scroll naar beneden (pijl naar beneden) naar waar het zegt "ServerTokens Full" en verander het in "ServerTokens Prod" te lezen
Blader nu verder naar beneden en verander "ServerSignature On" in "ServerSignature Off"
Druk ten slotte op Control-O gevolgd door Control-X. Dat slaat het bestand op en verlaat de teksteditor.
Nu moeten we hetzelfde doen voor PHP. Maak eerst een back-up van het oorspronkelijke PHP-configuratiebestand:
sudo cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.bak
Open het configuratiebestand:
sudo nano /etc/php5/apache2/php.ini
Wijzig "expose_php = Aan" in "expose_php = Uit"
Nogmaals, druk op Control-O gevolgd door Control-X. Nu de configuratiebestanden zijn bijgewerkt, start u Apache opnieuw:
sudo /etc/init.d/apache2 opnieuw opstarten
U bent klaar met het instellen van Apache, MySQL en PHP.
We gaan onze server nu wat meer vergrendelen door Shorewall te installeren, een firewall met opdrachtregel. Om het te installeren:
sudo aptitude installeer shorewall
Standaard is Shorewall geïnstalleerd zonder regels, waardoor volledige toegang mogelijk is. Dit is echter niet het gedrag dat we willen.
In plaats daarvan blokkeren we alle verbindingen naar iets anders dan poort 80 (HTTP) en poort 22 (SSH). Kopieer eerst de configuratie
bestanden naar de Shorewall-directory:
sudo cp / usr / share / doc / shorewall-common / examples / one-interface / * / etc / shorewall /
Open nu het "regels" -bestand:
sudo nano / etc / shorewall / rules
Voeg deze regels hierboven toe waar staat "#LAST LINE"
HTTP / ACCEPT netto $ FW SSH / ACCEPT netto $ FW
Druk vervolgens op Control-O en Control-X. Uw firewall is nu zo geconfigureerd dat alleen HTTP- en SSH-verkeer wordt geaccepteerd. Het laatste dat we moeten doen
do vertelt Shorewall om te starten bij het opstarten. Dus open het hoofd Shorewall-configuratiebestand:
sudo nano /etc/shorewall/shorewall.conf
Scrol omlaag naar "STARTUP_ENABLED = Nee" en stel dit in op "STARTUP_ENABLED = Ja"
Druk op Control-O en Control-X. Open nu het standaard configuratiebestand van Shorewall:
sudo nano / etc / default / shorewall
En verander "startup = 0" in "startup = 1". Druk op Control-O en Control-X. Start ten slotte uw firewall:
sudo /etc/init.d/shorewall start
Gefeliciteerd! Uw firewall is nu ingesteld en beschermt uw server.
Nu je alles hebt ingesteld, wil je er waarschijnlijk een website aan toevoegen. Standaard zijn alle bestanden die Apache serveert
tot het internet bevinden zich op "/ var / www /". U kunt echter niet naar deze map schrijven. Laten we ervoor zorgen dat je het volgende kunt doen:
sudo usermod -g www-data [YOUR USERNAME] sudo chown -R www-data: www-data / var / www sudo chmod -R 775 / var / www
Wat daar gebeurde was dat je jezelf hebt toegevoegd aan de "www-data" -groep, en de websitelap schrijfbaar maakte voor de leden van de "www-data"
groep.
Nu gaat u inloggen op uw server met behulp van SFTP (niet te verwarren met FTPS). Sommige clients die SFTP ondersteunen zijn:
WinSCP (Windows, gratis), FileZilla (Windows, Linux, OS X, gratis),
Cyberduck (OS X, gratis) en mijn persoonlijke favoriet, Transmit
(OS X, $ 30)
Maak verbinding met uw server met uw gebruikersnaam en wachtwoord en, als uw client dit ondersteunt, een standaardpad van "/ var / www" (als dit niet het geval is),
blader eenvoudig naar / var / www als je eenmaal bent ingelogd): (verzend afbeelding)
U kunt nu uw bestanden toevoegen aan deze map (/ var / www) en ze verschijnen op uw server wanneer u ernaar bladert met uw
webbrowser.
Nu vraag je je misschien af waarom we SFTP gebruiken in plaats van FTP. Vooral omdat SFTP al in OpenSSH is ingebouwd (dat u hebt geïnstalleerd
eerder). Het is echter ook een stuk veiliger dan FTP en maakt het moeilijk (zo niet onmogelijk) voor kwaadwillende gebruikers om toegang te krijgen
naar uw inloggegevens.
De meeste moderne thuisnetwerken bevinden zich tegenwoordig achter een router. Hierdoor is uw webserver niet zichtbaar voor internet
een beetje werk. Omdat ik niet elke router beschikbaar heb om mee te testen, kan ik u alleen algemene aanwijzingen geven op dit gebied.
Er zijn twee manieren om uw server tot het internet te openen: een DMZ of Port Forwarding. Het belangrijkste verschil dat u zult opvallen, is dat met een DMZ uw server de
firewall die we eerder hebben geïnstalleerd om zichzelf te beschermen. Met Port Forwarding wordt uw server echter beschermd door de firewall van uw router.
Maar voordat we verder gaan, wil je je server een statisch LAN-adres geven. Om dat te doen logt u in op uw router en zoekt u iets
in de trant van "Statische IP's" of "Statische routering". Nadat u uw server een statisch LAN-adres hebt gegeven, kunt u deze volgende delen doen. Onthouden,
Google is je vriend.
Voor de poorten naar voren is er een uitstekende website, PortForward.com, die, hoewel lelijk, dat wel kan
u helpen de klus te klaren voor bijna elke router. De poorten die u wilt doorsturen zijn 22 en 80.
Om een DMZ te maken, moet je inloggen op je router en zoeken naar zoiets als "DMZ-instellingen". Zodra u het vindt, voegt u uw server toe aan
de DMZ, en je bent klaar. Nogmaals, Google is nuttig in situaties zoals deze.
Nu, vind je openbare IP, en voila! U kunt uw server vanaf elke gewenste locatie benaderen
omdat uw IP niet verandert.
Naast dat u bestanden kunt uploaden, kunt u met OpenSSH inloggen op uw server vanaf elke locatie zolang u het IP kent. Voor Windows, zul je
een SSH-client nodig. Ik raad Putty aan. Voor OS X is SSH dat
al geïnstalleerd. Open simpelweg Terminal en typ "ssh u@Jouw IPVoor Putty kiest u SSH en plaatst u uw IP-adres, gebruikersnaam en wachtwoord
wanneer het erom vraagt. U zult merken dat, eenmaal u bent ingelogd, deze er precies hetzelfde uitziet als het scherm op de server:
Je kunt vanaf hier alles doen wat je zou doen, zittend op de server. Om uit te loggen van de server, typ eenvoudig "exit" en druk op enter.
U hebt nu een volledig werkende webserver. Het is een geweldige testomgeving en zou zelfs geschikt zijn om websites met redelijk weinig verkeer te hosten. Er is duidelijk een lot om te leren, maar hopelijk heb je een beetje inzicht gekregen in hoe webservers werken.
Als u meer wilt lezen over de onderwerpen die ik heb behandeld, volgen hier enkele geweldige handleidingen:
Bekijk ook de duizenden nuttige PHP-scripts op Envato Market. Met alles, van formulieren en winkelwagentjes tot database-abstracties, is er zeker iets dat je kan helpen in de volgende fase van je werk als ontwikkelaar.
PHP-scripts op Envato Market