nginxを使ってみる
業務でも使うので個人的にもやっておかないとなということでとりあえず動かすところまでやってみる
centos5系を使ってるのでそれに合うrpmを持ってくる
rpm -ivh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm
yum install nginx
/etc/init.d/nginx start
とりあえずこれだけでサーバは起動することが出来ました。
簡単!!
で、これだけだとあれなので実際にサーバで動いてるものにリバースプロキシで接続できるようにしてみます。
とりあえず、今動いてるCatalystのサーバのポートへproxyを設定
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
upstream backend_cluster {
server 127.0.0.1:8080;
}
server {
listen 80 default_server;
proxy_set_header X-Forwarded-Port 80;
location /static/ {
root /var/www/tachyon/root;
}
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Forwarded-Host $host;
proxy_redirect http://$host:8080/ /;
proxy_redirect https//$host:8080/ https://$host/;
}
}
}
設定は殆どデフォルト nginxを再起動させてcatalystも起動
perl script/app_server.pl -p 8080
80番ポートへアクセスすると無事catalystサーバで動いてるアプリにアクセスが行くようにできました。
なぜかproxy_pass http://backend_cluster/
だとうまく接続できなかったので直で指定してしまった。。
これは今度詳しく見ないとなー
お次はstarmanを使ってやってみます。
script/app_create.pl PSGI
psgiファイルが出来るのでそれを使ってstart_serverを使ってサーバ起動します。
start_server --port 8080 -- starman --listen :8080 --workers 5 --interval=120 script/app.psgi &
こっちもうまく行った。
今までapacheで開発環境を動かしてたんだけど重いし設定面倒だしで大変だったけどnginxにしたら割とサクサクなのでよかった。 設定もそんなに難しくないようだし良いですね。
ローカルでやってみたのでこんな感じですが、実際に運用で使うならdaemontoolsとか使ったほうがいいのかな。。
とりあえずはこんなもんでしょうかね。。