1. Ana Sayfa
  2. Web Yazılımları
  3. XenForo 2’den MyBB’ye Geçiş | Detaylı Rehber!
Trendlerdeki Yazı

XenForo 2’den MyBB’ye Geçiş | Detaylı Rehber!

xenforo_mybb_gecis

Xenforo 2’den MyBB’ye geçiş için Türkçe bir kaynak bulamadım ve ben geçiş yaparken çok fazla zorlandım. Deneye yanıla, İngilizce kaynakları araştıra araştıra zor da olsa sonunda başarılı bir şekilde XenForo 2’den MyBB’ye geçişi başardım. Ancak daha sonradan aldığımız bir kararla forumu sildik. Oradaki kaliteli içerikler de zamanla burada paylaşılacaktır.

Not: İşlemlere başlamadan önce yedeğinizi eksiksiz bir şekilde alın. Muhtemelen sorun yaşamayacaksınız, ancak temkinli olmanızda fayda var.
Daha önce hiç yedek almamış arkadaşlar için kısaca hemen yedek almayı gösterelim.

CPanel’den Yedek Alma

Çoğu hosting sağlayıcısı CPanel yazılımıyla hizmet vermektedir. O yüzden anlatım CPanel üzerinden olacaktır.

Öncelikle CPanel’e giriyoruz. Ardından menülerde en üstte “Yedekleme Sihirbazı” sekmesini buluyoruz.

CPanel Yedekleme sihirbazı

Açılan ekranda Backup (Yedekleme) kısmına tıklıyoruz.

Yedekleme Sihirbazı – Backup

Açılan pencerede bu sefer “Tam Yedekleme” butonuna basıyoruz.

Yedekleme Sihirbazı – Tam Yedekleme

Bu butona bastıktan sonra altta direkt altta çıkan “Yedek oluştur” butonuna basıyoruz.

Yedekleme Sihirbazı – Tam Yedek Oluştur

Ve işlem tamamdır (: Eğer siteniz çok büyük değilse 5-10 dakika içerisinde ana dizinde (public_html’in bir üstü) şuna benzer adda bir yedek dosyası olacaktır: backup-9.12.2019_05-02-09_technogr.tar.gz

Yedekleme Sihirbazı – İşlem Bitimi

Yedek aldığınıza emin olduktan sonra şimdi sunucumuzu bu işlem için hazırlamaya geçelim.

XenForo 2’den MyBB’ye geçiş yapmak için PhpMyAdmin’de ufak bi’ işlem yapmamız gerekiyor.
CPanel’in ana sayfasında bulunan PhpMyAdmin yazan menüye giriyoruz ve bizi ayrı bir pencerede veritabanlarımızı yöneten bir alana yönlendiriyor. Burada yapmamız gereken şey, sol menüde bulunan veritabanı listesinden XenForo’nun bağlı olduğu veritabanını bulmak ve üzerine tıklamak.

XenForo Veritabanını Bulma

Tıkladıktan sonra “İşlemler” sekmesine tıklıyoruz, üst taraftan.

PhpMyAdmin – İşlemler

En alta iniyoruz ve “Karşılaştırma” kolonuna bakıyoruz.

PhpMyAdmin – Karşılaştırma Dili

Eğer burada “utf8_general_ci” yazıyorsa işlem yapmanıza gerek yok. Ancak “latin1_swedish_ci” “utf8mb4_general_ci” gibi başka karşılama dilleri varsa “utf8_general_ci” seçiyoruz.

utf8_general_ci Seçimi

Ardından altta çıkan iki seçeneği de işaretliyoruz.

Tablo Karşılaştırmaları

Ardından sağ taraftaki “Git butonuna basıyoruz ve birtakım işlemler yapmaya başlıyor. İşlemler bittikten sonra alttaki gibi bir bildirim çıkacak;

SQL Sorgusu

PhpMyAdmin’de işimiz bitti, sekmeyi kapatabilirsiniz.
CPanel ana sayfamıza tekrardan giriyoruz ve bu sefer Güvenlik sekmesi altında bulunan ModSecurity modülüne giriyoruz.

ModSecurity Kapatılması

Girdikten sonra eğer açıksa hemen üstte “Devre dışı bırakabilirsiniz” butonu bulunacak. Bu butona basıyoruz.

ModSecurity Kapatma

Kapattıktan sonra yeniden ana sayfamıza giriyor ve PHP Selector, PHP Seçici gibi isimlere sahip modülü buluyoruz. Bu modüller sunucudan sunucuya değiştiği için net bir şey diyemiyorum. Ancak çoğu sunucu PHP Selector kullanmakta. Buna giriyoruz.

PHP Değiştirme

Şu anki Merge (Taşıma) yazılımı maksimim 7.1 desteklemekte. PHP versiyonunu 7.1 olarak değiştirmemiz gerekiyor. Burada 7.1 seçip “Set as current” diyoruz.

Önemli uyarı: Eğer MyBB'yi CPanel üstünden ya da mybb.com.tr üzerinden kurduysanız sorun yaşama ihtimaliniz çok yüksek. mybb.depo.com üzerinden indirip kurunuz.

Şimdi, işlemlerimize devam etmemiz için FTP’ye bağlanıyoruz. Eğer daha önce bağlanmadıysanız hemen anlatalım;

Filezilla Programının İndirilmesi ve Kurulumu

FileZilla sitesine giriyoruz ve karşımıza çıkan “Download” tuşuna basıyoruz. Bastıktan sonra açılan pencerede en soldaki -ücretsizi- butona basıyoruz.

FileZilla İndirilmesi

9-10 MB civarında bir dosya inecektir. Bu dosyayı normal program kurar gibi kuruyoruz.

Kurduktan sonra karşımıza şöyle bir panel çıkıyor.

Filezilla

Bu paneli tanıyalım biraz.

  • 1 Numara: Dosyaları görüntüleyeceğimiz sunucunun adresi.
  • 2 Numara: Sunucuya bağlanmaya yetkili kullanıcının adı.
  • 3 Numara: Bu kullanıcının bağlanacağı şifre.
  • 4 Numara: Sunucunun dosyalarının bulunduğu port. (Genellikle 21’dir)
  • 5 Numara: Yerel dosyalar (Sunucuya aktaracaklarımız)
  • 6 Numara: Sunucumuzdaki dosyalar.

Filezilla ile Sunucuya Bağlanma

FileZilla Ayarları

XenForo 2’den MyBB’ye geçiş için sunucudaki resimlerin yollarında bir değişiklik yapmamız gerekiyor.
Yukarıdaki resimde numaralar ile belirttiğim kısımları doldurarak sunucumuza bağlanacağım, gelelim bu bilgileri nasıl alacağımıza!

  • Sunucu

CPanel ana sayfasına giriyoruz ve sağ tarafta bulunan menüde bulunan “Shared IP Adress” kısmındaki IP’mizi kopyalayıp yapıştırıyoruz. Aşağıdaki resimde sarı renk ile çizdiğim yerde bulunmakta.

Sunucu IP Adresi
  • Kullanıcı Adı / Şifre

CPanel’e giriyoruz, ardından ilk menüde bulunan “FTP Hesapları” kısmına giriyoruz.

CPanel FTP Hesapları

Açılan menüde ayarlarımızı yapıyoruz. Burada kullandığını isim ve şifreyi bir yere not ediyoruz. Dikkat etmeniz gereken yer: “Dizin” kısmını ya boş bırakmanız, ya da public_html yazmanız. Karıştırmamanız açısından public_html yazmanızı öneririm.

CPanel FTP Hesabı Ekleme

Buraya yazdığınız bilgileri şimdi FileZilla’ya şu şekilde gireceksiniz;
K. Adı: [email protected] (Örn: [email protected])
Şifre: Oluşturmuş olduğunuz şifre

  • Port / Kapı Numarası

Burayı boş bırakarak direkt “Bağlan” butonuna bağlanabilirsiniz.
Çoğu hizmette port numarası 21’dir. Eğer farklı bir port numarası kullanılmıyorsa direkt 21 yazabilirsiniz.

Sunucumuza bağlandıktan sonra şöyle bir görüntü oluşacaktır;

XenForo 2’den MyBB’ye Geçiş

Bağlandıktan sonra bazı yollarda düzenleme yapmamız gerekiyor. Peki ne yapacağız? CHMOD izinlerini düzeneyeceğiz.

CHMOD İzinlerini Ayarlama

  • CHMOD Nedir?

Sunucumuzdaki dosyalara kimin erişebileceğini, değiştirebileceğini belirleyeceğimiz bir Unix / Linux komutudur.
Yazılımın bu dosyalara erişebilmesi için bu izinleri vermemiz ve içerilerinde bulunan index.html dosyalarını silmemiz gerekiyor.

Değiştirme yapacağımız dosyaları ve yapacağımız işlemi yazalım öncelikle.

  • data (CHMOD 777 , index.html silme)
  • data\avatars (CHMOD 777 , index.html silme)
  • data\avatars\h (CHMOD 777 , index.html silme)
  • data\avatars\h\0 (index.html silme)
  • data\avatars\l (CHMOD 777 , index.html silme)
  • data\avatars\l\0 (index.html silme)
  • data\avatars\m (CHMOD 777 , index.html silme)
  • data\avatars\m\0 (index.html silme)
  • data\avatars\o (CHMOD 777 , index.html silme)
  • data\avatars\o\0 (index.html silme)
  • data\avatars\s (CHMOD 777 , index.html silme)
  • data\avatars\s\0 (index.html silme)
  • internal_data (CHMOD 777 , index.html ve .htaccess silme)
  • internal_data\attachments (CHMOD 777 , index.html silme)
  • internal_data\attachments\0 (CHMOD 777 , index.html silme)

Ne işlem yapmanız gerektiğini bir örnekle göstereceğim, bütün dosyalara aynı işlemi yapacaksınız. Yanında dosya ismi belirttiklerimi (index.html ve .htaccess) sileceksiniz.

  • CHMOD Değiştirme

Örneği internal_data klasörü üstünden gösteriyorum. Klasörü bulup üzerine sağ tıklıyoruz ve “Dosya İzinleri” diyoruz. Ardından açılan pencerede “Sayısal değer” yazan yere 777 yazıyoruz.

CHMOD 777

Eeee bir sürü ayar yaptık, nerede bu geçiş 😀
Haklısınız, ancak bunları yapmadan bir sürü hata alıyoruz maalesef. Tam stabil olarak çalışmıyor, en azından XenForo için. Merak etmeyin, son bir bölüm kaldı.

SSL Kaldırma

Oh wait… Neden? SSL çok önemli değil miydi, neden kaldırtıyorsun?Arkadaşlar sakin, sadece 30-35 dakika kaldıracağız sonra yeniden aktif edersiniz (:

Bunu kaldırma nedenimiz resimleri, profil fotoğraflarını taşırken sorun yaşatıyor.

SSL’i kaldırmak için CPanel’e giriyoruz. Güvenlik sekmesi altında SSL/TLS bölümüne giriyoruz. Ardından açılan sayfada “SSL sitelerini yönet” diyoruz.

SSL Kaldırma

Ardından açılan sayfada “Kurulumu Kaldır” diyoruz. Eğer SSL yoksa, burası çıkmayacaktır.

SSL Kurulumu Kaldırma

CloudFlare kullanıyorsanız;

CloudFlare sitesine girip giriş yapıyoruz. Site adresimizin üzerine tıklıyoruz ve açılan panelden SSL/TLS diyoruz ve hemen altta SSL konumunu “Off” yapıyoruz.

CloudFlare SSL Kapatma

Her şey hazır, sıra aktarım yapmakta…

Asıl kısma geldik. Bu işlemi gerçekleştirmek için MyBB geliştirici ekibinin kodlamış olduğu bir scripti kullanacağız. Öncelikle bu scripti indiriyoruz: https://mybbdepo.com/mybb-merge-sistemi-1-8-11-turkce-konusu.html

İndirdikten sonra FTP_Yukle klasörünün içinde bulunan merge klasörünü olduğu gibi masaüstüne çıkartıyoruz. Şimdi sırada Filezilla aracılığıyla bağlandığımız sunucuya bu dosyaları aktarma var. FTP sunucumuzda ana dizine (admin, archive, cache, images vb. klasörlerin olduğu alan) geliyoruz ve aşağıdaki yönde bu dosyamızı aktarıyoruz.

FTP aracılığıyla Merge sistemini aktarma

Yükleme bitti, ancak işlem bitmedi. Normalde bu script XenForo 1 ile uyumlu, XenForo 2 ile uyumlu olması için kodlarında ufak bi’ değişiklik yapmamız gerekiyor. Öncelikle FTP dizinimizde aşağıdaki dizine erişiyoruz;

merge/resources/modules

Bu dizine girdikten sonra karşımıza users.php çıkacak. Bu dosyaya sağ tıklıyoruz ve düzenle diyerek içeriğini aşağıdaki gibi yapıyoruz.

<?php
/**
 * MyBB 1.8 Merge System
 * Copyright 2014 MyBB Group, All Rights Reserved
 *
 * Website: http://www.mybb.com
 * License: http://www.mybb.com/download/merge-system/license/
 */
abstract class Converter_Module_Users extends Converter_Module
{
	public $default_values = array(
		'usergroup' => 0,
		'additionalgroups' => '',
		'displaygroup' => 0,
		'import_usergroup' => 0,
		'import_additionalgroups' => '',
		'import_displaygroup' => 0,
		'import_uid' => 0,
		'username' => '',
		'password' => '',
		'salt' => '',
		'loginkey' => '',
		'email' => '',
		'regdate' => 0,
		'lastactive' => TIME_NOW,
		'lastvisit' => TIME_NOW,
		'website' => '',
		'showsigs' => 1,
		'signature' => '',
		'showavatars' => 1,
		'timezone' => '',
		'avatardimensions' => '',
		'avatartype' => '',
		'avatar' => '',
		'lastpost' => 0,
		'icq' => '',
		'yahoo' => '',
		'skype' => '',
		'google' => '',
		'hideemail' => 1,
		'allownotices' => 1,
		'regip' => '',
		'lastip' => '',
		'language' => '',
		'passwordconvert' => '',
		'passwordconverttype' => '',
		'postnum' => 0,
		'invisible' => 0,
		'birthday' => '',
		'birthdayprivacy' => 'all',
		'subscriptionmethod' => 2,
		'receivepms' => 1,
		'receivefrombuddy' => 0,
		'pmnotice' => 1,
		'pmnotify' => 1,
		'showquickreply' => 1,
		'ppp' => 0,
		'tpp' => 0,
		'daysprune' => 0,
		'timeformat' => '',
		'dst' => 0,
		'buddylist' => '',
		'ignorelist' => '',
		'style' => 0,
		'away' => 0,
		'awaydate' => 0,
		'returndate' => '',
		'referrer' => 0,
		'referrals' => 0,
		'reputation' => 0,
		'timeonline' => 0,
		'showcodebuttons' => 1,
		'totalpms' => 0,
		'unreadpms' => 0,
		'pmfolders' => '1**Inbox$%%$2**Sent Items$%%$3**Drafts$%%$4**Trash Can',
		'notepad' => '',
		'threadmode' => '',
		'showredirect' => 1,
		'dateformat' => '',
		'dstcorrection' => 1,
		'warningpoints' => 0,
		'moderateposts' => 0,
		'moderationtime' => 0,
		'suspendposting' => 0,
		'suspensiontime' => 0,
		'suspendsignature' => 0,
		'suspendsigtime' => 0,
		'coppauser' => 0,
		'classicpostbit' => 0,
		'loginattempts' => 0,
		'usernotes' => '',
		'showimages' => 1,
		'showvideos' => 1,
	);
	
	public $binary_fields = array(
		'regip',
		'lastip',
	);
	public $integer_fields = array(
		'usergroup',
		'displaygroup',
		'import_usergroup',
		'import_displaygroup',
		'import_uid',
		'regdate',
		'lastactive',
		'lastvisit',
		'showsigs',
		'showavatars',
		'lastpost',
		'hideemail',
		'allownotices',
		'postnum',
		'invisible',
		'subscriptionmethod',
		'receivepms',
		'receivefrombuddy',
		'pmnotice',
		'pmnotify',
		'showquickreply',
		'ppp',
		'tpp',
		'daysprune',
		'dst',
		'style',
		'away',
		'awaydate',
		'referrer',
		'referrals',
		'reputation',
		'timeonline',
		'showcodebuttons',
		'totalpms',
		'unreadpms',
		'showredirect',
		'dstcorrection',
		'warningpoints',
		'moderateposts',
		'moderationtime',
		'suspendposting',
		'suspensiontime',
		'suspendsignature',
		'suspendsigtime',
		'coppauser',
		'classicpostbit',
		'loginattempts',
		'showimages',
		'showvideos',
	);
	
	/**
	 * Total users queried from the MyBB Database used in the users module
	 */
	public $total_users = 0;
	/**
	 * Insert user into database
	 *
	 * @param array $data The insert array going into the MyBB database
	 * @return int|bool The new id or false if it's a duplicated user
	 */
	public function insert($data)
	{
		global $db, $output;
		if(!$this->check_for_duplicates($data))
		{
			$this->increment_tracker('users');
			return false;
		}
		++$this->total_users;
		$this->debug->log->datatrace('$data', $data);
		$output->print_progress("start", $data[$this->settings['progress_column']]);
		// Call our currently module's process function
		$data = $this->convert_data($data);
		// Avoid wrong lastactive and lastvisit times (mybb sees "0" or "" as currently online)
		// unsetting the value works as the default value above sets it to the current timestamp
		if(empty($data['lastactive']))
		{
			unset($data['lastactive']);
		}
		if(empty($data['lastvisit']))
		{
			unset($data['lastvisit']);
		}
		// Should loop through and fill in any values that aren't set based on the MyBB db schema or other standard default values and escape them properly
		$insert_array = $this->prepare_insert_array($data, 'users');
		$this->debug->log->datatrace('$insert_array', $insert_array);
		$db->insert_query("users", $insert_array);
		$uid = $db->insert_id();
		$this->increment_tracker('users');
		$output->print_progress("end");
		return $uid;
	}
	public function check_for_duplicates(&$user)
	{
		global $db, $output, $import_session;
		if(!$this->total_users)
		{
			// Count the total number of users so we can generate a unique id if we have a duplicate user
			$query = $db->simple_select("users", "COUNT(*) as totalusers");
			$this->total_users = $db->fetch_field($query, "totalusers");
			$db->free_result($query);
		}
		$username = $user[$this->settings['username_column']];
		$encoded_username = encode_to_utf8($user[$this->settings['username_column']], $this->settings['encode_table'], "users");
		// Check for duplicate users
		$where = "username='".$db->escape_string($username)."' OR username='".$db->escape_string($encoded_username)."'";
		$query = $db->simple_select("users", "username,email,uid,postnum", $where, array('limit' => 1));
		$duplicate_user = $db->fetch_array($query);
		$db->free_result($query);
		// Using strtolower and my_strtolower to check, instead of in the query, is exponentially faster
		// If we used LOWER() function in the query the index wouldn't be used by MySQL
		if(strtolower($duplicate_user['username']) == strtolower($username) || my_strtolower($duplicate_user['username']) == strtolower($encoded_username))
		{
			if($user[$this->settings['email_column']] == $duplicate_user['email'])
			{
				$output->print_progress("start");
				$output->print_progress("merge_user", array('import_uid' => $user[$this->settings['progress_column']], 'duplicate_uid' => $duplicate_user['uid']));
				$db->update_query("users", array('import_uid' => $user[$this->settings['progress_column']], 'postnum' => $duplicate_user['postnum']+$user[$this->settings['postnum_column']]), "uid = '{$duplicate_user['uid']}'");
				return false;
			}
			else
			{
				$user[$this->settings['username_column']] = $duplicate_user['username']."_".$import_session['board']."_import".$this->total_users;
			}
		}
		return true;
	}
}

Ardından kaydediyoruz ve Filezilla bize sunucudaki dosya ile değiştirileceğini soruyor, onaylıyoruz.

Değişikliği yaptıktan sonra MyBB’yi yüklediğimiz dizinin sonuna /merge ekliyoruz. Örnek;

Merge Dizinine Ulaşma

Girdiğimiz zaman aşağıdaki sayfa bizi karşılayacak.

Merge 1

Burada ileri butonuna tıklıyoruz ve devam ediyoruz. Karşımıza çıkan forum yazılımlarından XenForo 1’i seçiyoruz. Ardından karşımıza aktarım yapacağımız bölüm çıkıyor.

Merge 2

En üstten başlıyoruz işlemlere. Öncelikle XenForo veritabanımıza bağlanması için “Database Configuration” seçeneğine çalıştır diyoruz ve veritabanı bilgilerini gireceğimiz alan karşılıyor bizi.

Merge Database

Bu ekranda XenForo’ya ait bilgileri giriyoruz. Dikkat etmemiz gereken kısım Tablo Ön Eki ve Tablo Kodlaması.

Bu bilgiler için CPanel’imizden PHPMyAdmin’i açıyoruz ve XenForo veritabanımıza giriş yapıyoruz.

Merge PHPMyAdmin

Giriş yaptığımızda solda her bir sütunun en başında yazan, bizim tablo ön ekimizdir. Örnek olarak;

Veritabanı Ön Ek

Sağda yazan ise, bizim veritabanı dilimizdir.

Merge Veritabanı Dili

Bu iki değeri de girdikten sonra eğer yeşil tik çıktıysa başarılı bir şekilde bağlantı sağlandı demektir.

Merge Başarılı Bağlantı

Bundan sonrası çok kolay (:

Hepsine sırasıyla çalıştır diyoruz ve hata aldığımız yerde sayfayı korkmadan yenileyip işlemi tekrarlıyoruz.

Aktarım işlemimiz tamamlanmış oldu, başarılı/başarısız geri dönüşlerinizi bekliyorum.

Yorum Yap

Yazar Hakkında

İnönü Üniversitesi 1. sınıf Bilgisayar Programcılığı okumakta, Fİ|ZET Medya'da Webmaster olarak çalışmaktayım. Senelerdir bu sektörde birçok kişiye yardım ettim ve edindiğim tecrübeleri size aktarıyorum.

Yorum Yap