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 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.
Çalışan Discourse örneğini kapatmamız gerekiyor. bunun için;
cd /var/discourse
./launcher stop app
Docker dışına Nginx web sunucusunu kurmak için;
sudo apt-get update && sudo apt-get install nginx
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
#
koyun)# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
templates
bölümünde herhangi bir yere ekleyin.- "templates/web.socketed.template.yml"
#
ekleyin.# - "80:80" # http <--başına # koy
# - "443:443" # https <--başına # koy
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;
}
}
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.
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.