Expat-IT Tech Bits

Home

Contact

Links

Search this site:

Categories:

/ (287)
  Admin/ (122)
    Apache/ (10)
      HTTPS-SSL/ (4)
      PHP/ (3)
      performance/ (2)
    Cherokee/ (1)
    LAN/ (4)
    LVM/ (6)
    Monitoring/ (2)
      munin/ (2)
    SSH/ (6)
    SSL/ (1)
    Samba/ (1)
    VPN-options/ (6)
      OpenVPN/ (1)
      SSH-Proxy/ (3)
      Tinc/ (1)
      sshuttle/ (1)
    backups/ (17)
      SpiderOak/ (1)
      backuppc/ (5)
      dirvish/ (1)
      misc/ (6)
      rdiff-backup/ (1)
      rsync/ (1)
      unison/ (2)
    commandLine/ (24)
      files/ (8)
      misc/ (10)
      network/ (6)
    crontab/ (1)
    databases/ (15)
      MSSQL/ (2)
      MySQL/ (8)
      Oracle/ (3)
      PostgreSQL/ (1)
    dynamicDNS/ (2)
    email/ (11)
      Dovecot/ (1)
      deliverability/ (1)
      misc/ (1)
      postfix/ (7)
      puppet/ (1)
    iptables/ (3)
    tripwire/ (1)
    virtualization/ (9)
      VMware/ (1)
      virtualBox/ (8)
  Coding/ (14)
    bash/ (1)
    gdb/ (1)
    git/ (3)
    php/ (5)
    python/ (4)
      Django/ (2)
  Education/ (1)
  Hosting/ (27)
    Amazon/ (18)
      EBS/ (3)
      EC2/ (10)
      S3/ (1)
      commandline/ (4)
    Godaddy/ (2)
    NearlyFreeSpeech/ (3)
    Rackspace/ (1)
    vpslink/ (3)
  Linux/ (30)
    Android/ (1)
    Awesome/ (3)
    CPUfreq/ (1)
    China/ (2)
    Debian/ (8)
      APT/ (3)
      WPA/ (1)
    audio/ (1)
    encryption/ (3)
    fonts/ (1)
    misc/ (6)
    remoteDesktop/ (1)
    router-bridge/ (3)
  SW/ (45)
    Micro$soft/ (1)
    browser/ (2)
      Chrome/ (1)
      Firefox/ (1)
    business/ (28)
      Drupal/ (9)
      KnowledgeTree/ (6)
      Redmine/ (2)
      SugarCRM/ (7)
      WebERP/ (2)
      WordPress/ (1)
      eGroupware/ (1)
    chat/ (1)
    email/ (1)
    fileSharing/ (2)
      btsync/ (1)
      mldonkey/ (1)
    graphics/ (2)
    research/ (2)
    website/ (6)
      blog/ (6)
        blosxom/ (3)
        rss2email/ (1)
        webgen/ (1)
  Security/ (15)
    IMchat/ (2)
    circumvention/ (2)
    cryptoCurrency/ (1)
    e-mail/ (4)
    greatFirewall/ (1)
    hacking/ (1)
    password/ (1)
    privacy/ (2)
    skype/ (1)
  Services/ (1)
    fileSharing/ (1)
  TechWriting/ (1)
  xHW/ (14)
    Lenovo/ (1)
    Motorola_A1200/ (2)
    Thinkpad_600e/ (1)
    Thinkpad_a21m/ (3)
    Thinkpad_i1300/ (1)
    Thinkpad_x24/ (1)
    USB_audio/ (1)
    scanner/ (1)
    wirelessCards/ (2)
  xLife/ (17)
    China/ (9)
      Beijing/ (5)
        OpenSource/ (3)
    Expatriation/ (1)
    Vietnam/ (7)

Archives:

  • 2016/07
  • 2016/05
  • 2016/02
  • 2016/01
  • 2015/12
  • 2015/11
  • 2015/06
  • 2015/01
  • 2014/12
  • 2014/11
  • 2014/10
  • 2014/09
  • 2014/07
  • 2014/04
  • 2014/02
  • 2014/01
  • 2013/12
  • 2013/10
  • 2013/08
  • 2013/07
  • 2013/06
  • 2013/05
  • 2013/04
  • 2013/02
  • 2013/01
  • 2012/12
  • 2012/10
  • 2012/09
  • 2012/08
  • 2012/07
  • 2012/06
  • 2012/05
  • 2012/04
  • 2012/03
  • 2012/01
  • 2011/12
  • 2011/11
  • 2011/10
  • 2011/09
  • 2011/08
  • 2011/07
  • 2011/06
  • 2011/05
  • 2011/04
  • 2011/02
  • 2010/12
  • 2010/11
  • 2010/10
  • 2010/09
  • 2010/08
  • 2010/07
  • 2010/06
  • 2010/05
  • 2010/04
  • 2010/03
  • 2010/02
  • 2010/01
  • 2009/12
  • 2009/11
  • 2009/10
  • 2009/09
  • 2009/08
  • 2009/07
  • 2009/06
  • 2009/05
  • 2009/04
  • 2009/03
  • 2009/02
  • 2009/01
  • 2008/12
  • 2008/11
  • 2008/10
  • 2008/09
  • Subscribe XML RSS Feed

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
    PyBlosxom

    This site has no ads. To help with hosting, crypto donations are accepted:
    Bitcoin: 1JErV8ga9UY7wE8Bbf1KYsA5bkdh8n1Bxc
    Zcash: zcLYqtXYFEWHFtEfM6wg5eCV8frxWtZYkT8WyxvevzNC6SBgmqPS3tkg6nBarmzRzWYAurgs4ThkpkD5QgiSwxqoB7xrCxs

    Mon, 21 Apr 2014


    /Coding/python/Django: Configure Django Mezzanine for Production Using WSGI

    This turned out to be a lot harder than I expected, let's see if I can remember all the steps.....

    The first issue is that Mezzanine does an un-Django thing when creating the app with

    mezzanine-project project_name[1]

    by creating just one subdirectory. Because of the "python" way in which WSGI is going to be configured to find the "project_name" app, we need two subdirecties on your server, ie.

    /var/www/project_name/project_name/

    Fix that. All the files are in the lowest sub-directory. Also install the Apache WSGI module, on Debian that would be libapache2-mod-wsgi. And, because Apache is now going to be serving static files outside of Django, also run this

    python manage.py collectstatic

    inside your app, to collect all the js/jpg/css/etc scattered around the file system in your Django modules into /var/www/project_name/project_name/static/. It was my experience that /var/www/project_name/project_name/settings.py is already nicely setup so that various settings like STATIC_ROOT are auto-discovered. No tweaking should be necessary.

    Finally, most of the magic is inside the Apache VirtualHost definition:

    <VirtualHost *:80> DocumentRoot /var/www/project_name/project_name ServerName yourdomain.com # https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/ # http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Delegation_To_Daemon_Process WSGIScriptAlias / /var/www/project_name/project_name/wsgi.py WSGIDaemonProcess yourdomain.com processes=2 threads=15 display-name=%{GROUP} python-path=/var/www/project_name/:/var/www/project_name/project_name/ WSGIProcessGroup yourdomain.com <Directory /var/www/project_name/project_name> <Files wsgi.py> Order deny,allow # if Apache 2.4+ # Require all granted # if Apache older then 2.4 Allow from all </Files> </Directory> # Static files Alias /static/ /var/www/project_name/project_name/static/ Alias /robots.txt /var/www/project_name/project_name/static/robots.txt <Directory /var/www/project_name/project_name/static/> Order deny,allow Allow from all # For Apache 2.4 --> "Require all granted" </Directory> </VirtualHost>

    Note that I am running this site in WSGIDaemonProcess mode, which enables the server to serve multiple such Django sites.

    Once that (both site and admin backend) is working and correctly served by Apache, set DEBUG=False in local_settings.py. I believe I finally changed NOTHING in settings.py nor wsgi.py, and the only things I changed in local_settings.py were DEBUG and the database settings. The only thing difficult / lacking in getting Mezzanine going for the first time, were clear WSGI instructions.

    [1]http://mezzanine.jupo.org/docs/overview.html#installation
    [2]https://docs.djangoproject.com/en/dev/howto/static-files/

    posted at: 21:08 | path: /Coding/python/Django | permanent link to this entry

    Thu, 17 Apr 2014


    /Admin/commandLine/files: Your Primary Group Matters!!!

    This is how one changes a user's default group to "developers" (group must already exist):

    usermod -g developers username

    A common scenario (one would think) is a busy /var/www/ directory edited by multiple people. So, for some directories one might meed BOTH apache and some group of users to have write privileges. Then we naively set up something that looks like this for /var/www/somedir/file.html:

    drwxrwxr-x 5 www-data developers 4.0K Apr 17 03:55 file.html

    For a user to write to this file, it appears to be INSUFFICIENT for said user to be a part of the developers group. The developers group must be his primary group, and then it will work.

    posted at: 04:58 | path: /Admin/commandLine/files | permanent link to this entry