Discourse'u ayrı bir sunucuya kurmak?


(Bekir Cem Ünalan) #1

Merhaba,

Discourse’u ayrı bir VPS’e kurarak hali hazırda yayında olan bir alan adının alt alanından yayın yapmak mümkün müdür?


(Muhammed Yalçınkaya) #2

Evet bu oldukça basit @bekircem .

  1. Alan adında A kaydı oluştur ve VPS IP adresini göster.
  2. VPS’i bu A kaydındaki hostname ile kur.

Hepsi bu kadar :wink:


(Bekir Cem Ünalan) #3

Kurdum, Mybb’den import etmek için import scriptle uğraşıyorum bir süredir. Development enviroment kurulumu yaptım localhostta. Biraz uğraştırdı ama import da ettim. :slight_smile: Sadece banlı üyelerin banlı görünmemesi ile alakalı bir sorun kaldı. Onu çözmeye çalışıyorum. :slight_smile:


(Muhammed Yalçınkaya) #4

Sonuçları paylaşmanı bekliyoruz :wink:


(Bekir Cem Ünalan) #5

Localde import edip production kurulumuna aktardım. Şu an yayında, çalışıyor. Bu aşamada birkaç ufak sorun yaşadım. İlk olarak local kurulumu hazırlayıp import scriptini çalıştırmak için tüm şartlar sağlandıktan sonra 300k post, 10k kullanıcı, 10k üyelik bir veritabanını Discourse’a import etme işlemi tam 8 saat 24 dakika sürdü. :slight_smile: Tabii bu sırada local Discourse kurulumunu Windows üzerinden yapmadım, çünkü o zaman Vagrant ile falan uğraşmak gerekiyor. Ubuntu sistemine geçip orada gerçekleştirdim işlemleri. Şu rehber Ubuntu üzerine development envoriment kurmak isteyenler için:

Local kurulumu olmadan bu çapta bir import işlemini gerçekleştirmek neredeyse hayal. O yüzden mutlaka local kurulum olmalı. Ben gerek olmadığını düşünerek çok zaman kaybettim, eğer bu yola girecek olan varsa en önemli ve ilk karar bu. :slight_smile:

İşlem bittikten sonra localde postlarda yapabildiğim kadarıyla toplu düzenlemeler yaptım. Sonra localde Discourse üzerinden yedek oluşturup yayına alacağım Discourse’a import ettim.

1- Banlı üye grubunda olanlar banları açılmış şekilde import edildi. :slight_smile: Bunun için import script’e bi ilave yapmak gerekiyormuş, Bu aşamada bununla uğraşmanın gereksiz olacağını düşündüm, çok bakmadım.

2- Üye şifrelerini import etmek için de ayrıca ek bir işlem yapmak gerekiyormuş. Bu yapılmadığında eski üyelerin parola sıfırlama ile şifre belirlemeleri gerekiyor. Şifre belirlenebildiği için bunun da üzerine gitmedim.

3- Özellikle Mybb’nin color taglerinde vs. çok sorun yaşadım. İçeriklerin birçoğu formatlanmamış olarak [font] [color] tagleriyle geldi. Bu sorunu çözmek için rabake diye bir olay var. Şimdilik buna bakmadım ama rabake için bu tagleri silecek bir koddan emin olursam uygulayacağım. (Önce localde denemem lazım tabii.)

4- Import scriptini ilk çalıştırmamda kullanıcı adında boşluk bulunmasından kaynaklanan sorun yaşadım ve kullanıcı adı “Kullanıcı Adı” gibi olan üyeler içeri aktarılmadı, daha sonra veritabanını tekrar yedekleyip aktarıp üzerine yazdırdım, üzerine yazdığı için daha kısa sürdü ve bu sefer üyeleri import etti. (“Kullanıcı Adı” --> “Kullanıcı_Adı” olarak değiştirerek.)

İlk başta çok umutsuzdum ve açıkçası sadece hırs ve merakla uğraşayım biraz diye başlamıştım ama sonra umutsuz olacak bir durum olmadığını anladım. Bu yüzden hangi sistemden olursa olsun, import etmekten korkan, çekinen varsa, denesin. Bu süreçte çok fazla şey öğreniliyor.

Genel olarak özetledim ama eğer bir gün olur da birileri bunun ihtiyacını duyarsa burada elimden geldiğince Türkçe rehber oluşturmaya çalışırım.


(Muhammed Yalçınkaya) #6

Harika! Mesajını konuya çevirecektim ama ilgili adımlar eksik gibi görünüyor :slight_smile:


(Bekir Cem Ünalan) #7

Eğer birileri Mybb’den Discourse’a import yapmak gibi bir topa girişirse, buralardayım, rehber oluştururuz. Ama şu an indekslenmiş konular yeni forumun url’sine yönlenmiyor. Bu sorunu çözmeye çalışıyorum. Ciddi bir problem. Import scriptinde bununla ilgili bir kod satırı var ama url yapısı doğru olmadığı için işe yaramıyor. Kalıcı bağlantılar kısmından elle yapılabilir ama 10.000 konuyu yapmam neredeyse imkansız, bunu bir kodla toplu olarak yapmanın yolunu düşünüyorum. Bu konuda bir fikrin var mı?


(Muhammed Yalçınkaya) #8

Kendi aktarma yazılımındaki ilgili kod satırından şu şekilde bahsediyorsun sanırım.

Sen özel SEO eklentisi kullanıyordun değil mi?


(Muhammed Yalçınkaya) #9

Birde şu iki konuyu inceledin mi?

MyBB için örnek .map dosyası:


(Bekir Cem Ünalan) #10

topic map olayını daha önce görmemiştim ama 10.000 tane konu yönlendirileceği için bu yöntemle yapmak çok uzun sürebilir, daha kısa bir yöntem arıyorum. ruby ile konsoldan yapılabiliyormuş ama nasıl yapıldığı konusunda bilgi yok. Discourse resmi forumunda bu konuda bir üye sadece ücretli destek veriliyor, o da saatliği 150 dolarlardan bahsediyor.


(Bekir Cem Ünalan) #11

Evet, özel eklenti kullanıyordum, şu şekilde link yapım:

http://forum.site.com/konu-topic-title.html


(Muhammed Yalçınkaya) #12

Tamam zaten bu konuda da bundan bahsediyor.

Adam XXX yazan kısımları kaldırıp içeri aktarma yazılımına şu kodla yama yaptığını belirtmiş.

parent = topic_lookup_from_imported_post_id(m['first_post_id'])
if parent
  puts "\nXXX #{m['topic_id']}: #{parent[:topic_id]},"
end

Daha sonra çalıştırarak /etc/nginx/mybb2discourse.map dosyasını oluşturduğunu ve /etc/nginx/conf.d/discourse.conf dosyasında üst kısıma şu kodu eklediğini belirtmiş.

map_hash_bucket_size 128;
map_hash_max_size 50000;  # might have to increase this
    
map $uri $new {
    include /etc/nginx/mybb2discourse.map;
}

Aynı dosya içerisinde server kısmına ise şu kodu eklemiş.

if ($new) {
    rewrite ^ $new permanent;
}

Daha sonra ise yeniden başlatma ve yapılandırma işlemlerini şu kodlarla sağşamı hepsi otomatik yönlendirilmiş.

# Important: If nginx -t comes back with an error, correct the config before reloading!
sudo service nginx reload

# Rebuild the container to apply changes
/var/discourse/launcher rebuild app

Özeti ise;
İçeri aktarım sırasında eski konuların mevcut bağlantıları ve yeni oluşturulacak bağlantılarını bir dosyaya kaydedip bunu Discourse içerisine NGINX ile toplu aktarmış :slight_smile:


(Bekir Cem Ünalan) #13

Bunu bir ara deneyeceğim ama aslında tam olarak benim durumumda çözüm bu değil gibi görünüyor. Çünkü ben import ettim zaten, şu anda yayında Discourse. :slight_smile: Bunun için tekrar import işlemi yapmam lazım veya üzerine yazdırmam lazım. Onda da yeni sisteme geçen kullanıcılar tekrar şifre sıfırlayıp baştan başlaması gerekecek vs. Yine de denemeye çalışacağım bunu. Eğer başka bir çözüm bulamazsam.

Discourse’un kalıcı bağlantılar kısmından yönlendirme elle yapabiliyorum ama tek tek olduğu için 10.000 konu için biraz zaman alabilir. Ve elimde eski forumun tüm konu linklerinin url listesi yok. Bu url listesine erişip o bir şekilde otomatikleştirerek bunu girecek bir yöntem deneyebilirim belki. Tabii performans etkisi de önemli bu gibi durumlarda.

Mesela Nginx ile 10.000 sayfayı o şekilde yönlendirmek acaba nginx üzerinde ağır bir yük oluşturur mu?