Takip et

Go Web Uygulamasını Ubuntu 18.04 Üzerinde Nginx ile Dağıtma Rehberi

Go Web Uygulamasını Ubuntu 18.04 Üzerinde Nginx ile Dağıtma Rehberi Giriş Günümüzün hızla değişen dijital dünyasında, web uygulamalar

Go Web Uygulamasını Ubuntu 18.04 Üzerinde Nginx ile Dağıtma Rehberi

Giriş

Günümüzün hızla değişen dijital dünyasında, web uygulamalarının hızlı, güvenilir ve ölçeklenebilir olması büyük önem taşımaktadır. Go (Golang), Google tarafından geliştirilen, eşzamanlılık yetenekleri, yüksek performansı ve basitliği sayesinde modern web uygulamaları geliştirmek için popüler bir dil haline gelmiştir. Özellikle mikro servis mimarileri ve yüksek trafikli sistemler için tercih edilen Go, derlenmiş bir dil olduğu için düşük seviyeli kaynak kullanımı ve hızlı başlangıç süreleri sunar.

Ancak bir Go web uygulamasını geliştirmek kadar, onu üretim ortamına doğru bir şekilde dağıtmak da kritik bir adımdır. Bu noktada Nginx gibi güçlü bir ters proxy sunucu devreye girer. Nginx, statik dosya sunumu, yük dengeleme, SSL/TLS sonlandırma ve özellikle Go uygulamaları gibi arka uç servisleri için ters proxy görevi görerek uygulamanın doğrudan internete açık olmasının getirdiği güvenlik risklerini azaltır ve performansını artırır.

Bu rehber, Go web uygulamanızı Ubuntu 18.04 işletim sistemi üzerinde Nginx kullanarak nasıl dağıtabileceğinizi adım adım detaylandırmaktadır. Ubuntu 18.04, uzun süreli destek (LTS) sunan stabil bir sürüm olduğu için üretim ortamlarında sıkça tercih edilmektedir. Bu makalede, Go uygulamanızın hazırlanmasından, systemd ile servis olarak çalıştırılmasına, Nginx ile ters proxy yapılandırmasına ve SSL/TLS güvenliğinin sağlanmasına kadar tüm süreçleri ele alacağız. Amacımız, Go uygulamanızın güvenli, verimli ve profesyonel bir şekilde canlıya alınmasını sağlamaktır.

Ön Koşullar

Bu rehbere başlamadan önce aşağıdaki ön koşulların yerine getirilmiş olması gerekmektedir:

* Ubuntu 18.04 Sunucusu: SSH erişimi olan ve sudo yetkilerine sahip bir Ubuntu 18.04 sunucusuna ihtiyacınız var.
* Domain Adı: Uygulamanıza erişmek için yapılandırılmış bir alan adınız olmalıdır (örneğin, ornekuygulama.com). Bu alan adının DNS kayıtları sunucunuzun IP adresini işaret etmelidir.
* Go Derleyici: Sunucunuzda Go derleyicisinin kurulu olması gerekmektedir. Eğer kurulu değilse, sonraki bölümde nasıl kuracağınızı anlatacağız.
* Nginx: Nginx web sunucusunun kurulu olması gerekmektedir. Eğer kurulu değilse, ilgili bölümde kurulum adımlarını bulabilirsiniz.
* Basit Bir Go Web Uygulaması: Dağıtımı yapılacak basit bir Go web uygulamanızın olması. Bu rehber için örnek bir uygulama oluşturacağız.

Go Ortamını Hazırlama

Go uygulamanızı dağıtmadan önce sunucunuzda Go geliştirme ortamının doğru şekilde kurulduğundan emin olmalıyız.

Go Kurulumu (Gerekliyse)

Eğer Go sunucunuzda kurulu değilse, aşağıdaki adımları izleyerek kurabilirsiniz. Bu rehber yazıldığı sırada Go’nun en son stabil sürümünü kurmak en iyisidir, ancak Ubuntu 18.04’ün varsayılan depolarında genellikle daha eski bir sürüm bulunur. En güncel sürümü kurmak için resmi web sitesinden indirmek daha iyi bir yöntemdir.

1. Güncel Go Sürümünü İndirme:
Go’nun resmi web sitesinden (https://golang.org/dl/) en son stabil sürümün tarball dosyasının indirme bağlantısını kopyalayın. Ardından sunucunuzda wget ile indirin:

wget https://golang.org/dl/go1.x.x.linux-amd64.tar.gz

(Burada go1.x.x yerine güncel sürüm numarasını yazmalısınız, örneğin go1.22.1).

2. Tarball Dosyasını Çıkarma:
İndirdiğiniz dosyayı /usr/local dizinine çıkarın. Bu dizin, Go gibi üçüncü taraf yazılımlar için standart bir konumdur.

sudo tar -C /usr/local -xzf go1.x.x.linux-amd64.tar.gz

3. Ortam Değişkenlerini Ayarlama:
Go’nun çalışabilmesi için PATH ortam değişkenini güncellemeniz gerekmektedir. Bunu, kullanıcı profilinize veya sistem genelinde profile dosyasına ekleyerek yapabilirsiniz. Genellikle kullanıcının .profile veya .bashrc dosyasına eklemek yeterlidir.

echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.profile
    source ~/.profile

Bu komut, Go’nun bin dizinini PATH değişkeninize ekler ve ardından .profile dosyasını yeniden yükler.

4. Kurulumu Doğrulama:
Go’nun doğru bir şekilde kurulup kurulmadığını kontrol etmek için sürümünü sorgulayabilirsiniz:

go version

Çıktı olarak go version go1.x.x linux/amd64 benzeri bir ifade görmelisiniz.

Basit Bir Go Web Uygulaması Oluşturma

Dağıtım sürecini göstermek için basit bir Go web uygulaması oluşturalım. Bu uygulama, gelen isteklere “Merhaba, Go Uygulaması!” mesajıyla yanıt verecek ve 8080 portunda dinleyecektir.

1. Uygulama Dizini Oluşturma:
Go uygulamanız için bir dizin oluşturun. Örneğin, /var/www/goapp gibi bir konum kullanabiliriz.

sudo mkdir -p /var/www/goapp
    sudo chown -R $USER:$USER /var/www/goapp
    cd /var/www/goapp

Burada $USER yerine kendi kullanıcı adınızı yazmanız gerekmektedir.

2. main.go Dosyası Oluşturma:
Uygulamanın ana kodunu içeren main.go dosyasını oluşturun:

nano main.go

İçine aşağıdaki kodu yapıştırın:

package main

    import (
    	"fmt"
    	"log"
    	"net/http"
    )

    func handler(w http.ResponseWriter, r *http.Request) {
    	fmt.Fprintf(w, "Merhaba, Go Uygulaması! İstek geldiği adres: %s\n", r.Host)
    	log.Printf("İstek geldi: %s %s", r.Method, r.URL.Path)
    }

    func main() {
    	http.HandleFunc("/", handler)
    	port := ":8080"
    	log.Printf("Go uygulaması %s portunda başlatılıyor...", port)
    	err := http.ListenAndServe(port, nil)
    	if err != nil {
    		log.Fatalf("Go uygulaması başlatılamadı: %s", err)
    	}
    }

Kaydedip kapatın (Ctrl+X, Y, Enter).

3. Go Modülünü Başlatma:
Go modüllerini kullanarak bağımlılıkları yönetmek modern Go projelerinde standart bir yaklaşımdır.

go mod init goapp

Bu komut, projeniz için bir go.mod dosyası oluşturacaktır.

Go Uygulamasını Derleme ve Çalıştırma

Uygulamamızı oluşturduktan sonra onu derleyip çalıştırabiliriz.

1. Uygulamayı Derleme:
Uygulamayı derlemek için go build komutunu kullanın. Bu, yürütülebilir bir dosya oluşturacaktır.

go build -o goapp

-o goapp bayrağı, yürütülebilir dosyanın adını goapp olarak belirler.

2. Uygulamayı Manuel Olarak Çalıştırma (Test Amaçlı):
Uygulamanın çalışıp çalışmadığını test etmek için manuel olarak başlatabilirsiniz:

./goapp

Terminalde “Go uygulaması :8080 portunda başlatılıyor…” mesajını görmelisiniz.
Başka bir terminalden veya yerel makinenizden curl ile test edebilirsiniz (sunucunuzun güvenlik duvarında 8080 portu açık olmalı veya içeriden test etmelisiniz):

curl localhost:8080

Çıktı olarak “Merhaba, Go Uygulaması! İstek geldiği adres: localhost:8080” benzeri bir mesaj almalısınız.
Testi bitirdikten sonra Ctrl+C ile uygulamayı durdurun.

Systemd ile Go Uygulamasını Yönetme

Üretim ortamında Go uygulamanızı manuel olarak çalıştırmak pratik değildir. Uygulamanın sunucu yeniden başlatıldığında otomatik olarak başlaması, çöktüğünde otomatik olarak yeniden başlatılması ve loglarını yönetmek için systemd kullanacağız.

1. Systemd Servis Dosyası Oluşturma:
Go uygulamamız için bir systemd servis dosyası oluşturalım. Bu dosya /etc/systemd/system/ dizininde yer alacaktır.

sudo nano /etc/systemd/system/goapp.service

İçine aşağıdaki içeriği yapıştırın:

[Unit]
    Description=Go Web Uygulaması
    After=network.target

    [Service]
    User=www-data
    Group=www-data
    WorkingDirectory=/var/www/goapp
    ExecStart=/var/www/goapp/goapp
    Restart=always
    RestartSec=5
    StandardOutput=journal
    StandardError=journal
    SyslogIdentifier=goapp

    [Install]
    WantedBy=multi-user.target

Kaydedip kapatın.

Açıklamalar:
* [Unit]: Servisin temel bilgilerini içerir. Description servisin ne olduğunu, After=network.target ise ağ servisi başladıktan sonra bu servisin başlaması gerektiğini belirtir.
* [Service]: Servisin nasıl çalıştırılacağını tanımlar.
* User ve Group: Uygulamanın hangi kullanıcı ve grup altında çalışacağını belirler. www-data genellikle web sunucuları için kullanılan ayrıcalıksız bir kullanıcıdır. Uygulama dizininin ve yürütülebilir dosyanın bu kullanıcı tarafından okunabilir ve çalıştırılabilir olduğundan emin olun.
* WorkingDirectory: Uygulamanın çalışacağı dizini belirtir.
* ExecStart: Uygulamayı başlatan komutu belirtir.
* Restart=always: Uygulama herhangi bir nedenle çökerse veya durursa, systemd tarafından otomatik olarak yeniden başlatılmasını sağlar.
* RestartSec=5: Yeniden başlatma denemeleri arasında 5 saniye bekler.
* StandardOutput=journal ve StandardError=journal: Uygulamanın standart çıktı ve hata akışlarını systemd günlüğüne (journal) yönlendirir. Bu, logları journalctl ile kolayca izlemenizi sağlar.
* SyslogIdentifier=goapp: Günlüklerde bu servisi goapp olarak tanımlar.
* [Install]: Servisin sistem açılışında nasıl etkinleştirileceğini belirtir. WantedBy=multi-user.target sistemi çok kullanıcılı moda geçtiğinde bu servisin başlatılmasını sağlar.

2. Dosya İzinlerini Ayarlama:
Uygulama dizininin ve yürütülebilir dosyanın www-data kullanıcısı tarafından okunabilir ve çalıştırılabilir olduğundan emin olun:

sudo chown -R www-data:www-data /var/www/goapp
    sudo chmod +x /var/www/goapp/goapp

3. Systemd Servisini Etkinleştirme ve Başlatma:
Servis dosyasını oluşturduktan sonra systemd‘ye yeni servisi tanıtmalı, etkinleştirmeli ve başlatmalıyız.

sudo systemctl daemon-reload # systemd'yi yapılandırma değişikliklerini yeniden yüklemesi için bilgilendir
    sudo systemctl enable goapp   # sistem açılışında otomatik başlaması için servisi etkinleştir
    sudo systemctl start goapp    # servisi başlat

4. Servis Durumunu Kontrol Etme:
Servisin başarıyla çalışıp çalışmadığını kontrol edebilirsiniz:

sudo systemctl status goapp

Çıktıda active (running) ifadesini görmelisiniz.
Uygulamanın loglarını görmek için:

sudo journalctl -u goapp.service -f

Bu komut, uygulamanın günlüklerini gerçek zamanlı olarak gösterir (-f bayrağı “follow” anlamına gelir).

5. Uygulamanın Çalıştığını Doğrulama:
Tekrar curl ile test ederek uygulamanın 8080 portunda dinlediğinden emin olun:

curl localhost:8080

Hala “Merhaba, Go Uygulaması!” mesajını alıyorsanız, uygulamanız systemd altında başarıyla çalışıyor demektir.

Nginx Kurulumu ve Yapılandırması

Go uygulamamız artık arka planda çalışıyor. Şimdi Nginx’i kurup yapılandırarak gelen web isteklerini bu uygulamaya yönlendireceğiz.

Nginx Kurulumu (Gerekliyse)

Eğer Nginx sunucunuzda kurulu değilse, aşağıdaki adımları izleyerek kurabilirsiniz:

1. Nginx Kurulumu:

sudo apt update
    sudo apt install nginx

2. Nginx’in Durumunu Kontrol Etme:
Kurulumdan sonra Nginx otomatik olarak başlamalıdır. Durumunu kontrol edin:

sudo systemctl status nginx

active (running) olarak görünmelidir.

3. Firewall Ayarları:
Ubuntu’da UFW (Uncomplicated Firewall) genellikle varsayılan güvenlik duvarıdır. Nginx’in web trafiği alabilmesi için HTTP (80) ve HTTPS (443) portlarını açmanız gerekir.

sudo ufw allow 'Nginx HTTP'
    sudo ufw allow 'Nginx HTTPS' # SSL yapılandırması yapacaksanız şimdiden açın
    sudo ufw enable             # UFW etkin değilse etkinleştirin
    sudo ufw status             # Kuralları kontrol edin

Nginx Full profilini de kullanabilirsiniz, bu hem HTTP hem de HTTPS’i açar.

Nginx’i Ters Proxy Olarak Yapılandırma

Şimdi Nginx’i gelen web isteklerini 8080 portunda çalışan Go uygulamamıza yönlendirecek şekilde yapılandıralım.

1. Yeni Bir Nginx Yapılandırma Dosyası Oluşturma:
Nginx yapılandırma dosyaları genellikle /etc/nginx/sites-available/ dizininde bulunur. Uygulamanız için yeni bir dosya oluşturalım:

sudo nano /etc/nginx/sites-available/goapp

İçine aşağıdaki içeriği yapıştırın (alan adınızı ornekuygulama.com ile değiştirin):

server {
        listen 80;
        listen [::]:80;
        server_name ornekuygulama.com www.ornekuygulama.com;

        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }

        # İsteğe bağlı: Statik dosyalarınız varsa (CSS, JS, resimler vb.)
        # ayrı bir location bloğu ile Nginx üzerinden doğrudan sunabilirsiniz.
        # Bu, Go uygulamanızın yükünü azaltır.
        # Örneğin, /var/www/goapp/static dizinindeki dosyalar için:
        # location /static/ {
        #     alias /var/www/goapp/static/;
        #     expires 30d;
        #     add_header Cache-Control "public";
        # }
    }

Kaydedip kapatın.

Açıklamalar:
* listen 80;: Nginx’in 80 (HTTP) portunu dinlemesini sağlar.
* server_name ornekuygulama.com www.ornekuygulama.com;: Bu yapılandırmanın hangi alan adları için geçerli olduğunu belirtir. Alan adınızı buraya yazmalısınız.
* location / { ... }: Tüm gelen isteklerin nasıl işleneceğini tanımlar.
* proxy_pass http://localhost:8080;: Gelen tüm istekleri 8080 portunda çalışan Go uygulamamıza yönlendirir. localhost kullanmamızın nedeni, Nginx ve Go uygulamasının aynı sunucuda olmasıdır.
* proxy_set_header ...: Bu başlıklar, orijinal istemci bilgilerini (IP adresi, host adı vb.) Go uygulamasına iletmek için önemlidir. Go uygulamanız bu bilgilere erişmek isterse, bu başlıklar sayesinde erişebilir.

2. Yapılandırmayı Etkinleştirme:
Yeni yapılandırma dosyasını etkinleştirmek için sites-available dizininden sites-enabled dizinine sembolik bir bağlantı oluşturun:

sudo ln -s /etc/nginx/sites-available/goapp /etc/nginx/sites-enabled/

3. Varsayılan Nginx Yapılandırmasını Devre Dışı Bırakma (Gerekliyse):
Eğer varsayılan Nginx sayfası hala görünüyorsa, varsayılan yapılandırma dosyasını devre dışı bırakmanız gerekebilir:

sudo unlink /etc/nginx/sites-enabled/default

4. Nginx Yapılandırmasını Test Etme:
Değişiklikleri uygulamadan önce Nginx yapılandırma dosyasında sözdizimi hatası olup olmadığını kontrol etmek önemlidir:

sudo nginx -t

Eğer syntax is ok ve test is successful mesajlarını görürseniz, her şey yolunda demektir.

5. Nginx’i Yeniden Başlatma:
Yapılandırma değişikliklerini uygulamak için Nginx’i yeniden başlatın:

sudo systemctl restart nginx

Artık web tarayıcınızdan http://ornekuygulama.com adresine gittiğinizde, Nginx isteği yakalayacak ve Go uygulamanıza yönlendirecektir. Go uygulamanızdan gelen yanıtı tarayıcınızda görmelisiniz.

SSL/TLS Yapılandırması (Certbot ile)

Web sitenizin güvenliği ve SEO performansı için HTTPS kullanmak günümüzde bir zorunluluktur. Let’s Encrypt ve Certbot ile ücretsiz SSL/TLS sertifikaları almak ve yapılandırmak oldukça kolaydır.

1. Certbot Kurulumu:
Certbot’u Nginx eklentisiyle birlikte kurun:

sudo apt update
    sudo apt install certbot python3-certbot-nginx

2. SSL Sertifikası Alma:
Certbot’u Nginx yapılandırmanızı otomatik olarak algılaması ve SSL sertifikasını alması için çalıştırın:

sudo certbot --nginx -d ornekuygulama.com -d www.ornekuygulama.com

Certbot sizden bir e-posta adresi isteyecek ve hizmet şartlarını kabul etmenizi isteyecektir. Ardından, HTTP trafiğini otomatik olarak HTTPS’e yönlendirip yönlendirmeyeceğini soracaktır. Genellikle 2: Redirect seçeneğini seçmek iyi bir uygulamadır.

3. Certbot’un Otomatik Yenilemesini Test Etme:
Let’s Encrypt sertifikaları 90 gün geçerlidir, ancak Certbot bunları otomatik olarak yenileyecek şekilde yapılandırılır. Yenileme işleminin düzgün çalışıp çalışmadığını test edebilirsiniz:

sudo certbot renew --dry-run

Eğer herhangi bir hata görmezseniz, otomatik yenileme doğru şekilde ayarlanmış demektir.

Artık tarayıcınızdan https://ornekuygulama.com adresine gittiğinizde, bağlantının güvenli olduğunu ve Nginx’in HTTPS üzerinden Go uygulamanıza istekleri ilettiğini görmelisiniz.

Dağıtımın Test Edilmesi

Dağıtım sürecini tamamladıktan sonra her şeyin beklendiği gibi çalıştığından emin olmak için kapsamlı testler yapmalısınız.

1. Web Tarayıcısı ile Erişim:
Web tarayıcınızı açın ve alan adınızı (örneğin, https://ornekuygulama.com) ziyaret edin. Go uygulamanızdan gelen “Merhaba, Go Uygulaması!” mesajını görmelisiniz. Tarayıcınızın adres çubuğunda kilit simgesinin (güvenli bağlantı) göründüğünden emin olun.

2. Nginx Loglarını Kontrol Etme:
Nginx’in gelen istekleri doğru şekilde işleyip Go uygulamasına yönlendirdiğini doğrulamak için erişim ve hata loglarını kontrol edin:

sudo tail -f /var/log/nginx/access.log
    sudo tail -f /var/log/nginx/error.log

access.log dosyasında kendi IP adresinizden gelen istekleri ve 200 (OK) durum kodlarını görmelisiniz. error.log dosyasında herhangi bir hata olmamalıdır.

3. Go Uygulaması Loglarını Kontrol Etme:
Go uygulamanızın loglarını kontrol ederek uygulamanın istekleri doğru şekilde aldığından ve işlediğinden emin olun:

sudo journalctl -u goapp.service -f

Tarayıcıdan her istek gönderdiğinizde, Go uygulamasının loglarında “İstek geldi: GET /” benzeri girişler görmelisiniz. Bu, uygulamanın Nginx üzerinden gelen istekleri başarıyla işlediğini gösterir.

4. Sunucuyu Yeniden Başlatma Testi:
Sunucuyu yeniden başlatarak Go uygulamanızın ve Nginx’in otomatik olarak başlayıp başlamadığını kontrol edin:

sudo reboot

Sunucu yeniden başladıktan sonra tekrar web tarayıcınızdan uygulamanıza erişmeye çalışın ve systemctl status goapp ile systemctl status nginx komutlarıyla servislerin durumunu kontrol edin.

Sıkça Sorulan Sorular ve Sorun Giderme

Dağıtım sırasında veya sonrasında karşılaşabileceğiniz yaygın sorunlar ve çözümleri:

* Nginx 502 Bad Gateway Hatası:
* Sorun: Bu hata genellikle Nginx’in Go uygulamanıza ulaşamadığı anlamına gelir.
* Çözüm:
* Go uygulamanızın çalışıp çalışmadığını kontrol edin: sudo systemctl status goapp. Eğer çalışmıyorsa, sudo systemctl start goapp ile başlatın ve sudo journalctl -u goapp.service -f ile loglarını kontrol edin.
* Go uygulamasının doğru portta (bu rehberde 8080) dinlediğinden emin olun.
* Nginx yapılandırmanızdaki proxy_pass adresinin doğru olduğundan emin olun (http://localhost:8080).

* Web Sitesi Erişilemiyor / Bağlantı Zaman Aşımı:
* Sorun: Tarayıcıda siteye erişilemiyor veya bağlantı zaman aşımına uğruyor.
* Çözüm:
* Sunucunuzun IP adresine ping atarak sunucunun ağ bağlantısını kontrol edin.
* Firewall (UFW) ayarlarını kontrol edin. HTTP (80) ve HTTPS (443) portlarının açık olduğundan emin olun: sudo ufw status. Gerekirse sudo ufw allow 'Nginx Full' komutunu kullanın.
* DNS kayıtlarınızın alan adınızı sunucunuzun IP adresine doğru şekilde yönlendirdiğinden emin olun. dig ornekuygulama.com komutuyla kontrol edebilirsiniz.

* Nginx Yapılandırma Hatası:
* Sorun: Nginx’i yeniden başlatırken hata alıyorsunuz veya sudo nginx -t komutu hata veriyor.
* Çözüm:
* Nginx yapılandırma dosyanızdaki (örneğin /etc/nginx/sites-available/goapp) sözdizimini dikkatlice kontrol edin. Özellikle noktalı virgüllere (;) ve süslü parantezlere ({}) dikkat edin.
* Hata mesajı genellikle hatanın hangi satırda olduğunu belirtir.

* Go Uygulaması Başlamıyor veya Çöküyor:
* Sorun: systemctl status goapp komutu uygulamanın çalışmadığını gösteriyor.
* Çözüm:
* sudo journalctl -u goapp.service -f komutuyla uygulamanın loglarını kontrol edin. Hata mesajları, uygulamanın neden başlamadığını veya çöktüğünü açıklayabilir.
* ExecStart yolunun (/var/www/goapp/goapp) doğru olduğundan ve yürütülebilir dosyanın mevcut olduğundan emin olun.
* User ve Group ayarlarının (www-data) uygulama dizini ve yürütülebilir dosya için uygun izinlere sahip olduğundan emin olun (sudo chown -R www-data:www-data /var/www/goapp).

* SSL Sertifikası Hatası / Güvenli Değil Uyarısı:
* Sorun: Tarayıcıda siteniz güvenli görünmüyor veya sertifika hatası alıyorsunuz.
* Çözüm:
* Certbot kurulumunun ve SSL sertifikasının doğru şekilde alındığından emin olun. sudo certbot certificates komutuyla sertifikalarınızı listeleyebilirsiniz.
* Nginx yapılandırmanızın (Certbot tarafından otomatik olarak güncellenmiş olması gerekir) HTTPS trafiğini doğru şekilde işlediğinden emin olun.
* Firewall’da 443 (HTTPS) portunun açık olduğundan emin olun.

Sonuç

Bu kapsamlı rehberde, Go web uygulamanızı Ubuntu 18.04 sunucusu üzerinde Nginx ile güvenli ve verimli bir şekilde nasıl dağıtacağınızı adım adım öğrendiniz. Sürecin her aşamasını detaylı bir şekilde ele aldık:

* Go ortamının kurulumu ve basit bir web uygulamasının oluşturulması.
* Go uygulamasının derlenmesi ve test edilmesi.
* systemd kullanarak Go uygulamasının bir servis olarak yönetilmesi, böylece otomatik başlatma ve yeniden başlatma yetenekleri kazanması.
* Nginx’in kurulması ve Go uygulaması için bir ters proxy olarak yapılandırılması, statik dosya sunumu ve performans iyileştirmeleri için zemin hazırlanması.
* Certbot ile ücretsiz SSL/TLS sertifikalarının alınması ve Nginx ile HTTPS’in etkinleştirilmesi, böylece uygulamanızın güvenliği ve SEO uyumluluğu sağlanması.
* Dağıtımın test edilmesi ve yaygın sorun giderme ipuçları.

Bu adımları takip ederek Go uygulamanızı üretim ortamına başarıyla taşıyabilir ve kullanıcılara güvenli ve hızlı bir deneyim sunabilirsiniz. Ancak dağıtım süreci burada bitmiyor. Uygulamanızın performansını ve güvenliğini sürekli olarak izlemek, logları takip etmek, düzenli yedeklemeler yapmak ve güvenlik güncellemelerini uygulamak, başarılı bir üretim ortamı yönetimi için kritik öneme sahiptir. Gelecekteki adımlar arasında CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım) boru hatları kurarak dağıtım sürecini otomatikleştirmek ve Prometheus, Grafana gibi araçlarla uygulamanızın ve sunucunuzun metriklerini izlemek yer alabilir. Unutmayın, iyi bir dağıtım, iyi bir uygulamanın sadece başlangıcıdır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Exit mobile version