2012年5月6日 星期日

這兩天 system upgrade 碰到有關 xfce 的問題

最近 pacman -Syu 後重開機碰到兩個問題

  1.  xfce 的 panel 位置跑掉,所有的 items 擠在左邊
  2. 點 panel 上的 Action Buttons 只能 logout 不能關機
幸好搜尋一下就找到解法,但是出這種問題實在很讓人灰心,不知道是 Arch Linux 這邊的打包者還是 xfce 自己的問題?
  1. 在 Panel 上新增一個 Separator, 勾選 expand,就可以達到向右靠齊的效果


  2. 在 Action Buttons 上點右鍵,進入 Properties,把預設勾選的「Log out」改成勾選「Log out...」,注意是 "...",這樣才可以選擇要 Shtudown 或是 Logout


Reference:

2012年2月28日 星期二

利用 uWSGI + nginx 搞定 moinmoin 與 bottle.py

之前用 lighttpd 以 FastCGI 方式架 moinmoin wiki,雖然設定上有點麻煩,但還是可以跑,只是最近在同一個 VM 上玩 bottle,雖然試過用 flup 來啟動,但一直沒有成功,連 flup 作者自己都講他討厭 FastCGI

於是就來試試 WSGI 看看,但 lighttpd 對 WSGI 似乎還沒有很完善的支援,乾脆就跳槽到 nginx + uWSGI,試了一下才發現這設定真是簡單到不行,跟當初搞moinmoin 搞到火大的情況完全不同。

不過 Arch Linux 的官方套件庫沒有 uWSGI,必須到 AUR 裡面去找,結果我裝不起來,查資料時意外發現 pypi 裡面有 uWSGI,而且用 virtualenv 裝的起來!只要有裝 gcc 和libxml2,virtualenv 就可以直接編譯 uWSGI 出來用,真是太神奇了!而且 uWSGI 也有支援 virtualenv,只要加上 -H "Venv_dir" 這個選項就能啟用,而 bottle application 也只要在檔案內加上一行


application = bottle.default_app()


就可以跑起來, nginx 設定也很簡單,從官方網站上複製貼上就可以用,moinmoin 的設定更是簡單,只需改一行就OK,只是有些選項搞不太懂意思。

主要由 Running uWSGI behind Nginx 抄來的範例:

# for bottle application
location /bottle {
include uwsgi_params;
uwsgi_param SCRIPT_NAME /bottle;
uwsgi_modifier1 30;
uwsgi_pass localhost:9002;
}


像 SCRIPT_NAME 只有在 wsgiref PEP 333 看到,bottle 開 debug 模式下去看,傳進去的網址跟瀏覽器要求的一樣,只是後端在處理的時候似乎會改變,所以 bottle 會吐錯誤,回報錯誤的網址會改變,不知道能不能設成跟 location 不一樣?

uwsgi_modifier1 就更難找到相關資訊,只知道改另一個數值就跑不起來

目前遇到比較搞不定的是 bottle 原本的 run(reloader=True) 不知道怎麼讓它
重新讀取有修改的檔案,可能要翻一下 bottle 的原始碼看看是怎麼實作的?

Reference: