Home » Posts tagged "configuration"

在 nginx 環境中把 Trac 裝到子目錄下的設法

以前的「Nginx + FastCGI + Trac」提到給的範例是把 Trac 裝在 / 下的方法。如果是裝在 /trac 或是其他路徑時就需要修改了。

一開始試著改會出現這樣的錯誤:

No handler matched request to /trac/report/7

然後研究調整後,發現 Trac 純粹是吃 FastCGI 給的參數去判斷要怎麼處理 url routing,在 trac.ini 內 url 相關參數主要還是用在其他地方... (像是信件通知時用的 url)

首先是把檔案簡化,這是 2016 年寫的:

    location / {
        auth_basic "trac realm";
        auth_basic_user_file /srv/domain.example.com/.htpasswd;

        include fastcgi.conf;
        fastcgi_param AUTH_USER $remote_user;
        fastcgi_param HTTPS on;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REMOTE_USER $remote_user;
        fastcgi_param SCRIPT_NAME "";
        fastcgi_pass unix:/var/run/trac/trac.sock;
    }

發現現在 fastcgi.conf 內都會處理 HTTPS 了,所以拿掉 HTTPS 的處理,然後把 location 的判斷改用 regex 去抓 /trac 後的東西,所以先變成這樣:

    location ~ /trac(/.*) {
        auth_basic "trac realm";
        auth_basic_user_file /srv/domain.example.com/.htpasswd;

        include fastcgi.conf;
        fastcgi_param AUTH_USER $remote_user;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REMOTE_USER $remote_user;
        fastcgi_param SCRIPT_NAME "";
        fastcgi_pass unix:/var/run/trac/trac.sock;
    }

最後是把 PATH_INFO 改傳 $1 (在 / 的情境下 $fastcgi_script_name 剛好就會是 routing 用的 PATH_INFO 資訊,所以當時直接拿來用),把 SCRIPT_NAME 改成 /trac

也就是跟 Trac 說基底在 /trac,後面的路徑才是你的 routing engine 要處理的東西,所以變成:

    location ~ /trac(/.*) {
        auth_basic "trac realm";
        auth_basic_user_file /srv/domain.example.com/.htpasswd;

        include fastcgi.conf;
        fastcgi_param AUTH_USER $remote_user;
        fastcgi_param PATH_INFO $1;
        fastcgi_param REMOTE_USER $remote_user;
        fastcgi_param SCRIPT_NAME "/trac";
        fastcgi_pass unix:/var/run/trac/trac.sock;
    }

沒寫下來就會花不少時間重新摸...

AWS OpsWorks 支援 Puppet Enterprise

算是等很久的功能了... AWS 支援的是商業版本的 Puppet Enterprise,掛在 OpsWorks 產品下:「New – AWS OpsWorks for Puppet Enterprise」。

Master server 目前只支援 c4.large、c4.xlarge、c4.2xlarge 三種 instance (如上圖所顯示的),然後這一波支援的 region 只有 us-east-1、us-west-2 以及 eu-west-1,還沒看到亞洲的 region XD

At launch AWS OpsWorks for Puppet Enterprise is available in US East (N. Virginia) Region, US West (Oregon) Region, and EU (Ireland) Region.

計價方式是按照 node 來算,前面的 112,500 node hours 是 $0.017/hour,如果以一個月三十天來算,一個 node 的成本是 $12.24,不算便宜... 不過目前感覺在 AWS 上應該要吃 Packer 來玩,而不是 Puppet... 反正是多給使用者一個選擇就是了,總是有些情境下選擇這個服務是對的方向 (像是考量人的前提...)。

Percona 比較 MySQL 與 MariaDB 預設值的差異

Percona 的人花了些時間整理 MySQL 5.7 與 MariaDB 10.2 在預設值上的差異:「MySQL and MariaDB Default Configuration Differences」。

整體可以感覺到 MariaDB 10.2 相較於 MySQL 5.7 還是頗偏 MyISAM 的設計,可能跟 Monty (Michael Widenius) 的偏好有關吧... 不過技術面上來說,MariaDB 10.2 是基於 5.5 分支出來一路改出來的,當時的 InnoDB 跟現在的版本比起來的確沒那麼強...

不過這畢竟只是預設值,看過留個印象就好...

nginx 打算使用 JavaScript 的方法...

nginx 的創辦人在接受 InfoWorld 訪問時提到了打算使用 JavaScript 做為設定檔的計畫:「The company plans to let you use JavaScript as an application language in its eponymous Web server」。

We're planning JavaScript configurations, using JavaScript in [an] Nginx configuration. We plan to be more efficient on these [configurations], and we plan to develop a flexible application platform. You can use JavaScript snippets inside configurations to allow more flexible handling of requests, to filter responses, to modify responses. Also, eventually, JavaScript can be used as [an] application language for Nginx. Currently we have only Perl and Lua [supported in Nginx]. Perl is our own model, and Lua is a third-party model.

目前的設定檔算是 DSL?還蠻有趣的想法...

Hjson:the Human JSON

前幾天看到「Hjson, the Human JSON」這東西,想要在 JSON 上面提出拓展,讓人更好維護。

有幾個設計是大家已經想很久了。

首先是允許註解:

{
  # specify rate in requests/second
  "rate": 1000
}

再來是允許 ending trailing comma,這點在新的 JavaScript Engine 裡面是允許的,但在 JSON 規格裡是不允許的,對於 copy-paste 時就得很小心有沒有中獎:

{
  one: 1,
  two: 2,
}

另外幾個特點就還好。

object 的 key 沒有特殊情況時可以省略 double quote:

{
  key: "value"
}

甚至 value 是 single line 時也可以省略:

{
  text: look ma, no quotes!
}

而且當沒有 double quote 時不需要處理 escape 問題:

{
  path: c:\windows
  inject: <div class="important"></div>

  # escapes work inside quotes
  escape: "c:\\windows"
}

然後逗點可以省略,給的範例也突顯出對腦袋不直覺的問題 (ambiguous),這邊的 1 是 integer 還是 string?

{
  one: 1
  two: 2
}

多行,用 ''' 應該是借用了 Python 的想法?

{
  haiku:
    '''
    JSON I love you.
    But strangled is my data.
    This, so much better.
    '''
}

規格後面有提到 syntax,可以看到定義。

Hjson 算是一個開始吧,YAML 的設計需要極長的 training 時間才能正確使用,不知道 SaltStack 會不會有人馬上寫 adapter 出來接?(因為 SaltStack 已經可以接 JSON 與 YAML,只要有人把該接的接上去就可以了)

Archives