AWS EC2 ile BigBlueButton Kurulumu Notlarım

Son günlerde uğraştığım bir konun notlarını daha sonraya kullanım için buraya bırakıyorum. Kendinize ait bir toplantı, eğitim modülü arıyorsanız Bigbluebutton tam size göre PDF üzerinden konu anlatımı, Anket, Web Cam, Screen Share, Youtube video streaming, İç odalar açmak vb gibi bir çok özelliğe sahip bir uygulama.

Kötü olarak söyleyebileceğim tek makina üzerinde çalışıyor olması ve ölçeklenebilirliği zayıf olması ama çözüleceğini düşünüyorum zamanla.

Neyse uzatmadan notlara giriyorum.

Region olarak Türkiye'ye yakın bir yer seçerseniz gecikmeleriniz az olacaktır. ABD yerine Europe tercih edebilirsiniz. Örn: Frankurt.

AWS EC2 üzerinde bir Linux Ubuntu 16 versiyon 20 GB makina açıyoruz. 4 CPU - 16GB RAM (c5.xlarge) gereksinim yazılmış ama ihtiyaca göre sonrasında küçültülebilir. 2 CPU 8 GB RAM olarak denedim gayet iyi performans verdi hatta 2 CPU - 4 RAM olarak bile fena değildi. Maliyetleri biraz yüksek 40$ ile 120$ arasında aylık maliyetler söz konusu fakat yıllık alımlar ile %60 kar edebilirsiniz. 

Linux makinanız kurulduğunda Security gruplar yani port ve IP izinlerini ayarlamalısınız.

Sonrasında makina hazır olduğunda ec2 makinanızı açarken amazon tarafından size verilen *.pem dosyasını puttygen.exe üzerinden geçirin. Pem dosyasını yükleyin, ppk uzantılı bir dosya alacaksınız bu dosyaları yedekleyin ve kaybetmeyin yoksa makina erişiminiz gider.

Ardından, putty.exe çalıştırın. Amazon üzerindeki çalıştırdığınız makinanın Ip adresini ubuntu@<Ipadresiniz> şeklinde aşağıdaki bölüme yazın. 

Sonrasında aşağıdaki gibi Auth bölümünden Ppk dosyasını seçin ve Session bölümüne geri dönüp SavedSession bölümüne bir isim verip kayıt edin bir sonraki gelişiniz için Load edip hızlıca uzak bağlantı yapmanızı sağlar.

Bağlantıyı sağladığızda bir console ekranı sizi karşılar. clear ile temizleyin ve aşağıdaki bir ekran üzerinden bbb kurulumuna başlayın. sudo su komutu ile root yetkisi alabilirsiniz.

Kurulum için https://github.com/mesutcakir/bbb-install?organization=mesutcakir&organization=mesutcakir adresini kullanabilirsiniz. 

Aşağıdaki komutu çalıştırın. Aşağıdaki mail ve host alanlarına kendi bilgilerinizi yerleştirin. (not: Bu Ip adresine domain yönlendirmenizi yapmayı unutmayın.)
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -w -s bbb.mesutcakir.com.tr -e test@mesutcakir.com.tr 

Kurulum bittiğinde herşeyiniz hazır olacak. 

 

Aşağıdaki komut ile uygulamanıza API bağlantısı için bir secretKey sahibi olabilirsiniz. Önemli bir veridir kayıp etmeyin.

bbb-conf -secret 

https://github.com/mesutcakir/BigBlueButtonApi adresi üzerinden C# ile api bağlantılarını nasıl yapabileceğinizi görebilirsiniz.

--Kayıtların videoya çevirilmesi

--Videoların s3 üzerine gönderilmesi

--Toplantı tamamlanması, videonun hazır olması gibi eventlerin bağlantıları

gibi içerikleri vakit bulursam paylaşacağım şimdilik bu kadar.

 

 

 

 

 

Amazon Ec2 Linux üzerinde MsSql Server 2017 Çalışmaları ve Yedekleme Senaryosu

Windows üzerinde alışık olduğumuz MSSQL kullanımını Linux üzerinde deneyimleme fırsatım oldu.

Amazon AWS üzerindeki denemelerimde %30 Maliyet kazancı sağlanabildiğini gördüm. "Ubuntu Server 16.04 LTS (HVM) With SQL Server 2017 Web" AMI üzerinden bir Ec2 instance üreterek işe başldım.

Başlangıç olarak test amaçlı 1CPU-2GB RAM t2.small bir makine ile başlamayı tercih ettim. Maliyet Ölçümü için s3 calculator ile baktığımızda 66.72$ Aylık(720saat) kullanım ücreti görüntüledim. Windows için 75.69$ olarak %10 fark olduğunu görüntüledim. 

Linux Makina Kurulumu nasıl Yapılır ?

Amazon Console üzerinden Ec2 içerisinden Launch Instance seçeneğini kullanarak bir linux makina ayağa kaldırıyoruz. "Ubuntu Server 16.04 LTS (HVM) With SQL Server 2017 Web" olarak AWS Marketplace içerisinde bulabiliriz.

Linux üzerinde bağlantı nasıl sağlanır ?

PuttyGen aracılığı ile bağlantıyı sağlayabilirsiniz. Makina kurulumu sırasında size verilen .pem dosyasını kullanarak işlemi yapacaksınız. PuttyGen açtığınızda Load tıklayarak pem dosyasını verin. Public ve private key kayıtlarını sağlayın.

Belirleyeceğimiz şifre ile giriş yapacağız. Güçlü bir şifre belirleyin.

Herşey hazır olduğunda bağlantı için Putty.exe çalıştırın.

Puttgen içerisinde belirlediğimiz şifremizi burada kullanarak giriş yapıyoruz.

Ve giriş yapıldı. SQL çalışıyor mu kontrol edelim.

systemctl status mssql-server

Linux üzerinde MSSQL kurulumu nasıl yapılır ?

Öncelikle iki doküman size yardım olacaktır. SQL hazır olarak gelecektir (AWS EC2) Aşağıda linklerini paylaştım. Sqlcmd kullanımı için kurulumu yapıyoruz. Sql Agent aktif hale getiriyoruz. 

sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-2017
https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-sql-agent?view=sql-server-2017

Linux MSSQL sa şifresi nasıl belirlenir ?

sudo systemctl stop mssql-server
sudo MSSQL_SA_PASSWORD=ŞİFRENİZ /opt/mssql/bin/mssql-conf set-sa-password
sudo systemctl start mssql-server
systemctl status mssql-server

Linux MSSQL yeni kullanıcı ekleme nasıl yapılır ?

Buradan sonrası sql query ile ilerleyebileceğiniz yerlerdir. Örnek olarak.

sqlcmd -U sa -P Şifreniz -q "CREATE LOGIN KullaniciAdi WITH PASSWORD = 'ŞİFRENİZ';GO;CREATE USER KullaniciAdi FOR LOGIN KullaniciAdi;GO"

Linux MSSQL S3 üzerinde Backup/Restore nasıl gerçekleştirilir ?

apt install awscli kurulumunu yaparak s3 üzerindeki bir dosyanızı makina içerisine indirebilirsiniz.

aws s3 cp s3://sqlbackup/yourdatabase.bak ./yourdatabase.bak

sqlcmd -U sa -P Şifreniz -q "USE [master];GO;RESTORE DATABASE [yourdatabase] FROM DISK = '/yourdatabase.bak' WITH MOVE 'yourdatabase' TO '/mssql/data/yourdatabase.mdf',MOVE 'yourdatabase_log' TO '/mssql/data/yourdatabase.ldf', REPLACE;"

Sonrasında GO diyerek işlemi tamamlıyoruz. Artık var olan veritabanımızı içeri aktardık. Buradan sonrasını SQL management üzerinden bağlanarak maintaince plan üreterek zamanlamaları planlayarak backupları yönetebilir duruma geliyoruz. 

aws s3 sync ./ s3://sqlbackup şeklinde belirli bir klasördeki verilerin tamamını aktarabiliriz.

Düzenli S3 aktarımlı backup yönetimi için;

https://dev.to/lukebearl/ms-sql-server-backups-to-s3--on-linux-dan 

E-İmza - Pdf İmzalama - Usb bilgileri okuma

E-İmza ile ilgili internette bulduğum kaynaklardan derlemelerimi sizlerle paylaşmaktayım. Ek kodlarla uğraşmadan Argelog.eSign nuget packetini kullanarak direk olarak bağlantınızı tamamlayabilirsiniz. PDF imzalama için sertifika üretimi ve bilgilerin tamamının okutularak ekranda gösterilmesi örnekte mevcuttur. Itextsharp ile pdf imzalama örneği gerçekleştirilmiştir.

https://github.com/mfarkan/E-Imza-iTextSharp-ESYA-Api

NOT: Var olan çalışmayı java ile yazdım. .Net olan versiyonu için pades sorununu çok sonradan çözdüm fakat java kadar etkin bir çözüm değildir. 

 

How to Change TFS Server 2015 Build Path ?

Merhaba TFS üzerinde takıldığım ve internette nasıl çözeceğimi bulamadığım bir konuyu buraya not alıyorum. Aldığım hata şöyle: 

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets(232):Cannot evaluate the item metadata "%(FullPath)". The item metadata "%(FullPath)" cannot be applied to the path

C:\Program Files\Microsoft Team Foundation Server 14.0\Build\settings.json dosyasını açın. RootFolder - WorkFolder iki adresi değiştirin. Sonra ki build sorun düzelecektir.

{
"AutoUpdate": "True",
"RootFolder": "C:\\MyBuilds",
"WorkFolder": "C:\\MyBuilds\\_work",
"ServerUrl": "http://localhost:8080/tfs",
"AgentName": "Agent-???????????",
"PoolId": "6",
"PoolName": "??????????????????",
"AgentId": "3",
"RunAsWindowsService": "True",
"WindowsServiceName": "??????????????????????",
"WindowsServiceDisplayName": "??????????????????"
}

C# ile Web Api Get-POST ve JSON Array Sending Ve Postman Google Plugin

 Merhaba Arkadaşlar Web Api Üzerine Json objeleri Javascript, Jquery ile gönderirken sorun yaşamıyoruz fakat C# ile bu tarz bir iş yaparken ufak tefek sorunlar çıkabiliyor. "RestSharp" denen bir libary keşfettim. Nuget aracılığı ile projeme dahil ettim. JSON.stringfy yerine "Newtonsoft.Json.JsonConvert.SerializeObject" ekledim. nuget aracılığı ile onuda eklemeniz gerekmektedir.  

Bu RestSharp en güzel yanı POSTMAN denen chrome extention ile ortak çalışabilmesi, kodlarının otomatik üretilmesi ayrı bir olay. Aşağıdaki resimde çağrıyı hazırlıyoruz ve Generate Code diyerek bu ekrana ulaşıyoruz. Sonrası zaten kodu sisteme dahil etme işi oluyor.

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections.Generic;
using RestSharp; 

[TestClass]
    public class SyncController_Test
    {
        [TestMethod]
        public void SyncController_Test_Get()
        {
            var url = "http://localhost:38405/api/Sync/GetJsonObject";
            var client = new RestClient(url);
            var request = new RestRequest(Method.GET); 
            IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
        }

        [TestMethod]
        public void SyncController_Test_Post()
        {
            var client = new RestClient("http://localhost:38405/api/Sync/UploadMaterialSeriLot?id=1");
            var request = new RestRequest(Method.POST);
            request.AddHeader("accept", "application/json");
            request.AddHeader("content-type", "application/json");
            var jsonObject = Newtonsoft.Json.JsonConvert.SerializeObject(new{ Name="Test",SurName="Test"});           
            request.AddParameter("application/json", jsonObject, ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            Console.WriteLine(response.Content);
        }
    }