スポンサーサイト

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

さくらVPSの設定【nginx+starman+Mojoliciusのアプリを動かすところまで】

さて、私の場合、Mojoliciousを使うのでまずは、Mojoliciousのインストールから・・・

一般ユーザのホームディレクトリへ行って
$ cd
$ cpanm Mojolicious
$ mojo generate app Hello::Web

~/hello_webというフォルダができて、そこに一式アプリが出力されます。

そんでもって、psgiファイル(hello_web.psgi)の準備、こちらも参考にしながら。
/home/nopaste/hello_web/直下に保存してください。
これ、作るのにかなり苦労しました・・・
http://blog.nomadscafe.jp/2012/01/plackmiddlewarereverseproxy.html

use Mojo::Server::PSGI;
use File::Spec;
use File::Basename;
use lib File::Spec->catdir(dirname(__FILE__), 'lib');
use Hello::Web;
use Plack::Builder;
use Plack::Builder::Conditionals;

# 引数で指定も出来る
my $web = Hello::Web->new();
my $server = Mojo::Server::PSGI->new(app => $web);

my $app = sub {
$server->run(@_);
};

builder {
enable match_if addr(['192.168.0.0/24','127.0.0.1']),
"Plack::Middleware::ReverseProxy";
$app;
};



cpanm Starman
cpanm Plack::Middleware::ReverseProxy
cpanm Server::Starter
cpanm Net::Server::SS::PreFork
そのた、いろいろ



こんなんでいいのかな・・・

後nginxの設定

vi /usr/local/nginx/conf/nginx.confファイルに追加の設定。(外だしファイルにしたらうまくいかなかった)

こちらのページを参照して改変


http://havelog.ayumusato.com/develop/javascript/e211-nodejs_build_env.html


upstream app {
server 127.0.0.1:8000;
}

server {
listen 80;
server_name hogehoge.com;
root /home/nopaste/hello_web/public;

location / {

# 実存パスへのリクエストならbreak
if ( -e $request_filename ) {
break;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://app;
}
}



ただ、そのままアクセスするとエラーがでた。

vi /usr/local/nginx/logs/error.log


2012/10/07 04:53:16 [crit] 18806#0: *3 stat() "/home/nopaste/hello_web/public/index.html" failed (13: Permission denied), client: 220.211.131.35, server: www24203ue.sakura.ne.jp, request: "GET /index.html HTTP/1.1", host: "www24203ue.sakura.ne.jp"

/home/nopasteのパーミッションを変更(755)すると出なくなった。

chmod 755 /home/nopaste



さて、これで、webサーバ。webアプリサーバの設定は完了ですが、
最後にsupervisord経由でwebアプリサーバをあげたいので

vi /etc/supervisord.d/hello_web.conf

[program:hello_web]
user=nopaste
command=/home/nopaste/hello_web/run
directory=/home/nopaste/hello_web
redirect_stderr=true
stdout_logfile=/var/log/supervisord/hello_web.log
stdout_logfile_maxbytes = 5MB
stderr_logfile=/var/log/supervisord/hello_web.err
stderr_logfile_maxbytes = 5MB
stdout_logfile_backups = 5
autorestart = true
startsecs = 5



runスクリプトの用意
$which start_server
で、start_serverの位置を調べて・・・

vi ~/hello_web/run



exec /home/nopaste/perl5/perlbrew/perls/perl-5.16.1/bin/start_server --port=8000 --interval=10 -- /home/nopaste/perl5/perlbrew/perls/perl-5.16.1/bin/plackup -s Starman -MFindBin /home/nopaste/hello_web/hello_web.psgi



nginxもsupervisordに乗せたい。
vi /etc/supervisord.d/nginx.conf

[program:nginx]
command=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisord/nginx.log
stdout_logfile_maxbytes = 5MB
stderr_logfile=/var/log/supervisord/nginxweb.err
stderr_logfile_maxbytes = 5MB
stdout_logfile_backups = 5



そして、
vi /usr/local/nginx/conf/nginx.confの先頭に
先頭にdaemon off;を追加するといいようです。(deamonではないよ。間違えないように・・)
以下。間違えた場合の例:(この例、いらないって・・・)

# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nginx: [emerg] unknown directive "deamon" in /usr/local/nginx/conf/nginx.conf:1



TODO:mysqlも乗せたいが、うまくいかなかったのでやめ。。

[program:mysql]
command = /usr/local/bin/pidproxy /var/run/mysql/mysqld.pid /usr/local/bin/mysqld_safe --pid-file=/var/run/mysql/mysqld.pid
user = mysql
redirect_stderr = true
priority = 200
startretries = 10



とりあえず、mysqldをサービス化しておく。(必要かな?)

chkconfig --add mysqld
chkconfig mysqld on
service mysql status



反映は、以下で行うといい。

supervisorctl update


スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

鈍足ランナー

Author:鈍足ランナー
作成アプリ

Learn from AlphaGeeks
Twinani


最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

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