スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

nginxのupstartを書いてみた

sudo vi /etc/init/nginx.conf
description "nginx"

start on net-device-up and local-filesystems
stop on shutdown

env PROGRAM=/home/uniquevision/opt/nginx/sbin/nginx
env CONFIG=/home/uniquevision/etc/nginx/nginx.conf
env PID=/var/run/nginx.pid

respawn
respawn limit 10 5
pre-start script
$PROGRAM -c $CONFIG -t
if [ $? -ne 0 ]
then exit $?
fi
end script
exec start-stop-daemon --start --make-pidfile --pidfile $PID --exec $PROGRAM -- -g "daemon off;" -c $CONFIG
スポンサーサイト

nginxで静的なトップページを表示する

http://example.com

http://example.com/
にアクセスした時はランディングページに飛ばして、それ以外はアプリケーションで動かすためのnginxの設定です。
「location = /」という記述で、上記の二つを認識できます。
server{
listen 80;
server_name example.com;
root /var/www/app/test;

location / {
proxy_pass http://sinatra;
}
location = / {
root /var/www/test/public;
index index.htm;
}
}

nginxでリバースプロキシーを設定した時にリモートのIPを渡す

この指定をしないとlocalhostからのアクセスのように見えてしまう。
server {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
}

nginxでガラケー用sidのURL書き換え

セッションIDをURLに持たせようとしています。
しかしAuのGPS取得では、こちらが設定するクエリー文字列に使えないという問題があります。
そこでクエリー文字列でなくパスの側に記述するようにしました。

/index/sid/xxxxx

/index?sid=xxxx

nginxのURL書き換えを使います。

rewrite ^(.+)/sid/([^?]+)\?(.*)$ $1?sid=$2&$3 break;
rewrite ^(.+)/sid/([^?]+)$ $1?sid=$2 break;

1行目はクエリー文字列がある場合、2行目が無い場合です。
breakはこれ以上URLの書き換えをしないという指示です。

homebrewを使ってMacにNginxとPHPをインストールする

前回の続き。
nginxとphpをインストールします。

nginxのインストールです。
$brew search nginx
nginx

$brew options nginx
nginx
--with-passenger
Compile with support for Phusion Passenger module
--with-webdav
Compile with support for WebDAV module

オプションは特に必要ないのでそのままインストール
$brew install nginx

設定ファイルを書き換えます。普段はubuntuを使っているのでそれっぽく修正です。
$cd /usr/local/etc/nginx/
$mkdir sites-enabled
$mkdir sites-available
$vi nginx.conf
worker_processes  1;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;
include /usr/local/etc/nginx/sites-enabled/*;
}

$vi sites-available/yii
server {
listen 8080;
server_name localhost;
root /usr/local/var/www;

access_log /usr/local/var/log/nginx/host.access.log;
error_log /usr/local/var/log/nginx/host.error.log warn;

location / {
index index.html index.htm index.php;
}

location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

ln -s sites-available/yii sites-enabled/yii

起動前に設定ファイルのエラーチェック
ちなみに/usr/local/sbinにパスが通ってないと動かないです。
$nginx -t

最後にnginxの起動。
$cp /usr/local/Cellar/nginx/1.0.13/homebrew.mxcl.nginx.plist ~/Library/LaunchAgents/
$launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist

次にPHPのインストール。でも実はbrew本体にないので、別の所からとってきます。
$brew options https://raw.github.com/ampt/homebrew/php/Library/Formula/php.rb
php
--with-mysql
Include MySQL support
--with-pgsql
Include PostgreSQL support
--with-mssql
Include MSSQL-DB support
--with-fpm
Enable building of the fpm SAPI executable
--with-apache
Build shared Apache 2.0 Handler module
--with-intl
Include intl extension
--with-readline
Include readline extension

色々オプションを追加してインストール
$brew install https://raw.github.com/ampt/homebrew/php/Library/Formula/php.rb --with-pgsql --with-fpm --with-readline --with-intl

php.iniを修正
$vi /usr/local/Cellar/php/5.3.10/etc/php.ini
date.timezone = Asia/Tokyo
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = Off
mbstring.substitute_character = none;
extension=mongo.so


MongoDBのドライバーインストール
$pecl install mongo

なんかエラーでたけど気にしない!

起動用のファイル作成
$vi ~/Library/LaunchAgents/php-fpm
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
<plist version='1'>
<dict>
<key>Label</key><string>org.php.php-fpm</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/php-fpm</string>
<string>--fpm-config</string>
<string>/usr/local/Cellar/php/5.3.10/etc/php-fpm.conf</string>
</array>
<key>Debug</key><false/>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><false/>
<key>UserName</key><string>aoyagikouhei</string>
</dict>
</plist>


php-fpmの起動
$launchctl load -w ~/Library/LaunchAgents/php-fpm

確認用のphpを作成します。
$vi /usr/local/var/www/phpinfo.php
<?php phpinfo(); ?>


そして確認
http://localhost:8080/phpinfo.php

ちなみにphp-fpmの再起動はunloadだけではうまくいかないので、unloadの後にプロセスをkillする必要があります。

$launchctl unload -w ~/Library/LaunchAgents/php-fpm
$kill -TERM ....
$launchctl load -w ~/Library/LaunchAgents/php-fpm
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。