The Raspberry Pi je majhen računalnik, ki ga lahko dobite že za 5 USD in na katerem lahko poganjate veliko različnih vrst programske opreme in zgraditi veliko različnih projektov .
V tem članku vas bom vodil skozi postopek, kako ga nastaviti kot strežnik za razvoj doma in uvesti aplikacijo JavaScript s polnim nizom, do katere lahko dostopate zunaj svojega omrežja. To je super za nastavitev lastnega oddaljeni digitalni delovni prostor ali preprosto imeti nadzor nad strojno opremo, ki jo uporabljate za razvoj.
Čeprav je to zdaj še posebej vadnica Raspberry Pi 3, to bi morali še vedno delajo z modeli, ki se vračajo v prva generacija —Če imate starejši model ali Raspberry Pi Zero, nam v spodnjih komentarjih sporočite svoje izkušnje.
Poleg same plošče Raspberry Pi boste potrebovali še:
Ti vam bodo prav prišli tudi med prvotno nastavitvijo:
Namestitev operacijskega sistema na Raspberry Pi je preprosta. Najprej z računalnikom namestite zagonsko sliko na kartico microSD. Nato preprosto vstavite kartico v Raspberry Pi in se zaženite od tam.
Raspbian je distribucija Linuxa, prenesena iz Debian 7.0 ( Pihanje ) in je uradni OS za Raspberry Pi, optimiziran za arhitekturo naprave. Čeprav obstajajo še druge možnosti za zagon vašega najljubšega OS na Pi, bomo Raspbian uporabili zaradi njegove preprostosti.
Ta vadnica je bila posodobljena za delo s to različico (ali novejšo različico) Raspbian:
Kernel version : #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) Kernel release : 4.9.0-8-amd64
Če želite namestiti Raspbian, pojdite na uradna stran za prenos in prenesite datoteko zip z najnovejšo različico Raspbian.
Nato vstavite kartico microSD v režo ali adapter kartice SD v računalniku. Upoštevajte navodila na spletnem mestu Raspberry glede na operacijski sistem računalnika Linux , Mac OS , ali Windows .
Ko je postopek končan, odstranite kartico SD iz računalnika in jo vstavite v Raspberry Pi. S kablom Ethernet povežite Raspberry Pi z usmerjevalnikom in priklopite polnilnik Micro USB, ki bo zagnal zagon Raspberry Pi.
Za začetno konfiguracijo obstajata dve možnosti:
raspi-config
. Po prvem zagonu boste morali zagnati sudo raspi-config
konfigurirati napravo.nmap
.pi
, privzeto geslo pa raspberry
. Torej, če je na primer naslov IP 192.168.1.16, zaženite ssh [email protected]
in ob pozivu vnesite geslo.sudo raspi-config
.raspi-config
vas bo vodil skozi končno nastavitev. Konfigurirate lahko vse možnosti, najpomembnejši pa sta prvi dve: razširiti datotečni sistem, zagotoviti, da je na voljo ves pomnilnik kartice SD, in spremeniti geslo za privzetega uporabnika Pi, tako da bo vaš strežnik zaščiten pred vsiljivci.
Nato boste namestili spletni strežnik. Raje imam Nginx, ker ima majhen spominski odtis in ker se dobro igra z Node.js (ki ga boste nastavili kasneje). Drugi spletni strežniki, kot je Apač ali lighttpd , bi tudi delovalo, vendar bomo za to predstavitev uporabili Nginx.
Preden začnete kar koli nameščati, se prepričajte, da je vse posodobljeno, tako da zaženete te ukaze na Pi:
sudo apt-get update sudo apt-get upgrade
Nato lahko namestite Nginx z uporabo apt-get
:
sudo apt-get install nginx
Ko je namestitev končana, zaženite strežnik tako, da zaženete:
sudo service nginx start
Če vam v prejšnjem koraku ni bilo treba ugotoviti lokalnega IP-ja vašega Raspberry Pi, je čas, da to ugotovite tako, da zaženete ifconfig
Izhod za vaš ethernetni vmesnik bo pod eth0
in z lokalnim naslovom IP z oznako inet addr
.
Ko poznate naslov IP, lahko nanj usmerite brskalnik v svojem računalniku, kjer se prikaže privzeto sporočilo »Dobrodošli v Nginxu«.
Ta korak lahko preskočite, če ne nameravate dostopati do Raspberry Pi zunaj lokalnega omrežja. Toda za tiste, ki želijo svoj strežnik dostopati z drugih lokacij, poskrbimo, da je to mogoče.
V tipičnem domačem omrežju so naprave, povezane z usmerjevalnikom, zunanjemu svetu nevidne. Samo vaš usmerjevalnik je dosegljiv od zunaj z uporabo omrežja zunanji IP naslov. Vaš usmerjevalnik je odgovoren za določanje, kateremu dohodnemu prometu je dovoljeno v omrežje in kateri napravi naj bo poslan.
Ko naprava v lokalnem omrežju vzpostavi povezavo (na primer, ko v brskalniku odprete spletno mesto), usmerjevalnik prepozna dohodni odzivni promet kot del te povezave in mu omogoči, da se preusmeri. Če pa usmerjevalnik prejme dohodni promet, ki ni del odprte povezave (na primer, ko zunanja naprava poskuša vzpostaviti povezavo z notranjo napravo), bo dohodnemu prometu preprečil prehod v omrežje. To je pomembna varnostna funkcija za zaščito omrežja!
Torej, kako se lahko od zunaj povežete s svojim Pi? Odgovor je posredovanje vrat . Usmerjevalnik mora biti konfiguriran tako, da omogoča dohodne povezave na določenih vratih in jih pošlje na pravilno napravo. Privzeto protokol HTTP uporablja vrata 80, SSH pa vrata 22, zato sta to dve vrati, ki ju morate odpreti na usmerjevalniku za dostop do svoje spletne aplikacije in omogočiti varne povezave za upravljanje strežnika.
Koraki za konfiguriranje usmerjevalnika za odpiranje in posredovanje vrat se lahko razlikujejo glede na vašega internetnega ponudnika in blagovno znamko usmerjevalnika, v vsakem primeru pa bi to morali doseči z naprednimi nastavitvenimi možnostmi skrbniške strani usmerjevalnika. Samo poiščite možnost z imenom, kot je »Posredovanje«, »Posredovanje vrat« ali »Prevajanje omrežnih naslovov«.
Odpreti morate vrata za povezave HTTP in druga za SSH. Osnovna ideja je posredovanje podatkov, naslovljenih na ta dva zunanja vrata, na vaš Raspberry Pi, pri čemer spletni promet preide na vrata 80, kjer posluša Nginx, in SSH promet na vrata 22, kjer strežnik SSH sprejme povezave z zunanjih računalnikov. Tu je primer, kako bi to lahko izgledalo na konfiguracijski strani usmerjevalnika:
192.168.1.16
Ves dohodni promet, ki je namenjen za vrata 80 ali 22, se posreduje na ta interni naslov.Zunanji naslov IP usmerjevalnika lahko določite preprosto v Google vtipkate »what is my ip address« . Če se nato premaknete zunaj omrežja usmerjevalnika, lahko preizkusite, ali posredovanje vrat deluje, tako da odprete SSH povezavo z ssh [email protected] {external IP address}
Posredovanje vrat HTTP lahko preizkusite tudi tako, da v naslovno vrstico brskalnika vnesete zunanji naslov IP. Upoštevajte le, da posredovanje vrat vsem zunaj omogoča dostop do naprave na teh vratih, če pozna zunanji IP vašega usmerjevalnika.
Če nimate statičnega IP-ja, lahko nastavite dinamični DNS. To je zelo preprost in enostaven korak. Z usmerjevalnika lahko nastavite dinamični DNS ali pa zanj konfigurirate Raspberry Pi. Ne bom opisoval, kako tukaj konfigurirati DDNS, ampak BitPi.co ima dobro vadnico na to temo če je potrebno.
Na Nginxu lahko zaženete večino spletnih okvirov, vendar poglejmo, kako uporabljati JavaScript v celoti. Če želite to narediti, morate namestiti Node.js in MongoDB .
Danes je Node.js enostavno namestiti na Raspberry Pi z:
sudo apt-get install nodejs
Ko se namestitev konča, lahko preverite, ali deluje, tako da zaženete node -v
.
Zdaj lahko MongoDB namestite samo s tipkanjem:
sudo apt-get install mongodb
Zavedajte se le, da če boste kdaj morali izklopiti Raspberry Pi, morate storitev najprej izklopiti, da se izognete poškodbam zbirke podatkov:
sudo service mongodb stop
Lahko se razvijete na svojem lokalnem računalniku in nato svoje spremembe potisnete v repozitorij Git na BitBucketu. Ker ima Raspbian vnaprej nameščen Git, lahko na napravo povlečete svojo najnovejšo kodo aplikacije in jo zaženete.
Najprej nastavimo kodo aplikacije in jo potisnemo v repozitorij Git. Obstaja veliko načinov za zagon aplikacije, toda eden mojih najljubših je generator-kotno-polni sklad , ki posname tako strežniško kot odjemalsko kodo.
Namestite generator-angular-fullstack
v računalniku:
npm install -g generator-angular-fullstack
Ustvarite nov imenik za svojo aplikacijo:
mkdir my-app cd my-app
In postavite aplikacijo na oder:
yo angular-fullstack my-app
Zdaj ustvarite repozitorij v BitBucketu, kot je opisano tukaj . Nato nastavite svoj lokalni imenik:
git init git remote add origin [email protected] :USER/REPO.git
Tako lahko kodo potrdite in potisnete:
git add . git commit -m 'Initial commit' git push -u origin master
Generator je priložen grunt-build-control vtičnik, ki vam omogoča, da gradbeno kodo dodelite določeni veji v vašem skladišču. Preprosto dodajte konfiguracijo za BitBucket v Gruntfile.js
v korenskem imeniku aplikacije:
buildcontrol: { options: { dir: 'dist', commit: true, push: true, connectCommits: false, message: 'Built %sourceName% from commit %sourceCommit% on branch %sourceBranch%' }, bitbucket: { options: { remote: ' [email protected] :USER/REPO.git', branch: 'build' } } }, // ...
Zdaj zaženite:
grunt build
… Za ustvarjanje distribucijske mape, čemur sledi to:
grunt buildcontrol:bitbucket
… Za prevzem in potiskanje kode v vejo gradnje v vašem repozitoriju.
Zdaj gostite kodo. Preden ga lahko namestite v svoj Raspberry Pi, morate ustvariti SSH ključ za Raspberry Pi in ga dodati v svoj račun BitBucket. Ta korak bomo hitro izvedli, vendar če imate kakršne koli težave, sledite BitBucket vodnik . Torej, prijavite se nazaj v svoj terminal Raspberry Pi in ustvarite par javnih / zasebnih ključev:
ssh-keygen
Nato zaženite agent:
ssh-agent /bin/bash
In agentu dodajte ključ:
ssh-add /home/pi/.ssh/id_rsa
Zdaj morate samo izpisati vsebino javnega ključa:
cat /home/pi/.ssh/id_rsa.pub
... tako da ga lahko kopirate in prilepite v BitBucket.
V BitBucket kliknite sliko profila in pojdite na Upravljanje računa . Spodaj VARNOST , najti SSH tipke in kliknite gumb Dodaj ključ .
Ni pravila, kam naj se postavi koda vaših aplikacij, vendar lahko ustvarite /var/www
in shranite vse svoje projekte.
cd /var sudo mkdir www
Da bi se izognili uporabi sudo
ko želite datoteke postaviti v spletno korenino, lahko lastnika spremenite v svojega uporabnika Pi, skupino pa v www-data
, ki jo uporablja Nginx:
sudo chown -R pi:www-data www cd www
Zdaj lahko klonirate vejo gradnje vašega skladišča in namestite odvisnosti:
git clone [email protected] :USER/REPO.git --branch build --single-branch cd REPO npm install --production
Ko končate, lahko zaženete aplikacijo in nastavite okolje na produkcijsko:
export NODE_ENV=production; node server/app.js &
Zdaj usmerite računalniški brskalnik na naslov IP naprave, da preverite, ali deluje.
Želite, da bi imeli dev strežnik, ki bi ga lahko poklicali sami? Lahko, z #RaspberryPi. TweetŠe en korak je, da omogočite dostop do aplikacije od zunaj. Čeprav Nginx posluša na vratih 80, kjer bo prejel zahteve HTTP za vaš Pi, aplikacija Node sama posluša na druga vrata (na primer vrata 8080). Zato morate Nginx konfigurirati tako, da deluje kot povratni proxy , prepoznavanje zahtev, namenjenih vaši aplikaciji, in njihovo posredovanje Nodeu.
Nginx hrani konfiguracijsko datoteko za vsako aplikacijo, ki jo služi, v sites-available
mapa:
cd /etc/nginx/sites-available/
Tukaj lahko kopirate default
konfiguracijsko datoteko in jo uredite:
sudo cp default my-app sudo nano my-app
Končna konfiguracijska datoteka bi morala izgledati tako, Nginx pa deluje kot posrednik strežnika Node.js:
server { listen 80; root /var/www/my-app/; # identifies the location of the application you are configuring server_name my-app.dev; # identifies the hostname used by this application's traffic location / { proxy_pass http://localhost:8080/; # configures the back-end destination for this traffic } }
Če želite omogočiti to konfiguracijo, morate v sites-enabled
ustvariti simbolno povezavo mapo, kjer Nginx išče aktivne konfiguracije med izvajanjem:
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/my-app
In ponovno naložite storitev, da aktivirate te spremembe:
sudo service nginx reload
Na tej točki je vaša aplikacija pripravljena na sprejem HTTP prometa, namenjenega my-app.dev
domena (zahvaljujoč zgoraj konfigurirani direktivi server_name my-app.dev
). Končno vprašanje, ki ga morate rešiti, je, kako doseči, da se promet, ki ga pošiljate od zunaj, ujema s tem domenskim imenom. Čeprav bi lahko kupili domensko ime in ga usmerili na svoj IP, bo hosts
datoteka priskoči na pomoč in to naredi nepotrebno.
Na delovno postajo, s katere boste dostopali do spletnega mesta, preprosto dodajte zunanji naslov IP usmerjevalnika in ga povežite z imenom gostitelja my-app.dev
Vsak promet HTTP, ki ga ustvarite za my-app.dev
bo nato poslano neposredno na vaš usmerjevalnik s pravilnim imenom gostitelja v Host
Glava HTTP.
V operacijskem sistemu Windows lahko s skrbniškimi pravicami urejate datoteko v c:windowssystem32driversetchosts
z beležko. V Linuxu in Macu lahko terminal uporabljate z sudo nano /etc/hosts
in sudo nano /private/etc/hosts
oz.
## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 212.124.126.242 my-app.dev # add your host name to the list
Zdaj, ko je vse nastavljeno, lahko v Raspberry Pi razmestite poljubno število aplikacij in namestite za vedno ali pm2 da bodo vaši strežniki Node.js ostali živi.
In samo zapomnite si, da če gre kaj narobe, lahko samo obrišete kartico SD in začnete znova iz nič!
Monitor s pravilnim kablom in adapterjem; napajalnik micro USB; žična tipkovnica in miška - ali brezžična tipkovnica in miška z vmesnikom Bluetooth; mikro SD kartica; in seveda Raspberry Pi.
Za Raspberry Pi ni neposrednega namiznega operacijskega sistema Windows. Windows ima zmanjšano različico, namenjeno napravam interneta stvari (IoT). Namenjen je predvsem razvijalcem in hekerjem strojne opreme, ki želijo prototipirati naprave IoT.
Raspberry Pi lahko uporabimo za veliko stvari. Izdelujemo lahko strežnike za avtomatizacijo doma, robote z daljinskim upravljanjem, naprave, povezane z omrežjem (NAS), mini spletne strežnike, medijske centre, glasbene skrinjice, retro igralne konzole, strežnike Raspberry cluster, strežnike VPN in še veliko več.
Nič takega. IoT je sestavljen iz specializiranih in-situ naprav, povezanih z internetom, v nasprotju s splošnimi napravami, kot so telefoni in prenosniki. Ena ključnih platform za IoT je Raspberry Pi. To je priljubljena platforma, saj ponuja popoln Linux strežnik v majhnem vdelanem paketu za zelo nizke stroške.
To je enokrmilni računalnik ali mu nekateri pravijo mini računalnik. Z njim lahko naredite karkoli - skoraj vse, kar si lahko zamislite z namizjem ali strežniškim računalnikom.
Arduino je mikrokrmilnik in lastni gostiteljski čip - ni popoln računalnik, zato potrebujete ločen računalnik za pisanje kode zanj. Raspberry Pi je resničen računalnik: ima CPU, GPU in vrata za HDMI, zvok, zaslon in LAN. Za shranjevanje potrebuje OS (npr. Linux) in trdi disk (ali SD kartico).
Raspberry Pi lahko uporabite kot domači strežnik za več namenov, na primer za večpredstavnostno shrambo, ali kot rezervno delovno postajo, e-poštni strežnik, nadzorno kamero, testno mesto, Jenkinsov gostitelj, subverzijski strežnik, wiki gostitelj in še veliko več.
Da, na Raspberry Pi lahko zaženete skoraj vse vrste strežnikov.