Geliştirme için Raspberry Pi Sunucusu Nasıl Kurulur

Yayınlanan: 2022-03-11

Raspberry Pi, 5 ABD Doları gibi düşük bir fiyata alabileceğiniz ve üzerinde birçok farklı yazılım türünü çalıştırabileceğiniz ve birçok farklı proje oluşturabileceğiniz küçük bir bilgisayardır.

Bu makalede, onu bir ev geliştirme sunucusu olarak kurma ve ağınızın dışından erişebileceğiniz tam yığın bir JavaScript uygulaması dağıtma sürecinde size rehberlik edeceğim. Bu, kendi uzak dijital çalışma alanınızı kurmak veya geliştirme için kullandığınız donanım üzerinde kontrol sahibi olmak için harikadır.

Bu Raspberry Pi Ev Sunucusu için Neye İhtiyacınız Var?

Bu, şu anda özellikle bir Raspberry Pi 3 öğreticisi olsa da, birinci nesle kadar giden modellerle çalışmaya devam etmelidir - daha eski bir modeliniz veya bir Raspberry Pi Zero'nuz varsa, lütfen aşağıdaki yorumlarda deneyiminizi bize bildirin.

Raspberry Pi kartının kendisine ek olarak şunlara ihtiyacınız olacak:

  • Mikro USB şarj cihazı
  • Ethernet kablosu
  • Bir microSD kart (en az 8 GB ve 32 GB'a kadar olan kartlar iyi çalışıyor gibi görünüyor)

Bunlar, ilk kurulum sırasında da kullanışlı olacaktır:

  • USB klavye
  • Bir HDMI kablosu ve monitör

Raspberry Pi İşletim Sistemi: Raspbian

Raspberry Pi'ye işletim sistemi kurmak basittir. İlk olarak, bilgisayarınızı kullanarak önyükleme görüntüsünü bir microSD karta yükleyin. Ardından kartı Raspberry Pi'ye takın ve oradan önyükleme yapın.

Raspbian, Debian 7.0'dan ( Wheezy ) taşınan bir Linux dağıtımıdır ve cihazın mimarisi için optimize edilmiş Raspberry Pi'nin resmi işletim sistemidir. Favori işletim sisteminizi Pi'de çalıştırmak için başka seçenekler olsa da, basitliği nedeniyle Raspbian'ı kullanacağız.

Bu öğretici, Raspbian'ın bu sürümüyle (veya daha yenisiyle) çalışacak şekilde güncellendi:

 Kernel version : #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) Kernel release : 4.9.0-8-amd64

Raspbian'ı kurmak için resmi indirme sayfasına gidin ve zip dosyasını en son Raspbian sürümüyle indirin.

Ardından microSD kartı bilgisayarınızın SD kart yuvasına veya adaptörüne takın. Bilgisayarınızın işletim sistemine bağlı olarak, Raspberry'nin Linux, Mac OS veya Windows web sitesinde sağlanan talimatları izleyin.

İşlem bittiğinde SD kartı bilgisayarınızdan çıkarın ve Raspberry Pi'ye takın. Ahududu Pi'yi Ethernet kablosunu kullanarak yönlendiricinize bağlayın ve Raspberry Pi'nin önyüklemesini başlatacak olan Mikro USB şarj cihazını takın.

İlk yapılandırma için iki seçenek vardır:

  • Bir USB klavyeniz ve bir HDMI monitörünüz varsa, ilk kurulum için bunları Raspberry Pi'ye takabilirsiniz.
    • Pi'niz bu cihazları fişe takılır takmaz tanıması gerekir.
    • Pi ilk kez başlatıldığında, otomatik olarak raspi-config çalıştıracaktır. İlk önyüklemeden sonra, cihazı yapılandırmak için sudo raspi-config kendiniz çalıştırmanız gerekecektir.
  • Bunlara sahip değilseniz, Raspberry Pi'nize SSH kullanırken bağlanabilirsiniz:
    • Öncelikle yerel ağınızda Raspberry Pi'nizin IP adresini bulmanız gerekiyor. Bu, yönlendiricinizin yönetici sayfasına bağlanarak veya nmap gibi bir ağ aracı kullanılarak yapılabilir.
    • Aygıtın IP adresini aldıktan sonra, terminalinizden SSH kullanarak (veya Windows kullanıyorsanız Putty aracılığıyla) aygıta bağlanın. Varsayılan kullanıcı pi ve varsayılan parola raspberry . Yani örneğin IP adresi 192.168.1.16 ise ssh [email protected] çalıştırın ve sorulduğunda şifreyi girin.
    • Bağlandığınızda, sudo raspi-config çalıştırın.

raspi-config , son kurulumda size yol gösterecektir. Tüm seçenekleri yapılandırabilirsiniz, ancak en önemlileri ilk ikisidir: dosya sistemini genişletmek, tüm SD kart depolamasının işletim sistemi için kullanılabilir olmasını sağlamak ve varsayılan Pi kullanıcısının parolasını değiştirmek, böylece sunucunuz davetsiz misafirlerden korunur.

Raspi-yapılandırma

Raspberry Pi'nize bir Web Sunucusu (Nginx) Kurun

Ardından, web sunucusunu kuracaksınız. Nginx'i tercih ediyorum çünkü küçük bir bellek alanı var ve Node.js ile iyi oynuyor (ki bunu daha sonra kuracaksınız). Apache veya lighttpd gibi diğer web sunucuları da işe yarayabilir, ancak bu gösteri için Nginx'i kullanacağız.

Herhangi bir şey yüklemeye başlamadan önce, Pi'de şu komutları çalıştırarak her şeyin güncel olduğundan emin olmanız gerekir:

 sudo apt-get update sudo apt-get upgrade

Ardından, apt-get kullanarak Nginx'i yükleyebilirsiniz:

 sudo apt-get install nginx

Kurulum tamamlandıktan sonra, aşağıdakileri çalıştırarak sunucuyu başlatın:

 sudo service nginx start

Önceki adımda Raspberry Pi'nizin yerel IP'sini bulmak zorunda kalmadıysanız, ifconfig çalıştırarak öğrenmenin zamanı geldi. Ethernet bağdaştırıcınızın çıktısı eth0 altında ve yerel IP adresi inet addr olarak etiketlenmiş olacaktır.

IP adresini öğrendikten sonra, bilgisayarınızın tarayıcısını varsayılan "Nginx'e Hoş Geldiniz" mesajını göreceğiniz yere yönlendirebilirsiniz.

Web'e Açık: Bağlantı Noktası Yönlendirme

Raspberry Pi'nize yerel ağınızın dışından erişmeyi planlamıyorsanız bu adımı atlayabilirsiniz. Ancak sunucularına başka konumlardan erişmek isteyenler için bunun mümkün olduğundan emin olalım.

Tipik bir ev ağında, yönlendiriciye bağlı cihazlar dış dünya tarafından görülmez. Ağınızın harici IP adresini kullanarak dışarıdan yalnızca yönlendiricinize erişilebilir. Yönlendiriciniz, ağa hangi gelen trafiğe izin verildiğini ve hangi cihaza gönderilmesi gerektiğini belirlemekten sorumludur.

Yerel ağdaki bir cihaz bir bağlantı başlattığında (örneğin, tarayıcınızda bir web sitesi açtığınızda), yönlendirici gelen yanıt trafiğini bu bağlantının parçası olarak tanır ve geçmesine izin verir. Ancak, yönlendirici açık bir bağlantının parçası olmayan gelen trafiği alırsa (örneğin, bir dış cihaz bir dahili cihazla bağlantı başlatmaya çalıştığında), gelen trafiğin ağa geçmesini engeller. Bu, ağı korumak için önemli bir güvenlik özelliğidir!

Peki Pi'nize dışarıdan nasıl bağlanabilirsiniz? Cevap, port yönlendirmedir. Yönlendirici, belirli bağlantı noktalarından gelen bağlantıların geçmesine ve doğru cihaza gönderilmesine izin verecek şekilde yapılandırılmalıdır. Varsayılan olarak, HTTP protokolü 80 numaralı bağlantı noktasını ve SSH 22 numaralı bağlantı noktasını kullanır, bu nedenle bunlar web uygulamanıza erişmek ve sunucunuzu yönetmek için güvenli bağlantılara izin vermek için yönlendiricinizde açmanız gereken iki bağlantı noktasıdır.

Bağlantı noktası yönlendirme.

Yönlendiricinizi bağlantı noktalarını açacak ve iletecek şekilde yapılandırma adımları, internet sağlayıcınıza ve yönlendiricinizin markasına bağlı olarak değişebilir, ancak her durumda, yönlendiricinizin yönetici sayfasının gelişmiş yapılandırma seçenekleri aracılığıyla gerçekleştirebilmelisiniz. “Yönlendirme”, “Port Yönlendirme” veya “Ağ Adresi Çevirisi” gibi bir ada sahip bir seçenek arayın.

HTTP bağlantıları için bir bağlantı noktası ve SSH için başka bir bağlantı noktası açmanız gerekir. Temel fikir, bu iki harici bağlantı noktasına gönderilen verileri, web trafiği Nginx'in dinlediği 80 numaralı bağlantı noktasına ve SSH trafiğinin SSH sunucusunun harici bilgisayarlardan bağlantıları kabul ettiği 22 numaralı bağlantı noktasına gitmesiyle Raspberry Pi'nize iletmektir. Yönlendiricinizin yapılandırma sayfasında bunun nasıl görünebileceğine dair bir örnek:

Bağlantı noktası yönlendirme yapılandırma tablosu.

Raspberry Pi'nizin dahili IP adresi 192.168.1.16 ise port yönlendirme yapılandırması. 80 veya 22 numaralı bağlantı noktalarına bağlı tüm gelen trafik bu dahili adrese iletilir.

Yönlendiricinizin harici IP adresini Google'a “ip adresim nedir” yazarak kolayca belirleyebilirsiniz. Daha sonra yönlendiricinizin ağının dışına çıkarsanız, ssh pi@{external IP address} ile bir SSH bağlantısı açarak bağlantı noktası yönlendirmenin çalıştığını test edebilirsiniz. Aynı şekilde, HTTP bağlantı noktası yönlendirme, harici IP adresini tarayıcınızın adres çubuğuna girerek test edilebilir. Bağlantı noktası yönlendirmenin, yönlendiricinizin harici IP'sini bilen herhangi birinin bu bağlantı noktalarındaki aygıta dışarıdan erişmesine izin verdiğini unutmayın.

Statik bir IP'niz yoksa dinamik DNS ayarlayabilirsiniz. Bu çok basit ve kolay bir adım. Yönlendiricinizden dinamik DNS kurabilir veya Raspberry Pi'nizi bunun için yapılandırabilirsiniz. Burada DDNS'nin nasıl yapılandırılacağını ele almayacağım, ancak gerekirse BitPi.co'nun konuyla ilgili iyi bir öğreticisi var.

Çerçeveyi yükleyin: Tam yığın JavaScript

Çoğu web çerçevesini Nginx'in üzerinde çalıştırabilirsiniz, ancak JavaScript ile tam yığının nasıl kullanılacağını görelim. Bunu yapmak için Node.js ve MongoDB'yi yüklemeniz gerekir.

Günümüzde Node.js, aşağıdakilerle bir Raspberry Pi'ye kolayca yüklenir:

 sudo apt-get install nodejs

Yüklemeyi tamamladıktan sonra, node -v çalıştırarak çalışıp çalışmadığını kontrol edebilirsiniz.

Şimdi sadece şunu yazarak MongoDB'yi kurabilirsiniz:

 sudo apt-get install mongodb

Raspberry Pi'yi kapatmanız gerekirse, veritabanı bozulmasını önlemek için önce hizmeti kapatmanız gerektiğini unutmayın:

 sudo service mongodb stop

Uygulamanızı Dağıtın

Yerel makinenizde geliştirme yapabilir ve ardından değişikliklerinizi BitBucket'teki Git deposuna aktarabilirsiniz. Raspbian, Git önceden yüklenmiş olarak geldiğinden, en son uygulama kodunuzu cihaza çekip çalıştırabilirsiniz.

Proje İskelesi

Önce bir uygulama kodu ayarlayalım ve onu Git deposuna gönderelim. Bir uygulamayı başlatmanın birçok yolu vardır, ancak favorilerimden biri, hem sunucu hem de istemci kodunu destekleyen jeneratör-açısal-tam yığıntır.

generator-angular-fullstack bilgisayarınıza kurun:

 npm install -g generator-angular-fullstack

Uygulamanız için yeni bir dizin oluşturun:

 mkdir my-app cd my-app

Ve uygulamayı iskele:

 yo angular-fullstack my-app

Depoyu Oluşturun ve Kodu İtin

Şimdi burada açıklandığı gibi BitBucket'te bir havuz oluşturun. Ardından yerel dizininizi ayarlayın:

 git init git remote add origin [email protected]:USER/REPO.git

Böylece kodu taahhüt edebilir ve itebilirsiniz:

 git add . git commit -m 'Initial commit' git push -u origin master

Oluşturucu, derleme kodunu deponuzdaki belirli bir şubeye atamanıza olanak tanıyan grunt-build-control eklentisiyle birlikte gelir. BitBucket yapılandırmasını uygulamanızın kök dizinindeki Gruntfile.js dosyasına eklemeniz yeterlidir:

 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' } } }, // ...

Şimdi çalıştırın:

 grunt build

…dağıtım klasörünü oluşturmak için bunu takip edin:

 grunt buildcontrol:bitbucket

…taahhüt etmek ve kodu deponuzdaki derleme dalına göndermek için.

SSH Anahtarını Oluşturun

Artık kodunuzu barındırdınız. Raspberry Pi'nize dağıtmadan önce, Raspberry Pi için bir SSH anahtarı oluşturmanız ve bunu BitBucket hesabınıza eklemeniz gerekir. Bu adımı hızlı bir şekilde gerçekleştireceğiz, ancak herhangi bir sorun yaşarsanız lütfen BitBucket kılavuzunu takip edin. Bu nedenle, Raspberry Pi terminalinize tekrar giriş yapın ve genel/özel anahtar çiftini oluşturun:

 ssh-keygen

Ardından, aracıyı başlatın:

 ssh-agent /bin/bash

Ve anahtarı aracıya ekleyin:

 ssh-add /home/pi/.ssh/id_rsa

Şimdi ortak anahtarın içeriğini çıkarmanız yeterlidir:

 cat /home/pi/.ssh/id_rsa.pub

…böylece kopyalayıp BitBucket'e yapıştırabilirsiniz.

BitBucket'ta profil resminize tıklayın ve Hesabı yönet 'e gidin. GÜVENLİK altında, SSH anahtarlarını bulun ve Anahtar ekle düğmesini tıklayın.

Depoyu Klonla

Uygulamalarınızın kodunu nereye yerleştireceğiniz konusunda bir kural yoktur, ancak bir /var/www dizini oluşturabilir ve tüm projelerinizi oraya koyabilirsiniz.

 cd /var sudo mkdir www

Dosyaları web köküne yerleştirmek istediğinizde sudo kullanımını önlemek için, sahibini Pi kullanıcınıza ve grubu Nginx tarafından kullanılan www-data olarak değiştirebilirsiniz:

 sudo chown -R pi:www-data www cd www

Artık deponuzun derleme dalını klonlayabilir ve bağımlılıkları yükleyebilirsiniz:

 git clone [email protected]:USER/REPO.git --branch build --single-branch cd REPO npm install --production

Tamamlandığında, ortamı üretime ayarlayarak uygulamanızı başlatabilirsiniz:

 export NODE_ENV=production; node server/app.js &

Şimdi, çalışıp çalışmadığını kontrol etmek için bilgisayar tarayıcınızı cihazın IP adresine yönlendirin.

Kendiniz diyebileceğiniz bir geliştirme sunucunuz olmasını ister miydiniz? Bir #RaspberryPi ile yapabilirsiniz.
Cıvıldamak

Nginx Ters Proxy'yi Yapılandır

Başvurunuzu dışarıdan erişilebilir kılmak için bir adım daha kaldı. Nginx, Pi'niz için HTTP isteklerini alacağı 80 numaralı bağlantı noktasını dinliyor olsa da, Düğüm uygulamasının kendisi farklı bir bağlantı noktasını dinliyor (örneğin, bağlantı noktası 8080). Bu nedenle, Nginx'i ters proxy olarak hareket edecek, uygulamanız için amaçlanan istekleri tanıyacak ve bunları Node.js'ye geçirecek şekilde yapılandırmanız gerekir.

Nginx, sunduğu her uygulama için yapılandırma dosyasını sites-available klasörde tutar:

 cd /etc/nginx/sites-available/

Burada, default yapılandırma dosyasını kopyalayabilir ve istediğiniz zaman düzenleyebilirsiniz:

 sudo cp default my-app sudo nano my-app

Nihai yapılandırma dosyası, Nginx'in Node.js sunucusuna bir proxy görevi görmesiyle şöyle görünmelidir:

 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 } }

Bu konfigürasyonu etkinleştirmek için, sites-enabled olduğu klasörde Nginx'in çalışma zamanı sırasında aktif konfigürasyonları aradığı bir sembolik bağlantı oluşturmanız gerekir:

 sudo ln -s /etc/nginx/sites-available/my-app /etc/nginx/sites-enabled/my-app

Ve bu değişiklikleri etkinleştirmek için hizmeti yeniden yükleyin:

 sudo service nginx reload

Bu noktada, uygulamanız my-app.dev etki alanına yönelik HTTP trafiğini almaya hazırdır (yukarıda yapılandırdığınız server_name my-app.dev yönergesi sayesinde). Çözmeniz gereken son konu ise dışarıdan göndereceğiniz trafiği bu alan adıyla nasıl eşleştireceğinizdir. Bir alan adı satın alıp IP'nize yönlendirebilseniz de, hosts dosyası kurtarmaya gelir ve bunu gereksiz kılar.

Siteye erişeceğiniz iş istasyonunda, yönlendiricinizin harici IP adresini eklemeniz ve my-app.dev ana bilgisayar adıyla eşleştirmeniz yeterlidir. my-app.dev için oluşturduğunuz HTTP trafiği, Host HTTP başlığında doğru ana bilgisayar adıyla doğrudan yönlendiricinize gönderilir.

Windows'ta yönetici ayrıcalıklarıyla c:\windows\system32\drivers\etc\hosts içinde bulunan dosyayı not defteri ile düzenleyebilirsiniz. Linux ve Mac'te terminali sırasıyla sudo nano /etc/hosts ve sudo nano /private/etc/hosts ile kullanabilirsiniz.

 ## # 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

Sıradaki ne?

Artık her şey ayarlandığına göre, Raspberry Pi'nize istediğiniz kadar uygulama dağıtabilir ve Node.js sunucularınızı canlı tutmak için sonsuza kadar veya pm2 yükleyebilirsiniz.

Ve bir şeyler ters giderse, SD kartı silip sıfırdan yeniden başlayabileceğinizi unutmayın!

Raspberry Pi geliştirme sunucusu iş başında.

İlgili: Bu Raspberry Pi Termostat Eğitimi ile İkliminizi Kontrol Edin