スポンサーサイト

上記の広告は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


さくらVPSの設定【supervisordのインストール編】

papixさんのページを参考に、若干パスを修正して設定しました。

http://papix.hateblo.jp/entry/2012/07/04/004357

# yum install python-setuptools
# easy_install -U supervisor




mkdir /etc/supervisord.d //設定ファイル置き場



新規で/etc/supervisord.confファイルを作成する。

vi /etc/supervisord.conf



こちらのページを参照しました。
http://wiki.livedoor.jp/kurt0027/d/supervisord

vi /etc/init.d/supervisord

以下のサイトにありますので、コピッテつかう。
http://www.tomoyan.net/dokuwiki/python/supervisor

chmod +x /etc/init.d/supervisord
/etc/rc.d/init.d/supervisord start
/etc/rc.d/init.d/supervisord status
chkconfig --add supervisord
chkconfig supervisord on
chkconfig --list supervisord

さくらVPSの設定方法【その2:nginxインストール編】

つぎに、nginxの設定をしてみる。

これも、papixさんのページを参照しましたぁー。
http://papix.hateblo.jp/entry/2012/07/04/004357

$ sudo su - // 管理者へ
# yum -y install pcre-devel openssl-devel
# wget http://nginx.org/download/nginx-1.2.1.tar.gz
# tar zxvf ./nginx-1.2.1.tar.gz
# cd ./nginx-1.2.1
# ./configure
# make
# make install



こいつをコピッてきて
http://wiki.nginx.org/RedHatNginxInitScript

これを編集(ここもpapixさんとおなじです)

変更前: nginx="/usr/sbin/nginx"
変更後: nginx="/usr/local/nginx/sbin/nginx"
変更前: NGINX_CONF_FILE="/etc/nginx/nginx.conf"
変更後: NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"


これを, '/etc/init.d/nginx'に保存する。

# chmod +x /etc/init.d/nginx
# /etc/rc.d/init.d/nginx start
# /etc/rc.d/init.d/nginx status
# chkconfig --add nginx
# chkconfig nginx on
# chkconfig --list nginx



起動しないってあせっていたら。時間が必要だっただけでした。
ブラウザからhttp://aaa.bbb.ccc.ddd/であくせす
ブラウザに以下が表示され!やったー。

Welcome to nginx!



やっぱり、オフにしよう。なぜなら、nginxもsupervisord管理にしたいから

# chkconfig nginx off

どうやったらヒットする アイデアが浮かぶのか

新しいWEBサイトを企画を考えた段階でアイデアの良し悪しは判断できない。
実装してみないて判らないことがある。WEBに入ってくるデーターの面白さは作らないと判らないってものだから。

作り方はいろいろあるとは思うが自分が一番やりやすい実装方法がいいとおもう。私の場合、JAVA系はどうも苦手でperlに行き着いた。

アイデアは無からうまれなくて、いろいらな技術(HTML5やらjqueryなど)とサービスを組み合わせて作るためその辺の知識があったにこしたことはない。技術とサービスを組み合わせれたらこんな面白いことができないかと常に考える。

運用ノウハウ(パフォーマンスチューニング、スケールアップ、スケールアウト)うるにはそれなりの人気あるサイトを作らないといけない。

マネタイズできるWEBアプ リケーションをつくりたい

私の勤めてる会社は所謂「人月商売」が売り上げの大半を占めているIT系企業としてはまあ普通といえば普通ですがヤッパリ自社サービスがあった方が良いと思いますが。取り組みがされてるんだかされてないんだか。要するにノウハウがない状態。趣味とはいえWEBサービスを企画、開発、運用するということは自身の成長だけでなく会社にもプラスになるだろう。
ヒットするサービスをつくりたいのは山々であるけどそうたやすくはない。まあとりあえず企画は悪くても。開発、運用フェーズまで経験するということが重要だと思う。失敗すれば失敗ノウハウがたまるわけで。

企画が完璧でなくても、運用を続けて、改善をかさねれば良いものになっていくかもしれないから。まずは公開しちゃうこと運用フェーズまで乗せることが一番大切なことだと思う。この辺は楽天流みたいなとこかな。
プロフィール

鈍足ランナー

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

Learn from AlphaGeeks
Twinani


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

この人とブロともになる

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