Liman Migration İşlemi

Turan Kılıç - Jul 1 '22 - - Dev Community

Liman Migration İşlemi

Bu süreç eski bir Liman'dan yeni bir Liman'a, eski Liman'ın üzerindekilerin aktarılmasını içermektedir.

Veritabanı Export - Import İşlemi

İlk olarak eski Liman'ın kullanmış olduğu veri tabanının (yani eski postgresql veritabanının) export'u alınır. Bu işlem iki farklı yöntemle gerçekleştirilebilir.

  1. PgAdmin uygulamasını kullanarak,
  2. psql komutları ile,

PgAdmin ile Export - Import İşlemi

Öncelikle PgAdmin uygulaması açılır ve eski veri tabanına bağlantı sağlanır.
Bağlantı sonrası aşağıda gösterildiği gibi, export edilecek eski veritabanına sağ tıklanır ve Backup seçeneği seçilir.
PgAdmin Export Database

Backup seçeneği seçildikten sonra aşağıdaki gibi çıkarılacak backup'ın ismi ve lokasyonu belirtilir. Burada dikkat edilmesi gereken şey çıkarılacak dosyanın uzantısının .sql ile bitmesidir.
Backup Settings

Sonrasında Backup seçeneği ile export işlemi başlatılır. İşlem tamamlandığında aşağıdaki gibi seçilen lokasyonda belirtilen isimde backup dosyası elde edilmiş olunur.
Backup PgAdmin

Tekrardan PgAdmin uygulaması açılır ve yeni sunucuya (yeni liman-postgres sunucusu) bağlantı sağlanır.
Bağlantı sonrası aşağıda gösterildiği gibi, import işlemi yapılacak yeni veritabanına sağ tıklanır ve Restore seçeneği seçilir.
PgAdmin Import Database

Restore seçeneği seçildikten sonra aşağıdaki gibi import edilecek dosya seçilir ve restore (import) işlemi Restore tuşu ile başlatılır.
PgAdmin Restore

İşlem tamamlandığında artık import işlemi bitmiştir. Eski veritabının içerdiği tablolar, veriler başarıyla yeni veritabanına taşınmış oldu.

Psql Komutu ile Export - Import İşlemi

Bu işlem için öncelikle veritabanı üzerinde bir SuperUser'a ihtiyaç duyulmaktadır. Postgresql veritabanlarında postgres isimli bir default SuperUser bulunmaktadır. İşlemlerde bu kullanıcı kullanılabilir.

İlk olarak eski veritabanına sahip sunucuya bağlantı sağlanır ve aşağıdaki komut ile veritabanına erişilir.

sudo psql -U postgres -d ESKI_DB_ADI
Enter fullscreen mode Exit fullscreen mode

Bağlantı sonrası aşağıdaki komut ile veritabanının export edilmesi sağlanır.

pg_dump -U postgres -h SERVER_IP ESKI_DB_ADI >> backup.sql
Enter fullscreen mode Exit fullscreen mode

Elde edilen sql dosyası yeni sunucuya gönderilir.
Gönderilen dosya aşağıdaki komut ile sunucu üzerinde gerekli veritabanına import edilir.

sudo psql YENI_DB_ADI < backup.sql
Enter fullscreen mode Exit fullscreen mode

Böylelikle veritabanı kısmı tamamlanmış olur.

Bu iki adımdan birisi tamamlandığında, eski veritabanındaki veriler ve tablolar, yeni veritabanına taşınmış olcaktır. Yeni liman üzerinde bazı sunucular kendiliğinden eklenmiş hatta eklentileri de gelmiş olacaktır. Fakat eklentilerin içeriklerinin doldurulması işlemi yani bir sonraki adım yapılmadan, eklentiler kullanılamamaktadır.

Eklentilerin Gönderilmesi İşlemi

İlk olarak eski liman sunucusu üzerinde "/liman/extensions" dizinine gidilir.

sudo cd /liman/extensions/
Enter fullscreen mode Exit fullscreen mode

Bu dizin altındaki dosyalar (yani eklentiler) tar komutu ile arşivlenir. Bu işlem için çalıştırılması gereken komut:

tar cvf extensions.tar *
Enter fullscreen mode Exit fullscreen mode

Elde edilen arşiv dosyası (extensions.tar) yeni liman sunucusuna gönderilir. Aşağıdaki komut yardımı ile gerekli lokasyona çıkartılır. !! Bu işlem için root olmak gerekebilir !!

tar xvf extensions.tar -C /liman/extensions/ 
Enter fullscreen mode Exit fullscreen mode

Böylelikle yeni liman üzerindeki eklentilerin dosyaları yeni liman sunucusuna taşınmış oldu. Şimdi bu eklentilerin kullanılabilmesi için önceki kullanıcıların sahipliklerinin ayarlanması gerekmektedir. Şu hali ile halen eklentiler kullanılmamaktadır ve liman render/Go hatası alınmaktadır.

Eklenti Kullanıcılarının Eklenmesi

Eski sunucu üzerinde aşağıdaki komut ile kullanıcılar görüntülenir.

cat /etc/passwd
Enter fullscreen mode Exit fullscreen mode

Çıktı şu şekilde olacaktır:
Linux list users

Burada isimleri "900f871c774f43789bac48aee4f0ba64" gibi uzun ve garip olan, uid (user id) ve gid (group id) değeleri 900'lerde olan kullanıcılar liman için eklenti kullanıcılarıdır. Bu kullanıcılar manuel olarak sıra ile yeni kullanıcıya eklenmeli ve uid değerleri aynı olmalıdır.
Bu listedeki kullanıcılar yeni liman sunucusuna bağlantı kurulup aşağıdaki komut ile başarıyla eklenebilir.

adduser -u UID_VALUE USERNAME --force-badname --disabled-password --gecos ""
Enter fullscreen mode Exit fullscreen mode

Burada:

  1. UID = Kullanıcının id değeri (900 küsürlü sayı değeri.)
  2. USERNAME = Kullanıcının adı (275f371ec56845978ff7356bbb315733 gibi bir değer.)
  3. --force-badname = Linux üzerinde bu tarz garip ve kötü isimlerin oluşturulması için gerekli parametre.
  4. --disabled-password = Kullanıcıyı no-login bir kullanıcıya çevirmek için gerekli parametre.
  5. --gecos = Kullanıcı eklerken karşılaşılan "full_name" gibi değerlerin pass edilmesi için gerekli parametre.

Böylece gerekli kullanıcılar eklenmiş olur. Şimdi bu kullanıcıların gerekli eklentilere sahiplik etmesinin sağlanması gerekmektedir.

Eklentilerin Sahipliklerinin Değiştirilmesi

Bu aşamada eski liman sunucusu üzerindeki "/liman/extensions/" dizini listelenir ve sahipliklere bakılır.

ls -la /liman/extensions/
Enter fullscreen mode Exit fullscreen mode

Yeni sunucu üzerinde ise bu dizine gidilir.

sudo cd /liman/extensions/
Enter fullscreen mode Exit fullscreen mode

Eklentilerin (dosyaların) sahiplikleri recursive olarak değiştirilir. Bunun için gerekli komut:

chown -R b47c8eae53ca4f8a8210303eb1486e54:liman bilgisayarlar/
Enter fullscreen mode Exit fullscreen mode

Bu örnekte bilgisayarlar isimli eklentinin sahipliği "b47c8eae53ca4f8a8210303eb1486e54" isimli kullanıcıya verilmiştir. Sunucu üzerinde ne kadar eklenti var ise eski sunucu sayesinde sahipliklerine bakılarak yeni sunucu üzerinde sahiplikler değiştirilir.

Yapılan işlemlerin sonucunda eski ve yeni sunuculardaki sahiplikler aynı olmalıdır. Örnek olarak:
ESKİ SUNUCU
Eski Sunucu

YENİ SUNUCU
Yeni Sunucu

Görüldüğü üzere yeni sunucu üzerindeki her eklentinin sahipliği, eski sunucu üzerindeki sahiplikler ile aynıdır.

Liman Environment'ının Düzenlenmesi

Eski sunucu üzerinde "/liman/server/.env" dosyası içerisindeki "APP_KEY" kısmı kopyalanır.

cat /liman/server/.env
Enter fullscreen mode Exit fullscreen mode

Yeni sunucu üzerinde "/liman/server/.env" dosyası bir editör ile açılır:

sudo nano /liman/server/.env
Enter fullscreen mode Exit fullscreen mode

APP_KEY kısmına eski sunucunun değeri girilir. Dosya kaydedilir ve kapatılır. Daha sonra liman servisleri yeniden başlatılır. Bunun için aşağıdaki komut çalıştırılır.

systemctl restart liman-*.ser*
Enter fullscreen mode Exit fullscreen mode

Sertifikaların Güncellenmesi

Yeni liman web arayüzü üzerinde "Ayarlar > Sertifikalar" sekmesine gidilir, aşağıdaki gibi ekli sertifikalara sağ tıklanır ve güncelle seçeneği seçilir.
Liman Sertifika

Sertifikalar güncellendikten sonra son aşamaya geçilir.

Liman DNS Ayarının Düzenlenmesi

Yeni liman web arayüzü üzerinde "Ayarlar > DNS Ayarları" sekmesine gidilir. Burada gerekli alanlar eski liman üzerindeki ayarların aynısı olarak kaydedilir ve çıkılır.
Liman DNS Settings

Artık yeni liman sunucusu eski liman sunucusunun aynısı olacaktır ve kullanılabilir hale gelecektir.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .