Ngnix ile Web Host Yapımı
Evet arkadaşlar Raspberry PI 5 kartımıza Nginx ile web host yapacağız.
Daha öncesinde CloudFlare Tunnel ile Raspberry PI 5 kartımızı Server olarak kullanmıştık. Şimdi de Nginx ile web host yapacağız.
Raspberry PI 5 CloudFlare Tunnel ile Server Kurma yazısındakileri yaptıktan sonra bu yazımıza devam edelim.
Nginx Kurulumu
1) Adettendir, bi update upgrade yapalım :)
sudo apt update && sudo apt upgrade -y
2) apache2 kaldıralım
Kurulumda gelen apache2 paketini kaldıralım.
sudo apt remove apache2 -y
Apache2 HTTP protokolü üzerinde çalışan bir sunucudur ve web sayfalarını istemcilere dağıtmak için kullanılır.
3) Nginx kurulumu
sudo apt install nginx
Nginx kurduktan sonra servisi başlatabiliriz:
sudo systemctl start nginx
# Aktif olduğuna bakmak için:
sudo systemctl is-active nginx
Ngnix web host’a başladı! Artık CloudFlare Tunnel ile Domain’imizi webden girdiğimizde nginx default sayfasını göreceğiz.
/var/www/html yoluna gidip default sayfayı değiştirebilirsiniz.
Docker ile Nginx Web Host Yapımı
Evet web host işlemini tamamladık ama ben bu şekilde web host yapmak istemiyorum. Daha sonra PI kartıma daha farklı servisler yükleme fikrim olduğundan dolayı kartın içerisinde daha modüler ve kontrol edilebilir bir yapı için docker ile servisi konteynırlayacağım.
1) Docker Kurulumu
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $USER
ilk komutla docker indiriyorum, ikinci komutla da docker’ı sudo yazmadan kullanabilmek için PI kartımdaki kullanıcıyı docker grubuna ekliyorum.
sudo reboot
Sistemi yeniden başlatıyorum ve değişikliğin aktif olmasını sağlıyorum.
2) Klasör Yapısını Oluşturma
Normalde nginx web host yaparken /var/www/html klasörü kullanılır. Docker ile işlemler yaparken klasör yapımızı biraz farklılaştıracağız.
PI kartının içerisinde home klasörünün içerisine şu klasör yapısını oluşturyorum:
/home/Docker-Projects/web/html
Daha sonra nginx default web sayfasının olduğu klasöründe bulunanları bu klasöre kopyalıyorum.
sudo cp -r /var/www/html/* ~/Docker-Projects/web/html/
Yerel Nginx servisini durdurun:
sudo systemctl stop nginx
sudo systemctl disable nginx
3) Docker Compose ile Nginx Web Host Yapımı
Evet artık şu anda nginx web hostumuz için gerekli olan dosyaları pi default server kısmından kaldırdık. Docker Compose ile Nginx için gerkeli olan talimatları yazabiliriz.
/home/Docker-Projects/web/html dizinin içerisine docker compose.yml dosyası oluşturup içerisine sırasıyla şu satırları yazalım:
services:
web-server:
image: nginx:alpine
container_name: my-web-server
restart: unless-stopped
volumes:
- ./html:/usr/share/nginx/html
ports:
- "80:80"
- services: Her service bir Docker
containertemsil etmektedir. - web-server: Service ismi. Bu konteynerın referans ismidir.
docker compose upkomutunda bu isim kullanılır. - image: Docker image’ını belirtir. Burada
nginx:alpinekullanılmıştır. temel uygulama nginx’dir. alphine ise hafif linux dağıtımıdır. - container_name: Konteynerin özel ismi. Komutlarda bu isimle erişebiliriz.
- restart: unless-stopped: Konteynerin kapatılmadığı sürece otomatik olarak başlar. Bu servisin sürekli çalışmasını sağlayacaktır.
volume mappingile sol taraftaki host , sağ taraftaki konteynerın dosya içeriği dosya yoludur. - volumes: Konteynerin dosya sistemi ile host sisteminin dosya sistemi arasında veri paylaşımını sağlar.
ports: Konteynerin portlarını belirtir.
- "80:80"ile port mapping yapılır. host makinesinin 8 portu konteynerin 80 portuna yönlendirilir.
4) Cloudflared Tünel Ayarları
CloudFlare Tunnel ile Evde Server Kurma yazımda yapmış olduğumuz config dosyasındaki bir değişiklik şu anlık yapmamız gerekli değildir. İlerde mqtt broker service veya başka bir service’ı docker ile çalıştırmak istediğimizde buradaki config içerisinde yeni ingress satırı eklememiz gerekecektir.
5) Docker Compose Başlatma
cd ~/Docker-Projects/web
docker compose up -d
Evet bu komutu yazdığımızda web serverımız artık docker üzerinden servis olarak başlayacaktır. terminal çıktısı:
furkan@furkan-pi5:~/Docker-Projects/web $ docker compose up -d
[+] up 13/13
✔ Image nginx:alpine Pulled 611.1s
✔ Network web_default Created 0.1s
✔ Container my-web-server Created
Artık daha kontrol edilebilir bir sistemimiz var. Raspberry PI 5 kartı docker’ın ram ve cpu kullanımını karşılayabileceği için bu sistem benim için idealdir.
Docker Compose kullanılan yaygın komutları da buraya bırakayım:
# Konteyneri başlat
docker compose up -d
# Durumunu kontrol et
docker compose ps
# Logları görüntüle
docker compose logs -f
# Konteyneri durdur
docker compose down
# Konteyneri durdurup volume'leri de sil
docker compose down -v
Benim Raspberry PI web server’ımı görmek istiyorsanız furkanio.xyz adresine gidip görebilirsiniz.
Sonraki yazımda görüşene dek, sağlıcakla kalın!