Jupyter Notebook İle Uzak Sunucuda Program Geliştirme
Kayıt Tarihi:
Son Güncelleme:
Bu yazımda sizlere uzak bir bilgisayarda kodlama yapmanın bir yolunu açıklayacağım. Bunun için uzak sunucuda Jupyter Lab servisi kurup buna yerel bilgisayarımızda erişeceğiz. Yazımın sonunda yer alan videoda adımların uygulanışını izleyebilirsiniz.
Anahtar Kelimeler: AWS · DDNS · EC2 · Jupyter Lab · Jupyter Notebook · Noip DUC · python · systemdBazı durumlarda uzak bir bilgisayarda kodlama yapmak ihtiyacı hissederiz, mesela yapay zeka ve büyük veri uygulamalarında yüksek kapasiteli sanal sunucuların gücünden faydalanmak isteriz. Bunu yapmanın pratik bir yolu uzak sunucuya Jupyter Notebook sunucusu kurup lokal bilgisayarınızdan buna bağlanmaktır. Bu yazımda bunun nasıl yapılabileceğini açıklayacağım, bunun birden fazla yolu var fakat açıklayacağım yöntem bana göre en pratik yöntemdir. Uzaktaki sunucunun bir linux işletim sistemine sahip olduğunu ve 80 numaralı HTTP portunun açık olduğunu varsayıyorum, ben Ubuntu 20.04 ile uyguladım. Yöntem kabaca şu adımlardan oluşuyor: Uzak sunucuda gerekli paketlerin yüklenmesi, DDNS kurulumu, Jupyter Notebook kurulumu ve ayarlarının yapılması, systemd aracılığıyla kurulan uygulamaların sistem başlangıcında otomatik olarak başlamasının sağlanması.
Ön Hazırlık
Öncelikle uzak sunucuda bize gerekli paketlerin yüklenmesi gerekiyor, sudo apt-get upgrade
ile paket listenizi güncelleyip sonrasında sudo apt-get install gcc
yazarak gcc
paketini yükleyin. Daha sonra benzer şekilde make
ve python3-venv
paketlerini yükleyin.
DDNS Ayarları
Bu aşamada öncelikle noip sitesini ziyaret edip ücretsiz bir hesap açın ve bir alan adı oluşturun (bu siteye erişmek için VPN kullanmak gerekebilir). Daha sonra da şu sayfadaki adımları takip ederek Noip DUC yazılımını kurun. Bu yazılım uzak sunucunuzun ip adresi değiştiğinde gerekli güncellemeyi noip servisine bildirecek. Bu yazılımın sistem açılışında otomatik olarak çalışmaya başlamasını sağlamak için bir systemd servisi oluşturalım. Bunun için aşağıdaki kodları /etc/systemd/system/noip2.service
olarak kaydedin. Bundan sonra sudo systemctl daemon-reload
komutunu, sonrasında da sırasıyla sudo systemctl start noip2
ve sudo systemctl enable noip2
komutlarını çalıştırın. Servisin durumunu sudo systemctl status noip2
komutu ile ekrana yazdırabilirsiniz.
[Unit]
Description=Noip Dynamic Update Client
After=network.target
After=syslog.target
[Service]
ExecStart=/usr/local/bin/noip2
Restart=always
Type=forking
[Install]
WantedBy=multi-user.target
Alias=noip.service
Jupyter Server Kurulumu
Bunun için uzak sunucuda bir jpserver
klasörü oluşturun, bunun içine girip python3 -m venv env
ile bir sanal ortam oluşturun. Bu klasörde bir de ayrıca notebooks
klasörü oluşturun, çalışma klasörünüz bu olacak. Sonra source env/bin/activate
ile sanal ortamı aktif hale getirin. Daha sonra pip install --upgrade pip
ile pip
paketini güncelleyin, sonrasında pip install jupyterlab
komutu ile jupyterlab
paketini yükleyin.
Jupyter Ayarlarının Yapılması
Bu aşamada Jupyter paketini uzak bağlantılara servie yapabilmesi için gerekli şekilde ayarlayacağız. Önce jupyter notebook --generate-config
komutuyla bir config
dosyası oluşturun, bu dosyanın yeri ekranda yazılacaktır. Daha sonra jupyter notebook password
komutunu girerek bir şifre oluşturun, parola hash verisinin saklandığı dosyanın yeri ekranda yazılacaktır. Bu dosyaya girip bu hash verisini kopyalayın. Sonra da az önce oluşturduğunuz config
dosyasını düzenlemek için açın, aşağıdaki kodları ekleyin. Az önce kopyaladığınız hash verisini de kullanacaksınız.
c.NotebookApp.ip = '*'
c.NotebookApp.port = 80
c.NotebookApp.allow_root = True
c.NotebookApp.open_browser = False
c.NotebookApp.password = "şifre hash"
Şimdi Jupyter servisinin sistem başlangıcında arka planda otomatik olarak başlamasını sağlayacağız, bunun için yine systemd servisi oluşturmalıyız. Aşağıdakileri /etc/systemd/system/jupyterlab.service
olarak kaydedin, farklı klasör ve kullanıcı isimleri için düzenleme yapmak durumunda olabilirsiniz.
[Unit]
Description=Jupyter Lab Server
[Service]
Type=simple
WorkingDirectory=/home/ubuntu/jpserver/notebooks/
ExecStart=/home/ubuntu/jpserver/env/bin/jupyter-lab --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py
StandardOutput=null
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Sonra sudo systemctl daemon-reload
komutunu, sonrasında da sırasıyla sudo systemctl start jupyterlab
ve sudo systemctl enable jupyterlab
komutlarını çalıştırın. Bu servisin anlık durumunu sudo systemctl status jupyterlab
komutu ile görüntüleyebilirsiniz.
Test
Şimdi uzak sunucunuzu kapatıp açın ve DDNS adımında seçtiğiniz alan adını ziyaret edin, bi aksilik olmazsa Jupyter Lab uygulaması çalışması ve sizden şifre istemesi gerekiyor. Ben burada anlattıklarımı AWS'de bir EC2 sanal sunucusunda uyguladım, aşağıdaki videoda izleyebilirsiniz.
E-Kitaplar ve Bir EPUB Dosyasının Anatomisi
Docker Nedir ve Nasıl Kullanılır?