24 Eylül 2013 Salı

Django Projesini virtualenv wsgi gunicorn supervisor ve nginx kullanarak VPS server'a Deploy etmek.

Vps server için ben digitalocean  kullanıyorum linkten kaydolursanız banada sakal atıyor.

Django'yu  mod_wsgi ve apache ile deploy edebilirsiniz bunun için ortalıkta bir çok tutorial var hatta türklerin django öğrenmek için başvuracağı kaynak olan mustafa başer  'in yazdığı django kitabındada mod_wsgi + apache anlatılmış fakat en mükkemmel sonucu Green Unicorn (Gunicorn) [wsgi] + Nginx verdiği için ki zaten wsgi 'yi dahil etmesek bile Nginx 'in apacheden daha iyi bir web server olduğuda kanıtlanmış .


Önce size worker'ın ne olduğundan bahsedeyim diyelim ki 1 cpu 'ya sahip bir  VPS 'e sahipsiniz.

1*2+1 = 3 adet worker kullanma hakkınız var. . 2 cpu 'nuz varsada 2*2+1 den 5 worker eder.

Eğer verdiğim linkten 1 aylık 5 dolara vps alırsanız 1 cpu nuz olacak ve 3 worker ile çalışacaksınız.



Yukarıdaki grafikte uwsgi 10 çalışan'la 2500 request işleyebiliyormuş saniyede.

Diğer grafikte 2100 5 workerla neredeyse yarım worker ama sonuç neredeyse eşit .

Bu güç nereden geliyor derseniz cevap : gunicorn

Sistemimizi upgrate ediyoruz.

$ sudo apt-get update
$ sudo apt-get upgrade
 
 

Gerekli şeyleri indirelim.

$ sudo apt-get install vim
$ apt-get install git
 
Vim : Komut listesinde dosya editlemeyi sağlar 4 reslik bir eğitimi var youtube 'Da
 
isteyen 15 dakikasını ayırıp dinleyebilir olmazsa olmazlardan : Vim dersleri 


2. Git : Git Github'ın kullandığı versiyon Kontrol sistemidir.
 
değil odtü, boun falan; harvard ya da stanford mezunu bile olsa, 
eğer ki adam github'dan bihaberse, yazılımcıyım falan dememelidir.

o derece mühimdir. o derece vazgeçilmezdir kanaat-i acizanemce. 

Github ve git hakkında ekşisözlük
 
 

virtualenv

sudo apt-get install python-virtualenv
 
$ cd /opt
$ virtualenv venv 
 
New python executable in venv/bin/python
Installing distribute..............done.
Installing pip.....................done.
 
$cd venv
$. bin/activate 
 
Yakın zamanda udemy'de ücretsiz venv kullanımını anlatan ders yapıp buraya ekleyeceğim.
şimdilik virtualenv hakkında bilgi için şu yazıyı okuyun : Virtualenv nedir ?  
 
virtualenv'i aktif ettik .
 
(venv)$ şeklinde olması gerekiyor komut satırının venv aktif olunca ! 

$ pip install django
$ django-admin.py startproject hello
$ cd hello
$ python manage.py syncdb
 
Gunicorn 
 
 
$ pip install gunicorn
 
sitenizin settings.py 'de
 
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'gunicorn'
)
Eklemeyi unutmayın !
 
  
$ gunicorn_django --bind siteniz.com:8001
 
http://siteniz.com:8001 
 
Yaptığınızda sitenizi başarılı bir şekilde görüntülüyor olacaksınız !
 
Şimdi venvin içindeki bin klasörü içine girelim..
 
vi gunicorn_start  diyerek boş bi sayfa oluşturun ve buraya vim 'de bişiler eklemek 
için i tuşuna basın artık buraya istediğinizi yazabilirsiniz ..


Şimdi gunicorn_starta buradakileri yapıştırın. gunicorn_start rawı

gunicorn_start'ı executable yapalım şu an bin klasöründeyiz..
 
$ chmod u+x gunicorn_start

Gunicorn startı başlatalım..
$. gunicorn_start (arada boşluk olmayada bilir onuda deneyin olmazsa)
 
Şu ekran çıkacak ..

Starting hello_app
2013-06-09 21:14:07 [2792] [INFO] Starting gunicorn 0.17.4
2013-06-09 21:14:07 [2792] [DEBUG] Arbiter booted
2013-06-09 21:14:07 [2792] [INFO] Listening at: unix:/webapps/hello_django/run/gunicorn.sock (2792)
2013-06-09 21:14:07 [2792] [INFO] Using worker: sync
2013-06-09 21:14:07 [2798] [INFO] Booting worker with pid: 2798
2013-06-09 21:14:07 [2799] [INFO] Booting worker with pid: 2799
2013-06-09 21:14:07 [2800] [INFO] Booting worker with pid: 2800 

$ sudo apt-get install python-dev
 
Supervisiord ...
 
$ sudo apt-get install supervisor
  
$ cd /etc/supervisor/conf.d 
 
hello.conf diye bi dosya oluşturalım .
 
$vi hello.conf
 
ve bu raw'ı yapıştırın . hello raw
 
Supervisor ayarları ile ilgili daha fazla bilgi için şuraya bakın bize bu kadarı yeterli.
 
$ mkdir -p /opt/venv/logs/
$ touch /opt/venv/logs/gunicorn_supervisor.log  

Supervisord aktif etme.
$ sudo supervisorctl reread
hello: available
$ sudo supervisorctl update
hello: added process group
 
Supervisord durumlarını kontrol etme durdurma başlatma vs işlemler 
 
$ sudo supervisorctl status hello                       
hello                            RUNNING    pid 18020, uptime 0:00:50
$ sudo supervisorctl stop hello  
hello: stopped
$ sudo supervisorctl start hello                        
hello: started
$ sudo supervisorctl restart hello 
hello: stopped
hello: started 
 

Nginx

$ sudo apt-get install nginx
$ sudo service nginx start
$ cd /etc/nginx/sites-available 
$ vi hello
 
Hello'yada buradakileri kendinize göre değiştirip atıyorsunuz. nginx raw 
 
sites-enabled klasörüne sembolik link vermeniz gerekiyor .
 
$ ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/hello 
 
Nginx'i restart ediyoruz ve sistemimiz hazır. 

$ sudo service nginx restart 
 
 
 
 Yasin Aktimur Twitter 

 
  
 
 


 
 


 
 
 

 


Hiç yorum yok:

Yorum Gönder