Etiket: apache

  • Preparing virtual environment for running with apache mod_wsgi & postgresql

    For completing postgresql requirements of virtual environment, install “libpq-dev” and “python-dev” packages, outside of virtual environment.

    $ deactivate (if you are in virtual environment)
    $ sudo apt-get install libpq-dev python-dev

    Re-activate virtual environment and install psycopg2 from pip repo.

    $ pip install psycopg2

    By the way, in the name of  conformist approach install ipython in virtual environment.

    $ pip install ipython

    PostgreSQL engine and python connection libraries are ready.
    Now, lets prepare wsgi file for current project. (I assumed apache and mod_wsgi installed and configured) I’m going to use /var/www/project path for example for environment root in wsgi file.

    ENV_DIR = [‘/var/www/project’]

    import site, os, sys

    base = os.path.dirname(__file__)
    sys.path.insert(0, base)
    sys.path.append(os.path.dirname(base))

    # Remember original path.
    prev_sys_path = list(sys.path)

    # Add each new site-packages directory.

    for directory in ENV_DIR:

    site.addsitedir(directory)

    # For taking new directories to the front reorder path.

    new_sys_path = []
    for item in list(sys.path):

    if item not in prev_sys_path:

    new_sys_path.append(item)
    sys.path.remove(item)

    sys.path[:0] = new_sys_path
    os.environ[‘PYTHON_EGG_CACHE’] = ‘/tmp/project_eggs’
    sys.stdout = sys.stderr
    os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘%s.settings’ % os.path.basename(base)
    from django.core.handlers.wsgi import WSGIHandler
    application = WSGIHandler()

    Place the wsgi file above into root of the django project which created inside of the virtual environment directory (eg. /var/www/project/django/)

    So wsgi file is ready, and we can configure apache to use this wsgi file:

    <VirtualHost *:80>

    WSGIDaemonProcess project_name user=username group=usergroup processes=3 threads=15 inactivity-timeout=120 maximum-requests=50 python-path=/var/www/project/lib/pyton2.7/site-packages
    WSGIProcessGroup project_name
    WSGIApplicationGroup %{GLOBAL}
    WSGIScriptAlias / /var/www/project/django/wsgi
    ServerName project_name.com
    ServerAdmin admin@project_name.com
    CustomLog /var/www/project/django/log/access_log combined
    ErrorLog /var/www/project/django/log/error_log
    Alias /static “/var/www/project/django/static”

    </VirtualHost>

    Save this file under /etc/apace/sites-available as “project.conf”

    Run “$ a2ensite project.conf” command and restart (or reload) the apache service.

    Now you can see the running django installation at “http://www.project_name.com”

  • Apache'ye gönderilen isteklerini başka makineye yönlendirmek (Apache Proxy)

    Son zamanlarda sanal sunucularla haşır neşir olduğumu son iki yazımdan anlamışsınızdır. Tabi çok profesyonel çözümler olmamakla birlikte şirket içinde 4 çekirdekli 8GB bellekli bir sunucunun hiçbir çekirdeğini ve 1mb belleğini heba etmeyecek şekilde hem dışarıya hem içeriye hizmet verebilmesini sağlamak amacıyla çözüm üretme çabası içindeyim. Buna sebep olarak geçen iki yazımdan sonra şimdi de Host makinedeki Apache dışarıya hizmet verirken Guest makinada kurulu olan Apache’nin apayrı veritabanı motoru ile apayrı bir projeyi sunmasını sağlamak gerekliliği doğdu.

    Bunu yapmak için daha önce kurmuş olduğumuz sanal makineye geçen yazımda belirttiğim gibi Host makinedeki herhangi boş bir portu (faraza 2156.port) Guest makinenin 80.portuna yönledirerek işe başlayabiliriz. Daha sonra Guest makineye yayımlanacak olan projemizi yerleştiriyoruz ve Guest lokalinde çalıştığından emin olduktan sonra, Host makinenin http://localhost:2156/ adresinden de yönlendirmenin çalışıp çalışmadığın kontrol edebiliriz. Buraya kadar her şey yolunda ise bundan sonra Host makinemizin Apache ayarlarında yapacağımız değişiklikler ile http://adres:port/ yerine http://proje.falanca.com.tr/ adresi ile herhangi bir yerden sanal makinedeki projemize erişebilir hale geleceğiz.

    (daha&helliip;)

  • Apache'yi DDoS saldırılarından korumak

    Apache’yi kuracağımız bir modül ile DDoS saldırılarından koruyabilirsiniz.

    MOD_DOSEVASIVE(Apache DoS Evasive Maneuvers Module):

    Mod_dosevasive apache için DoS , DDoS ve brute force saldırılarını engellemek için yazılmış bir modüldür.Firewall’ların genellikle etkisiz kaldıkları get,post tipi saldırılarda özellikle yeteneklerini göstermektedir.Böylece sunucunuza aşırı yük binmeden kendini toparlayabilmesini sağlamaktadır.Kolayca firewall, router, ipchain ve iptables ile anlaşabilecek şekilde modülü ayarlayabilirsiniz böylece saldırganların sunucudan firewall seviyesinde ya da router seviyesinde atılmasını sağlayabilirsiniz.Genel olarak yaptığı işi inceleyelim kullanıcı sunucudaki bir siteye devamlı get, post, put gibi istekler gönderiyorsa mod_dosevasive tarafından kara listeye alınıyor sizin belirlediğiniz süre boyunca kara listeye alınan kişi sunucuya istek göndermeye devam edebilir ama alacağı http 403 forbidden(yasak) cevabını alır.Bu istekler devam etse bile sunucunuz yorulmayacaktır.Kendi deneyimlerimi yazının en sonunda paylaşacağım.Eğer firewall yada router ile anlaşabilecek şekilde ayarlarsanız mod_dosevasive yı kara listeye alınan kullanıcı bekletilmeden direk sunucudan uzaklaştırılacaktır.
    (daha&helliip;)

  • Windows’a Webserver Kurulumu (apache + php + mysql)

    Eveeet. Sanırım bu işe yeni başlayaşlayanların en büyük handikapı, “Windows’a nasıl bir webserver kurulur?” sorusu olsa gerek. Aslında bu sorunun cevabı çok basit. Windows’unuza birkaç tıklama ile apache, php, mysql, phpmyadmin kurulumunu gerçekleştirip makinanızı bir webserver haline getirebilirsiniz. Bunun için gavur şöyle bi program hazırlamış : AppServ. Bu paket sayesinde ne IIS (Internet Information Server) ile uğraşmanıza gerek kalıyor, ne de apache, php, mysql, phpmyadmin paketlerini ayrı ayrı indirip, kurup, bir de bunların birbirleri ile entegrasyonuna saatler harcamanıza gerek kalmıyor.  (daha&helliip;)