要在 Debian 上面安裝,標準官方的 nginx 加上 https://github.com/wandenberg/nginx-push-stream-module 模組
做個筆記,這裡的 nginx 並不是 Debian 官方的 deb,是由 nginx 官方釋出的 deb
裝 官方 nginx ,加個 sources.list 先
# nginx
# wget http://nginx.org/keys/nginx_signing.key
# sudo apt-key add nginx_signing.key
#
deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx
#裝 build depend package
apt-get build-dep nginx
#下載 source
apt-get source nginx
#git clone nginx module ,照官方文件設定環境
git clone https://github.com/wandenberg/nginx-push-stream-module
NGINX_PUSH_STREAM_MODULE_PATH=$PWD/nginx-push-stream-module
# 這時候資料夾,應該有 nginx-1.4.2 的資料夾,看現在新的套件版本
cd nginx-1.4.2
# 編輯一下 vim debian/rules
override_dh_auto_build:
dh_auto_build
mv objs/nginx objs/nginx.debug
./configure <br />–prefix=/etc/nginx <br />–sbin-path=/usr/sbin/nginx <br />–conf-path=/etc/nginx/nginx.conf <br />–error-log-path=/var/log/nginx/error.log <br />–http-log-path=/var/log/nginx/access.log <br />–pid-path=/var/run/nginx.pid <br />–lock-path=/var/run/nginx.lock <br />–http-client-body-temp-path=/var/cache/nginx/client_temp <br />–http-proxy-temp-path=/var/cache/nginx/proxy_temp <br />–http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp <br />–http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp <br />–http-scgi-temp-path=/var/cache/nginx/scgi_temp <br />–user=nginx <br />–group=nginx <br />–with-http_ssl_module <br />–with-http_realip_module <br />–with-http_addition_module <br />–with-http_sub_module <br />–with-http_dav_module <br />–with-http_flv_module <br />–with-http_mp4_module <br />–with-http_gunzip_module <br />–with-http_gzip_static_module <br />–with-http_random_index_module <br />–with-http_secure_link_module <br />–with-http_stub_status_module <br />–with-mail <br />–with-mail_ssl_module <br />–with-file-aio <br />$(WITH_SPDY) <br />–with-cc-opt="$(CFLAGS)" <br />–with-ld-opt="$(LDFLAGS)" <br />–add-module=../nginx-push-stream-module \ # 就加這一行而已
–with-ipv6
dh_auto_build
#執行
dpkg-buildpackage -b
這樣就包好,可以安裝測試了,不想要更新的話,就把他版本 hold 住
最近試了, socket.io 及 sockjs 還是都沒有讓人覺得很滿意
看看國外 disqus 推荐的 https://github.com/wandenberg/nginx-push-stream-module
還蠻簡單用的,而且複雜性低,不用多加掛一個 socket server ,就交給 nginx 負責 pub 及 sub 的部份,架構算乾淨,自己的下一個玩具,就用他了
Posts for: #Nginx
spdy with nginx
這是一個加強版的協定,一開始由 Google 提出 https://zh.wikipedia.org/wiki/SPDY
用 Apache 的朋友可以參考 https://code.google.com/p/mod-spdy/
以下筆記,是以 Debian 用 nginx 官方的 deb 套件由為底的紀錄
nginx 官方的套件 http://wiki.nginx.org/Install
Debian 用 wheezy, source.list 可以加
deb http://nginx.org/packages/debian/ wheezy nginx
deb-src http://nginx.org/packages/debian/ wheezy nginx
再來就是您的 nginx site 的設定了,下面是要加的部份,
也只有 listen 443 ssl spdy 那一行
server {
listen 443 ssl spdy;
#listen 443;
server_name yourcoolhostname;
…
…
…
}
最後可以開 chrome 瀏覽器檢查連到網站的有沒有 SPDY 的連結
在瀏覽器的網址列打 chrome://net-internals/#spdy 就可以看到了
或是可以用 http://spdycheck.org/ 來檢查
目前 nginx 的 spdy 模組,只支援 spdy/2
uWSGI
http://projects.unbit.it/uwsgi/wiki 是完全用 C 來實做的 wsgi server ,wsgi 就是目前 Python web 配置方式中最為通用的方式
現在 nignx 預設已經有支援了
我覺得最棒的是,哈哈看看安裝方式 http://projects.unbit.it/uwsgi/wiki/Install, 喔耶
pip install uwsgi
# OR
pip install http://projects.unbit.it/downloads/uwsgi-lts.tar.gz
你說,有沒有想按個讚壓,以後就不能說, uWSGI deploy 麻煩,綠角馬 ( gunicorn) 比較方便了
試試看才知道真實力, session 搬到,記憶體,或是 cache 後, C10K 應該可以輕鬆一些
PS 給新手,老手可跳過: 鄉親壓,當然還是要設定檔地,請參考 http://projects.unbit.it/uwsgi/wiki/Exampl ,記得可以搭配 daemontools ,或是 Upstart 一起服用喔 ,千萬不要天真又善良的由 source 安裝喔,各大 Linux distribution 都有販售
nginx don’t gzip
找了很久,也看了一些文件
http://serverfault.com/questions/84400/nginx-ubuntu-9-10-gzip-not-functioning
http://wiki.nginx.org/NginxHttpGzipModule
最後答案很簡單,也許不是真正的答案,只是一個 fix
會造成一直沒有 gzip 的原因,很有可能是,我用來接 backend fastcgi 的時候 Accept-Encoding 的資訊掉了,nginx 跟前端是用 http version 1.1 跟 backend 是用 http version 1.0
不管如何,也許是bug 或是設定的錯誤,目前把 nginx.conf 裡 gzip 的設定加上
gzip_http_version 1.0;
就可以了,先撐著吧
Django with nginx
聽說效能比較好,聽說安全性不錯,聽說記憶體用很少
聽別人說不準,還是自己試試才知道
所以單純只是試試試看,跑起來如何,自己寫個筆記
我的nginx上, server 設定,Django fastcgi 的部份照舊 ,如果跟我一樣是用 unix socket 來連的話,權限要可以讓 nginx 寫入
limit_zone one $binary_remote_addr 10m;
server {
listen 80;
server_name s.localhost.com h.localhost.com;
#server_name home.digez.com stock.digez.com;
access_log /var/log/nginx/access.log;
location /site_media {
alias /home/terry/media/;
}
location /media {
alias /home/terry/django_src/django/contrib/admin/media/;
}
location / {
#fastcgi_pass 127.0.0.1:8080;
fastcgi_pass unix:/home/terry/run/digez.sock;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
limit_conn one 5;
}
}
更新
2010-01-05 設定加入, fastcgi_param REMOTE_ADDR $remote_addr; Django 需要
相關連結
Django
nginx
參考資料
http://wiki.nginx.org/Main
http://stackoverflow.com/questions/605173/how-to-nginx-virtual-servers-fcgi-for-django
http://david-paste.cn/paste/20/
http://stackoverflow.com/questions/605173/how-to-nginx-virtual-servers-fcgi-for-django