The Raspberry Pi е малък компютър, който можете да получите за $ 5 и на който можете да стартирате много различни видове софтуер и изграждане на много различни проекти .
В тази статия ще ви преведа през процеса на настройването му като сървър за домашна разработка и внедряване на пълно стек JavaScript приложение, до което можете да получите достъп извън вашата мрежа. Това е чудесно за настройка на вашия собствен отдалечено цифрово работно пространство или просто да имате контрол върху хардуера, който използвате за разработка.
Макар че сега това е по-специално урок за Raspberry Pi 3, той Трябва все още работят с модели, връщащи се към първо поколение —Ако имате по-стар модел или Raspberry Pi Zero, моля, уведомете ни за опита си в коментарите по-долу.
В допълнение към самата платка Raspberry Pi ще ви трябват:
Те също ще бъдат полезни по време на първоначалната настройка:
Инсталирането на операционна система на Raspberry Pi е лесно. Първо, като използвате компютъра, инсталирайте изображението за зареждане на microSD карта. След това просто поставете картата в Raspberry Pi и стартирайте от там.
Raspbian е дистрибуция на Linux, пренесена от Debian 7.0 ( Хриптене ) , и е официалната операционна система за Raspberry Pi, оптимизирана за архитектурата на устройството. Въпреки че има други опции за стартиране на любимата ви операционна система на Pi, ние ще използваме Raspbian поради нейната простота.
Този урок е актуализиран за работа с тази версия (или по-нова версия) на Raspbian:
Kernel version : #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) Kernel release : 4.9.0-8-amd64
За да инсталирате Raspbian, отидете на официална страница за изтегляне и изтеглете zip файла с най-новата версия на Raspbian.
След това поставете microSD картата в слота или адаптера за SD карта на вашия компютър. В зависимост от операционната система на вашия компютър, следвайте инструкциите, предоставени на уебсайта на Raspberry за Linux , Mac OS , или Windows .
След като процесът приключи, извадете SD картата от компютъра си и я поставете в Raspberry Pi. Свържете Raspberry Pi към вашия рутер с помощта на Ethernet кабела и включете зарядното устройство Micro USB, което ще стартира стартирането на Raspberry Pi.
За първоначалната конфигурация има две опции:
raspi-config
. След първото зареждане ще трябва да стартирате sudo raspi-config
себе си, за да конфигурирате устройството.nmap
.pi
, а паролата по подразбиране е raspberry
. Така например, ако IP адресът е 192.168.1.16, изпълнете ssh [email protected]
и въведете паролата, когато бъдете подканени.sudo raspi-config
.raspi-config
ще ви преведе през финалната настройка. Можете да конфигурирате всички опции, но най-важните са първите две: да разширите файловата система, като се уверите, че цялото хранилище на SD картата е достъпна за операционната система, и да промените паролата за потребителя Pi по подразбиране, така че вашият сървър да бъде защитени от натрапници.
След това ще инсталирате уеб сървъра. Предпочитам Nginx, защото има малък отпечатък на паметта и защото играе добре с Node.js (който ще настроите по-късно). Други уеб сървъри, като Apache или lighttpd , също ще работи, но ще използваме Nginx за тази демонстрация.
Преди да започнете да инсталирате каквото и да е, трябва да сте сигурни, че всичко е актуално, като изпълните тези команди на Pi:
sudo apt-get update sudo apt-get upgrade
След това можете да инсталирате Nginx, използвайки apt-get
:
sudo apt-get install nginx
След като инсталацията приключи, стартирайте сървъра, като стартирате:
графичен дизайн срещу изобразително изкуство
sudo service nginx start
Ако не трябваше да разберете локалния IP на вашия Raspberry Pi в предишната стъпка, време е да разберете, като стартирате ifconfig
Изходът за вашия Ethernet адаптер ще бъде под eth0
и с неговия локален IP адрес с етикет inet addr
.
След като знаете IP адреса, можете да насочите браузъра на компютъра си към него, където да видите съобщението „Добре дошли в Nginx“ по подразбиране.
Можете да пропуснете тази стъпка, ако не планирате достъп до вашия Raspberry Pi извън вашата локална мрежа. Но за тези, които искат да имат достъп до сървъра си от други места, нека се уверим, че това е възможно.
В типична домашна мрежа устройствата, свързани към рутера, са невидими за външния свят. Само от вашия рутер може да се стигне отвън, като се използва мрежата ви външен IP адрес. Вашият рутер е отговорен за определяне на кой входящ трафик е разрешен в мрежата и на кое устройство трябва да бъде изпратен.
Когато устройство в локалната мрежа инициира връзка (например, когато отворите уебсайт в браузъра си), рутерът разпознава входящия трафик на отговора като част от тази връзка и го разрешава. Ако обаче рутерът получава входящ трафик, който не е част от отворена връзка (например, когато външно устройство се опитва да инициира връзка с вътрешно устройство), той ще блокира входящия трафик от преминаване в мрежата. Това е важна функция за защита за защита на мрежата!
И така, как можете да се свържете с вашия Pi отвън? Отговорът е пренасочване на портове . Рутерът трябва да бъде конфигуриран да позволява преминаването на входящи връзки на определени портове и да бъде изпращан до правилното устройство. По подразбиране HTTP протоколът използва порт 80, а SSH използва порт 22, така че това са двата порта, които трябва да отворите на маршрутизатора си, за да получите достъп до вашето уеб приложение и да разрешите сигурни връзки за управление на вашия сървър.
Стъпките за конфигуриране на вашия рутер за отваряне и пренасочване на портовете могат да варират в зависимост от вашия доставчик на интернет и марката на вашия рутер, но във всеки случай трябва да можете да го направите чрез разширените опции за конфигуриране на страницата за администратор на вашия рутер. Просто потърсете опция с име като „Препращане“, „Препращане на портове“ или „Превод на мрежови адреси“.
Трябва да отворите порт за HTTP връзки и друг за SSH. Основната идея се състои в препращане на данни, адресирани до тези два външни порта към вашия Raspberry Pi, като уеб трафикът отива към порт 80, където Nginx слуша, а SSH трафикът отива към порт 22, където SSH сървърът приема връзки от външни компютри. Ето пример за това как може да изглежда това на страницата за конфигурация на вашия рутер:
192.168.1.16
Целият входящ трафик, свързан за портове 80 или 22, се препраща към този вътрешен адрес.Можете да определите външния IP адрес на вашия рутер просто въвеждане на „какъв е моят ip адрес“ в Google . Ако след това се преместите извън мрежата на вашия рутер, можете да проверите дали пренасочването на портове работи, като отворите SSH връзка с ssh [email protected] {external IP address}
По същия начин пренасочването на HTTP портове може да бъде тествано чрез въвеждане на външен IP адрес в адресната лента на вашия браузър. Само имайте предвид, че пренасочването на портове позволява на всеки отвън да има достъп до устройството на тези портове, ако знае външния IP на вашия рутер.
Ако нямате статичен IP, можете да настроите динамичен DNS. Това е много проста и лесна стъпка. Можете да настроите динамичен DNS от вашия рутер или да конфигурирате вашия Raspberry Pi за него. Няма да разглеждам как да конфигурирам DDNS тук, но BitPi.co има добър урок по темата ако е необходимо.
Можете да стартирате повечето уеб рамки в горната част на Nginx, но нека да видим как да отидете на пълен стек с JavaScript. За да направите това, трябва да инсталирате Node.js и MongoDB .
В днешно време Node.js се инсталира лесно на Raspberry Pi с:
sudo apt-get install nodejs
След като приключи инсталирането, можете да проверите дали работи, като стартирате node -v
.
Сега можете да инсталирате MongoDB само като напишете:
sudo apt-get install mongodb
Само имайте предвид, че ако някога трябва да изключите Raspberry Pi, първо трябва да изключите услугата, за да избегнете повреда на базата данни:
sudo service mongodb stop
Можете да се развиете на вашата локална машина и след това да прокарате промените си в Git хранилище на BitBucket. Тъй като Raspbian се предлага с предварително инсталиран Git, можете да изтеглите най-новия код на приложението си върху устройството и да го стартирате.
Първо нека да настроим код на приложението и да го изпратим в хранилището на Git. Има много начини за стартиране на приложение, но един от любимите ми е генератор-ъглово-пълен стек , който скелета както сървърния, така и клиентския код.
какво е индустрията за красота
Инсталирайте generator-angular-fullstack
на вашия компютър:
npm install -g generator-angular-fullstack
Създайте нова директория за вашето приложение:
mkdir my-app cd my-app
И скеле на приложението:
yo angular-fullstack my-app
Сега създайте хранилище в BitBucket, както е описано тук . След това настройте вашата локална директория:
git init git remote add origin [email protected] :USER/REPO.git
Така че можете да ангажирате и натиснете кода:
git add . git commit -m 'Initial commit' git push -u origin master
Генераторът се доставя с grunt-build-control плъгин, който ви позволява да ангажирате компилационния код към определен клон във вашето хранилище. Просто добавете конфигурацията за BitBucket към Gruntfile.js
в основната директория на вашето приложение:
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' } } }, // ...
Сега изпълнете:
grunt build
... за създаване на папка за разпространение, последвано от това:
grunt buildcontrol:bitbucket
... да ангажирате и избутате кода в клон за изграждане във вашето хранилище.
Вече имате хостван код. Преди да можете да го разположите на вашия Raspberry Pi, трябва да генерирате SSH ключ за Raspberry Pi и да го добавите към вашия акаунт в BitBucket. Ще преминем бързо през тази стъпка, но ако имате проблеми, моля, следвайте Ръководство за BitBucket . Така че, влезте отново във вашия Raspberry Pi терминал и генерирайте двойка публичен / частен ключ:
ssh-keygen
След това стартирайте агента:
ssh-agent /bin/bash
И добавете ключа към агента:
ssh-add /home/pi/.ssh/id_rsa
Сега просто трябва да изведете съдържанието на публичния ключ:
cat /home/pi/.ssh/id_rsa.pub
... за да можете да го копирате и поставите в BitBucket.
В BitBucket кликнете върху снимката на вашия профил и отидете на Управление на акаунта . Под СИГУРНОСТ , намирам SSH ключове и щракнете върху бутона Добавяне на ключ .
колко голяма е козметичната индустрия
Няма съгласие къде да поставите кода на вашите приложения, но можете да създадете /var/www
директория и поставете всичките си проекти там.
cd /var sudo mkdir www
За да се избегне използването на sudo
когато искате да поставите файлове в webroot, можете да промените собственика на вашия потребител Pi, а групата на www-data
, което се използва от Nginx:
sudo chown -R pi:www-data www cd www
Сега можете да клонирате клона за изграждане на вашето хранилище и да инсталирате зависимостите:
git clone [email protected] :USER/REPO.git --branch build --single-branch cd REPO npm install --production
След като приключи, можете да стартирате приложението си, като настроите околната среда за производство:
export NODE_ENV=production; node server/app.js &
Сега насочете браузъра на компютъра си към IP адреса на устройството, за да проверите дали работи.
Искате ли да имате dev сървър, който да можете да наричате свой? Можете с #RaspberryPi. TweetОстава още една стъпка, за да направите приложението си достъпно отвън. Въпреки че Nginx слуша на порт 80, където ще получава HTTP заявки за вашия Pi, самото приложение Node слуша на различен порт (например порт 8080). Следователно трябва да конфигурирате Nginx да действа като обратен прокси , разпознаване на заявки, предназначени за вашето приложение, и предаването им на Node.
Nginx запазва конфигурационния файл за всяко приложение, което обслужва, в sites-available
папка:
cd /etc/nginx/sites-available/
Тук можете да копирате default
конфигурационен файл и редактирайте за ваше удобство:
sudo cp default my-app sudo nano my-app
Окончателният конфигурационен файл трябва да изглежда така, като Nginx действа като прокси за сървъра 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 } }
За да активирате тази конфигурация, трябва да създадете символна връзка в sites-enabled
папка, където Nginx търси активни конфигурации по време на изпълнение:
sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/my-app
И презаредете услугата, за да активирате тези промени:
sudo service nginx reload
На този етап вашето приложение е готово да получава HTTP трафик, предназначен за my-app.dev
домейн (благодарение на директивата server_name my-app.dev
, която сте конфигурирали по-горе). Последният проблем, който трябва да разрешите, е как да направите трафика, който изпращате отвън, да съвпада с това име на домейн. Въпреки че можете да си купите име на домейн и да го насочите към вашия IP, hosts
файл идва на помощ и прави това ненужно.
На работната станция, от която ще влезете в сайта, просто добавете външния IP адрес на вашия рутер и го съчетайте с името на хоста my-app.dev
Всеки HTTP трафик, който генерирате за my-app.dev
след това ще бъде изпратено директно до вашия рутер, с правилното име на хоста в Host
HTTP заглавка.
В Windows, с администраторски права, можете да редактирате файла, намиращ се в c:windowssystem32driversetchosts
с бележника. На Linux и Mac можете да използвате терминала с sudo nano /etc/hosts
и sudo nano /private/etc/hosts
съответно.
## # 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
Сега, когато всичко е настроено, можете да разположите колкото искате приложения на вашия Raspberry Pi и да инсталирате завинаги или pm2 за да поддържате вашите сървъри Node.js живи.
И просто не забравяйте, че ако нещо се обърка, можете просто да изтриете SD картата и да започнете отново от нулата!
Монитор с правилния кабел и адаптер; микро USB захранване; жична клавиатура и мишка - или безжична клавиатура и мишка с Bluetooth адаптер; микро SD карта; и, разбира се, Raspberry Pi.
Няма директна операционна система на Windows за Raspberry Pi. Windows има умалена версия, насочена към устройствата на Internet of Things (IoT). Той е предназначен предимно за разработчици и хардуерни хакери, които искат да прототипират IoT уреди.
Има много неща, за които можем да използваме Raspberry Pi. Можем да изградим сървъри за домашна автоматизация, роботи с дистанционно управление, мрежови устройства за съхранение (NAS), мини уеб сървъри, медийни центрове, музикални кутии, ретро игрални конзоли, клъстерни сървъри на Raspberry, VPN сървъри и много други.
Няма такова нещо. IoT се състои от специализирани in-situ устройства, свързани с интернет, за разлика от тези с общо предназначение като телефони и лаптопи. Една от ключовите платформи за IoT е Raspberry Pi. Това е популярна платформа, тъй като предлага пълен Linux сървър в малък вграден пакет за много ниска цена.
Това е едноплатен компютър или някои го наричат мини компютър. С него можете да правите всичко - почти всичко, което можете да си представите с настолен компютър или сървърна машина.
Arduino е микроконтролер и самостоятелно хостван чип - това не е пълен компютър, така че имате нужда от отделен компютър, за да напишете код за него. Raspberry Pi е добросъвестен компютър: Той има CPU, GPU и портове за HDMI, звук, дисплей и LAN. За съхранението му е необходима операционна система (напр. Linux) и твърд диск (или SD карта).
Можете да използвате Raspberry Pi като домашен сървър за множество цели, като мултимедийно съхранение или като резервна работна станция, имейл сървър, камера за наблюдение, тестов сайт, хост на Jenkins, сървър за поддръжка, wiki хост и много други неща.
Да, можете да стартирате почти всеки тип сървър на Raspberry Pi.