Skip to content

Discourse ile aynı sunucuda siteler yayınlama

Discourse
  • Discourse Docker içinde çalışan bir sistem. Eğer resmi kurulum talimatlarını izleyerek Discourse kurulumu yaptıysanız ve diğer sitelerinizi Discorse ile aynı sunucuda kullanmayı düşünüyorsanız Discourse’yi Docker dışında yayına almanız gerekiyor.

    Şimdi size Discourse’yi Docker dışında kurulan Nginx Web sunucusu ile nasıl yayınlanacağını anlatmaya çalışacağım.

    1. Dicourse’yi durdur

    Çalışan Discourse örneğini kapatmamız gerekiyor. bunun için;

    cd /var/discourse
    ./launcher stop app
    

    2. Nginx Kur

    Docker dışına Nginx web sunucusunu kurmak için;

    sudo apt-get update && sudo apt-get install nginx
    

    3. App.yml düzenle

    app.yml’de bir kaç bölümde değişiklik yapacağız. Bazı ekleme ve çıkarmalar…
    app.yml dosyasını açmak için;

    cd /var/discourse
    nano containers/app.yml
    
    • app.yml dosyasında aşağıdaki satırları bulun ve yorumlayın ( Yani başına # koyun)
    # - "templates/web.ssl.template.yml"
    # - "templates/web.letsencrypt.ssl.template.yml"
    
    • Aşağıdaki satırı app.yml dosyasında templates bölümünde herhangi bir yere ekleyin.
    - "templates/web.socketed.template.yml"
    
    • Şimdi Docker’de portları kapatmaak gerek. Çünkü artık Docker dışında kalan portları kullanacağız. 80 ve 443 portlarını kapatmamız gerek. bunun için aşağıdaki satırları bulun ve başına # ekleyin.
    # - "80:80"   # http <--başına # koy
    # - "443:443" # https  <--başına # koy
    

    4. Nginx’te Discourse’yi yayınla

    Artık Discourse örneğimizi Docker dışında çalışan Nginx web sunucumuz ile yayına hazırız. Şimdi discourse.conf adında bir dosya oluşturacağız ve discourseyi rebuild ettikten sonra artık yayına hazır olacak.

    Nginx konfigürasyon dosyası oluşturmak için;

    nano /etc/nginx/sites-enabled/discourse.conf
    

    Discourse.conf içeriği ise aşağıdaki gibi olacak.

    server {
        listen 80; listen [::]:80;
        server_name forum.example.com;  # <-- change this
    
        return 301 https://$host$request_uri;
    }
    
    
    server {
        listen 443 ssl http2;  listen [::]:443 ssl http2;
        server_name forum.example.com;  # <-- change this
    
        ssl_certificate      /var/discourse/shared/standalone/ssl/ssl.crt;
        ssl_certificate_key  /var/discourse/shared/standalone/ssl/ssl.key;
        ssl_dhparam          /var/discourse/shared/standalone/ssl/dhparams.pem;
        ssl_session_tickets off;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;
    
        http2_idle_timeout 5m; # up from 3m default
        client_max_body_size 0;
    
        location / {
            proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
            proxy_set_header Host $http_host;
            proxy_http_version 1.1;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto https;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

    Önemli Noktalar;

    Discourse let’s encrypt SSL ile birlikte gelir. Let’s encrypt SSL dosyaları ise /var/discourse/shared/standalone/ssl/ klasörü içinde bulunur. Discourse kurulumu ile gelen Let’s Encrypt SSL kullanmaya devam edeceksiniz yukarıdaki SSL ile ilgili blokları aşağıdaki gibi girmelisiniz.

    ssl_certificate      /var/discourse/shared/standalone/ssl/seninssl.com.cer;
    ssl_certificate_key  /var/discourse/shared/standalone/ssl/seninsll.com.key;
    

    /var/discourse/shared/standalone/ssl/ yolunda bulunan SSL klasöründe dhparams.pem adında bir dosya yoksa (discourse.conf içindeki aşağıdaki satır)

    ssl_dhparam          /var/discourse/shared/standalone/ssl/dhparams.pem;
    

    Aşağıdaki komutu çalıştırarak bu dosyayı oluşturabilirsin.

    openssl dhparam -out /var/discourse/shared/standalone/ssl/dhparams.pem 2048
    

    veya discourse.con içinden bu satırı tamamen silebilirsinde. Discourse’nin çalışmasına etki etmez. Sana kalmış 😄

    İstersen kendine ait SSL veya Cloudflare Full Strick SSL de kullanabilirsin. Sadece geçerli SSL sertifikalarının yolunu ve adını discourse.conf dosyasında doğru girmiş olmak gerekiyor.

    5. Tamamla

    Artık işimiz bitti. Sitemizi yayına alıp Discourse’yi yeniden oluşturduğumuzda işimiz bitmiş olacak.

    # Discourse'nin kapalı olduğundan emin olmak için;
    /var/discourse/launcher stop app || true
    
    # Nginx'te hata var mı yok mu kontrol edin.
    sudo nginx -t
    # Herhangi bir hata yoksa Discourse'yi yayına alın.
    sudo service nginx reload
    
    # app.yml'de yaptığımız değişikliklerin aktif olması için;
    /var/discourse/launcher rebuild app
    

    Artık Discourse siteniz Docker dışında yayında olmalı. Sunucunuza diğer uygulamalarınızı kurarak istediğiniz kadar siteyi Discourse ile aynı sunucuda kullanabilirsiniz.

  • adminA admin bu başlıktan tarihinde bahsetti

Benzer konular


  • Discourse Google İndex

    Discourse
    5
    0 Oy
    5 İleti
    345 Bakış
    A

    flarum seosundan tırstığım için Discourse u seçmiştim😀 bugun üyelerin açtığı ilk konu bugun index almış rahatladım

    ytr.png

  • discourse kurulumla alakalı sorular

    Çözülmedi Soru Cevap
    2
    0 Oy
    2 İleti
    598 Bakış
    adminA

    @ahmed26 Yeni sunucuda herhangi bir güvenlik ayarı yapmana gerek yok. Yani güvenlik ile kurulum birbirini etkilemiyor. Discourse kurulumundan sonra standart güvenlik ayarlarını yapmakta sakınca yok. Warningler sadece uyarı görmezden gelebilirsin.

  • Discourse'u kurdum sorularım var

    Discourse
    2
    0 Oy
    2 İleti
    152 Bakış
    adminA

    @tevildo Kategorize kategorisini ilemezsin. Ancak adını admin panel > Kişiselleştir > Metin bölümünden değiştirebilirsin. Ayrıca
    Screenshot_2.jpg
    Buradaki tiki kaldırırsan kategorize kategorisi kategoriler sayfasından ve konu oluştururken seçme kısmından kalkar, bir nevi silinmiş gibi olur.
    Kategorili kilitlenmez, konu ise kilitlenebilir, sayfa başında tutturulabilir veya sürekli sabit kalması da sağlanabilir.
    Screenshot_3.jpg
    “Açılan her kategorinin için o kategori hakkında başlık açıyor.” bu seo açısından önemlidir. Hem iptal edemezsin.

  • Ubuntu sunucuda Discourse kaldırma

    Discourse
    1
    1 Oy
    1 İleti
    255 Bakış
    Kimse yanıtlamadı
  • Discourse meta banner eklentisi özelleştirmesi

    Discourse
    1
    0 Oy
    1 İleti
    222 Bakış
    Kimse yanıtlamadı